Matlab绘图功能Word文档下载推荐.docx
《Matlab绘图功能Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Matlab绘图功能Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。
dottedline虚点连线
-.dash-dotline点划线
常用标记的定义为:
+plussign十字标记
ocircle小圈标记
*asterisk星号标记
.point黑点标记
xcross叉号标记
ssquare方框标记
ddiamond菱形标记
^upwardpointingtriangle上三角标记
vdownwardpointingtriangle下三角标记
>
rightpointingtriangle右三角标记
<
leftpointingtriangle左三角标记
pfive-pointedstar(pentagram)五角星标记
hsix-pointedstar(hexagram)六角星标记
颜色的定义是:
rred红
ggreen绿
bblue蓝
ccyan兰绿色
mmagenta洋红
yyellow黄
kblack黑
wwhite白
另外,利用线型属性和标记属性可以随心所欲地设计作图图式。
LineWidth定义线的宽度,默认为1
MarkerEdgeColor定义标记的边缘颜色
MarkerFaceColor定义标记面的颜色
MarkerSize定义标记记号的大小
举例1:
t=0:
pi/20:
plot(t,sin(t),'
-.r*'
%用红色点划线和星号作图
holdon;
%保持当前图形不被擦除
plot(sin(t-pi/2),'
--bp'
%用蓝色虚线和五角星标记作图
plot(sin(t-pi),'
ks'
%用黑色虚点线和方框标记作图
holdoff;
结果如图5.2所示(黑白印刷时颜色表现不出来)。
图5.2二维绘图线型和标记的特征控制
(1)
举例2:
plot(t,sin(2*t),'
-mo'
…%线型:
实线,洋红色,小圆标记
'
LineWidth'
2,…%线宽为2
MarkerEdgeColor'
'
k'
…%标记边缘颜色:
黑色
MarkerFaceColor'
[.491.63],…%标记面颜色:
淡绿
MarkerSize'
12);
%标记大小:
12
结果如图5.3所示。
图5.3二维绘图线型和标记的特征控制
(2)
5.1.3图形的标注
图形的标注可以用text函数。
其用法是:
text(x,y,'
字符串'
text(...'
PropertyName'
PropertyValue...);
其中,'
为字符属性名称,PropertyValue为相应的属性取值。
字符串中若有特殊符号,如希腊字母、箭头等,需要采用LaTeX格式表示。
用doctext_props可以得到详细的用法手册。
对于常用的一些,举例如下:
●改变字符大小。
属性为'
FontSize'
,取值为:
101216…
●改变字符字体。
FontName'
'
Courier'
,'
宋体'
黑体'
…
●改变字体背景颜色。
BackgroundColor'
[R,G,B]和'
r'
b'
w'
(红,蓝,黑,白)等,参见手册docColorSpec。
命令xlabel,ylabel,title等也可用类似方法修改字体属性。
详见帮助文档。
修改上例为:
plot(X,Y,'
--r'
%用红色虚线作图
14);
%Y轴标注,设置了字号
%X轴标注,设置了字号
%图标题,设置了字号
...%...为续行号
'
18,...%字号为18号
%背景为白,字符部分将盖住网格线,使字符更清晰
[0.80.80.8]);
%'
[0.70.70.7]使得背景为灰色
结果如图5.4所示。
图5.4修改作图字体属性,线型属性
5.1.4坐标轴的控制方法
Matlab中对作图坐标轴的设置十分灵活,功能十分强大。
用命令docaxes可以获得完整的帮助文档。
与坐标轴设置相关的命令有:
axis,get,set,gca等等。
下面对常用的坐标轴设置作简要介绍。
(1)作图坐标范围设置(axis命令)
axis([xminxmaxyminymax])%用于设置x,y坐标作图范围
axisoff%用于不显示坐标
axison%用于显示坐标(默认)
(2)网格的控制(grid命令等)
gridon%用于显示网格
gridoff%用于不显示网格
set(gca,'
XGrid'
on'
)%用于只显示X方向网格
YGrid'
)%用于只显示Y方向网格
GridLineStyle'
)%用于设置网格的线型,具体如下:
-'
表示实线;
--'
表示虚线;
表示虚点线(默认);
-.'
表示点划线
(3)坐标轴线型的控制
2)%控制坐标轴线宽度为2(默认为1)
(4)坐标形式的控制
box'
)%用于显示封闭形式的坐标(默认)
off'
)%用于显示开放形式的坐标
(5)坐标刻度方向控制
TickDir'
in'
)%坐标刻度朝内(默认)
out'
)%坐标刻度朝外
(6)坐标颜色控制
Color'
y'
)%坐标面背景颜色设置,本例为:
黄
XColor'
)%设置横坐标轴,刻度,字符的颜色
YColor'
)%设置纵坐标轴,刻度,字符的颜色
(7)坐标刻度字形的控制
14)%控制字体大小
FontWeight'
bold'
)%设置字体粗细,有{normal}|bold|light|demi四种
(8)坐标位置和方向控制
XAxisLocation'
top'
)%横坐标轴位于下方(bottom默认)或上方(top)
YAxisLocation'
right'
)%纵坐标轴位于左方(left默认)或右方(right)
XDir'
reverse'
)%横坐标反方向(由右到左为增)
YDir'
)%纵坐标反方向(由右到左为增)
(9)坐标刻度线性/对数标度的设置
XScale'
log'
)%横坐标轴位作对数标度
YScale'
)%纵坐标轴位作对数标度
%默认为线性标度'
linear'
。
%用semilogx()或semilogy(),loglog(),plot()可直接得到对数标度的作图。
(10)坐标刻度数的控制
XTick'
[])%横坐标不标度
[051629])%在横坐标值为0,5,16,29处标度
[20:
10:
100])%标度从20开始,间隔10标度,直到100
YTick'
[])%对纵坐标的标度设置,同上
[0:
5:
20])
XTickLabel'
{'
One'
;
Two'
Three'
Four'
})
%将开始的4个刻度依次标记为字符One,Two,Three,Four
%然后循环利用这4个标记将其余刻度全部标完。
YTickLabel'
%同上,对纵坐标作标记。
JohnG.Proakis著《数字通信》图5.2-4为二元信号的误码概率曲线。
复制如图5.5所示。
其中,两条曲线的计算公式为:
和
函数的定义是:
现在要求用Matlab生成该图,尽可能做到与原图接近。
作图分析:
观察图5.5,在作图时至少需要:
●曲线使用宽度为2的粗实线,颜色为黑;
●手工确定作图坐标范围并手工作出坐标刻度;
●进行标注,注意标注中需要写入公式等特殊字符,需用LaTeX格式;
●网格线需要设定为细实线;
●横坐标表示每比特SNR,用分贝表示,纵坐标是对数刻度的。
图5.5从《数字通信》图5.2-4复制的原图
作图程序如下:
Q=inline('
0.5.*erfc(x./sqrt
(2))'
%Q函数定义
gama_b_dB=0:
0.5:
14;
%横坐标范围(分贝)
gama_b=10.^(gama_b_dB./10);
%横坐标范围
Pb1=Q(sqrt(gama_b));
%曲线1计算
Pb2=Q(sqrt(2*gama_b));
%曲线2计算
plot(gama_b_dB,Pb1,'
-k'
gama_b_dB,Pb2,'
2);
%作图,线型为黑实线,宽度2像素
%纵坐标轴位作对数标度
axis([01410e-710e-1]);
%手工设置作图范围
SNRperbit,\gamma_b(dB)'
%横轴标注,并设定标注字号
Probabilityoferror,P_b'
%纵轴标注,并设定标注字号
%用于设置网格的线型为实线
%开启网格线
MinorGridLineStyle'
none'
%将对数分格的虚线去掉
2:
14]);
%在横坐标值为0,2,4...处标度
%下面是在图中写字
text(2.2,5e-3,'
\rho_r=-1'
...
12,...
text(2,2e-3,'
Antipodal'
text(2,1e-3,'
signals'
text(2,0.4e-3,'
P_b=Q(\surd2\gamma_b)'
text(10,2e-2,'
\rho_r=0'
text(10,9e-3,'
Orthogonal'
text(10,4e-3,'
text(10,1.5e-3,'
P_b=Q(\surd\gamma_b)'
结果如图5.6所示。
图5.6用Matlab作出的曲线图,对比图5.5
连续信号及其采样后的离散信号的表示。
任务:
以取样函数
为例,作出该函数在
内的波形图像。
f=inline('
sin(x)./x'
%定义波形函数
x=-10:
0.1:
10;
%x的计算范围,步进0.1
y=f(x+1e-16);
%计算波形,为避免0/0,x加一微小值
plot(x,y,'
--k'
%用黑色虚线作图(到此看一看作图结果)
axis([-1010-0.31.1]);
%到此作图坐标有何变化?
%保持前图
boxoff;
%坐标盒子打开(看一看坐标有何变化?
)
sample_time=-10:
1:
%设定离散信号的取样间隔为1
y_sample=f(sample_time+1e-16);
%计算离散信号样值
h=stem(sample_time,y_sample,'
fill'
%stem的用法与plot相同,专门用于画离散信号的火柴杆图
%stem的用法详见docstem帮助
结果如图5.7所示。
图5.7连续信号与离散信号在同一图中作出,注意boxoff的坐标形式
此外,我们还可以进一步对坐标轴标度进行手工设定。
例如将横坐标标度的字符进行任意设置,接上例,如果继续执行以下两句指令:
[-10:
2.5:
0,4:
4:
10]);
%设定标度位置
-10Ts'
-7.5Ts'
-5Ts'
-2.5Ts'
0'
4Ts'
8Ts'
});
%设定标度的符号
%设定坐标标注字号
则获得的结果如图5.8所示。
图5.8连续信号与离散信号在同一图中作出,对坐标标度进行了修改
举例3:
其他常用的特殊二维图形的绘制。
利用bar可以作出二维条形图,stairs可以作二维阶梯图。
其用法与plot类似。
1/pi:
stairs(t,sin(t),'
%阶梯图,注意与plot()所得图的区别
%阶梯图常用来表现取样后零阶保持器的输出波形
bar(t,0.5*sin(t),'
m'
%条形图,注意正弦波幅度减小了
axis([02*pi-1.11.1]);
%坐标范围
则获得的结果如图5.9所示。
图5.9正弦波的plot,stairs,bar作图表达的比较
5.1.5用极坐标作图
利用极坐标作图命令polar可以绘制极坐标表达的函数曲线。
例如绘制方程
和方程
:
theta=0:
10*pi;
r=0.001*theta.^2;
polar(theta,r);
%作极坐标曲线1并保持
0.01:
polar(t,sin(2*t).*cos(2*t),'
%作极坐标曲线2
得到极坐标图如图5.11所示。
图5.11用命令polar进行极坐标作图
5.2三维图形的绘制
5.2.1三维曲线的绘制
用命令plot3可以进行三维空间曲线的绘制。
plot3的常用格式是:
plot3(X1,Y1,Z1,...)plot3(...,'
PropertyValue,...)
详细用法参见docplot3显示的帮助文档。
举例如下,绘制三维曲线:
15*pi;
x=(10*pi-t).*sin(t);
y=(10*pi-t).*cos(t);
z=t;
plot3(x,y,z,'
3);
%作图,设定线型
%看一看,曲线像不像沙发的弹簧?
程序运行结果如图5.12所示。
图5.12三维曲线作图实例
采用命令stem3(x,y,z)可以作出三维火柴杆图。
例如:
stem3(x,y,z);
运行结果为图5.13所示。
图5.13用stem3进行的三维曲线作图实例
5.2.2三维曲面的绘制
Matlab绘制三维曲面的命令有:
(1)mesh(x,y,z)——绘制三维表面网格。
(2)surf(x,y,z)——绘制三维表面图。
这些命令的详细用法请参考帮助文档。
下面举例加以说明。
考虑绘制一个二元函数
为:
其中,绘制范围为
,
首先用meshgrid函数产生一个
的网格矩阵,即产生一个
轴坐标起始于-3,终止于3,步进为1的;
坐标起始于-2,终止于2,步进为1的网格分割。
其命令是:
[x,y]=meshgrid(-3:
3,-2:
2)
x=
-3-2-10123
y=
-2-2-2-2-2-2-2
-1-1-1-1-1-1-1
0000000
1111111
2222222
然后将得到的
代入
中计算出
即
z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y)
z=
0.00000.00000.00270-0.049800.0027
0.00000.00730.14940-0.367900.0027
0.00190.14651.10360-0.367900.0004
0.01370.39831.10360-0.049800.0000
0.01370.14650.14940-0.000900.0000
最后用
mesh(x,y,z);
作出三维表面网格图。
得到结果如图5.14所示。
图5.14用mesh进行的三维表面网格作图实例
为了使得作图更加精细,可以减小生成
网格的步进,当然,这是以增加计算量和内存需求为代价的。
[x,y]=meshgrid(-3:
2);
z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);
则得到更精细的结果,如图5.15所示。
图5.15更加精细的三维网格作图实例
利用命令
hiddenoff
可以使得网格“透明”,如图5.16所示。
图5.16显示隐含线的网格图
采用surf(x,y,z)代替mesh(x,y,z)后,则可以绘制出三维表面图形。
如图5.17所示。
图5.17三维表面图
如果使用指令meshc、meshz代替mesh指令,即
figure
(1);
meshc(x,y,z);
figure
(2);
meshz(x,y,z);
则分别作出带等高线图的以及给出零基准平面的三维网格图。
如图5.18所示。
图5.18(a)命令meshc带等高线的三维图(b)命令meshz给出零基准平面的三维图
如果使用指令surfc、surfl代替surf指令,则分别作出带等高线的三维表面图以及具有光照效果的三维表面图。
如图5.19所示。
z=(x.^