matlab程序设计第3章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y1
1 1 ex
第三章 MATLAB图形系统
可分别求出−5~5之间的值,在同一张图上画出曲线,并 利用legend函数对曲线进行说明,MATLAB程序为
x=[-5:.1:5]; y1=1./(1+exp(-x)); y2=(1-exp(-x)).*y1; figure(1) plot(x,y1,'r-',x,y2,'b.'),grid on legend('logsig函数', 'tansig函数', 4) title('多条曲线')
利用legend函数可对图中的曲线进行说明。例如,在同一 张图上可得到y=x2和y=x3曲线,然后利用legend函数对曲线进行 标注。MATLAB程序为
x=−2:.1:2; y1=x.^2; y2=x.^3; figure(1) plot(x,y1, 'r-', x, y2, 'k.'), grid on legend('\ity=x^2', '\ity=x^3') title('y=x^2和y=x^3曲线') xlabel('x'), ylabel('y')
第三章 MATLAB图形系统 图3.1 正弦曲线
.
第三章 MATLAB图形系统
执行后得到如图3.2所示的三角函数曲线。
图 3 2
常 用 三 角 函 数 的 曲 线
第三章 MATLAB图形系统
3.2 图 形 标 注
绘制图形后,还要给图形进行标注。例如,可以给每个图 加上标题、坐标轴标记和曲线说明等。给图3.1加上标题和轴标 记,可输入
第三章 MATLAB图形系统
执行后可得到如图3.12所示的结果。图中左边轴为第一条 曲线的垂直轴,右边轴为第二条曲线的垂直轴,从图中可以看 出,虽然y1和y2具有不同的值域,但由于采用了双y轴,因此 两条曲线在显示上具有相同的幅值。
第三章 MATLAB图形系统 图3.12 双y轴正余弦曲线
第三章 MATLAB图形系统
第三章 MATLAB图形系统
执行后得到如图3.4所示的曲线。从这一示例可以看出, MATLAB标注函数中可以采用中文字符,这极大地方便了用 户。特别值得一提的是,在字符串中,“^”表示上标,“_”表 示下标。
第三章 MATLAB图形系统 图3.4 插图说明使用示例
第三章 MATLAB图形系统
利用text函数也可以对曲线进行标注。例如,在同一张图 上绘制出正弦和余弦曲线,则MATLAB程序为
第三章 MATLAB图形系统 图3.10 logsig和tansig函数曲线
第三章 MATLAB图形系统
绘制多条曲线的第三种方法是利用hold on命令。先在图 形窗口中绘制出第一条曲线,然后执行hold on(保持原有图像 元素)命令,最后绘制出第二条、第三条等曲线。例如,对于 图3.10中的曲线,也可以采用下列的MATLAB程序获得:
第三章 MATLAB图形系统
我们还可以将图形窗口进行分割,从而绘制出多条曲线。 例如,将图形窗口分割成2×2的窗格,在每个窗格中分别绘制 出正弦、余弦、正切、余切函数曲线,其MATLAB程序为
x=0:pi/50:2*pi;
k=[1 26 51 76 101];
x(k)=[];
%删除正切和余切的奇异点
第三章 MATLAB图形系统 图3.11 正弦曲线
第三章 MATLAB图形系统
利用plotyy函数可绘制出双y轴的图形,这样在同一张图上 表示两条曲线时,可拥有各自的y轴。例如,在同一张纸上绘 制出双y轴的y1=sin(t)和y2=2cos(t)函数,MATLAB程序为
t = -pi:pi/20:pi; y1 = sin(t); y2 = 2*cos(t); plotyy(t,y1,t,y2), grid on title(' sin(t) and cos(t) ') text(0,0,'\leftarrow sin(t)') text(pi/2,0,'\leftarrow 2cos(t)')
第三章 MATLAB图形系统 图3.5 文本标注使用示例
第三章 MATLAB图形系统
3.3 对数和极坐标系中图形绘制
有时变量变化范围很大,如x轴从0.01到100,这时如果仍 采用plot绘图,就会失去局部可视性,因此应采用对数坐标系 进行绘图。例如,求0.01~100之间的常用对数(以10为底的对 数),MATLAB程序为
figure(1) plot(x,y1,'r-') hold on plot(x,y2,'b--') grid on
第三章 MATLAB图形系统 利用这种方法在绘制曲线后,可同时在数据点上以特殊记 号进行标注。例如,在绘制出简单的正弦函数后,可以用圆圈 表示各个数据点,程序如下: x=0:pi/20:2*pi; y=sin(x); figure(1) plot(x,y,'r-') hold on plot(x,y,'bo'), grid on title('sin(\alpha)') xlabel('\alpha'),ylabel('sin(\alpha)')
第三章 MATLAB图形系统
第三章 MATLAB图形系统
3.1 图形绘制 3.2 图形标注 3.3 对数和极坐标系中图形绘制 3.4 复杂图形绘制 3.5 坐标轴控制 3.6 颜色控制 3.7 高级绘图函数 3.8 图形函数 习题
第三章 MATLAB图形系统
3.1 图 形 绘 制
这里以产生一个简单的正弦函数曲线为例来说明图形的 绘制,这一过程在MATLAB中是很简单的。设要产生0~2π之 间的正弦函数,则可按下列步骤进行:
第三章 MATLAB图形系统
对于任一矩阵,通过eig函数可求出其特征值,从而了解矩 阵的特性,为此希望能够直观地显示出特征值。由于特征值一 般为复数,因此可利用polar函数在极坐标系中进行表示。例如, 输入:
第三章 MATLAB图形系统
a=randn(2,2); b=eig(a) c1=abs(b), c2=angle(b) figure(1) subplot(2,1,1) plot(b,'rx'), grid on title('Plot using Cartesian coordinates') subplot(2,1,2) polar(c2,c1,'rx') gtext('Plot using polar coordinates')
title('sin(\alpha)') xlabel('\alpha') ylabel('sin(\alpha)') 则可以得到如图3.3所示的结果。这里\alpha表示α,取自于 Tex字符集,详见附录A的text函数中的字符集。
第三章 MATLAB图形系统 图3.3 含标题的正弦曲线
第三章 MATLAB图形系统
(1) 产生x轴、y轴数据 >> x=0:pi/20:2*pi; >> y=sin(x); (2) 打开一个新的图形窗口 >> figure(1)
第三章 MATLAB图形系统
(3) 绘制出正弦曲线 >> plot(x,y, 'r-') 其中 'r−' 表示以红色实线绘制出正弦曲线。 (4) 给图形加上栅格线: >> grid on 这样就可以得到如图3.1所示的正弦曲线。从这一过程可 以看出,在MATLAB中建立曲线图形是很方便的。
z=peaks(x,y);
%计算相应的峰值函数
然后利用plot函数可直接绘制出这41条曲线
x1=x(1,:);
plot(x1, z), grid on
这时可得到如图3.9所示的多条曲线。
第三章 MATLAB图形系统 图3.9 多峰函数的多条曲线
第三章 MATLAB图形系统
绘制多条曲线的第二种方法是在同一个plot函数中分别指 定每条曲线的坐标轴数据,即采用plot(x1, y1, x2, y2,…)。例 如,对于下列两个函数(这是神经网络中的两个重要函数: logsig和tansig):
3.5 坐 标 轴 控 制
利用box函数可以控制图形的上边框和右边框,box on、 box off可分别显示和隐去上边框和右边框,box命令为乒乓开 关,可以在这两种状态之间切换。为了更加灵活地控制各个边 框(坐标轴),可以采用axes命令。例如在[0,pi/2]之间绘制出 y=tan(x)曲线,然后利用box off命令去掉边框,MATLAB程序 为
x=0.01:.01:100; y=log10(x); figure(1) subplot(2,1,1) plot(x,y,'k-'), grid on title('\ity=log_{10}(x) in Cartesian coordinates'), ylabel('y')
第三章 MATLAB图形系统
第三章 MATLAB图形系统 图3.7 笛卡尔和极坐标系中特征值的表示
第三章 MATLAB图形系统
极坐标系中零极点的表示
图3.8 极坐标系中系统零极点的表示
第三章 MATLAB图形系统
3.4 复杂图形绘制
在同一个图形窗口中绘制多条曲线是MATLAB的一大功能, 这可以有多种应用方法。第一种方法是将曲线数据保存在n×m 的矩阵y中,而x为相应的x轴向量n×1或1×n,则plot(x,y)命 令可以在同一个图形窗口中绘制出m条曲线。这种方法非常适 用于由其它软件产生的数据,然后由load命令读入到MATLAB 中,并绘制出曲线。例如,MATLAB提供了一个多峰函数 peaks.m,其函数表达式为
subplot(2,1,2), grid on
semilogx(x,y,'k-')
%半对数绘图
title('\ity=log_{10}(x) in Semi-log coordinates')
xlabel('x'), ylabel('y')
第三章 MATLAB图形系统 图3.6 笛卡尔和对数坐标系中 MATLAB图形系统
subplot(2,2,1) plot(x,sin(x)), grid on %绘制正弦函数曲线 subplot(2,2,2) plot(x,cos(x)), grid on %绘制余弦函数曲线 subplot(2,2,3) plot(x,tan(x)), grid on %绘制正切函数曲线 subplot(2,2,4) plot(x,cot(x)), grid on %绘制余切函数曲线
x=0:.025:pi/2; y=tan(x);
figure(1)
plot(x,y,'r-o'), grid on
x=0:pi/50:2*pi; y1=sin(x); y2=cos(x); figure(1) plot(x, y1, 'k-', x, y2, 'k-'), grid on text(pi, 0.05, '\leftarrow sin(\alpha)') text(pi/4-0.05, 0.05, 'cos(\alpha)\rightarrow') title('sin(\alpha) and cos(\alpha)') xlabel('\alpha'), ylabel('sin(\alpha) and cos(\alpha)')
第三章 MATLAB图形系统
在控制系统中,可以求出系统的零极点,然后利用polar函 数在极坐标系中绘制出零极点图,直观地显示出系统的零极点, 这有助于我们对控制系统进行深入了解。如输入MATLAB程序:
num=[1 1.1]; den=[1 2 5 7 4]; [z,p,k]=tf2zp(num,den); c1=abs(z);c2=angle(z); c3=abs(p);c4=angle(p); figure(1) polar(c4,c3,'bx') hold on,polar(c2,c1,'ro') gtext('极坐标系中零极点的表示')
f (x, y) 3(1 x) 2 e x2 (y1)2 10 x x 3 y5 e x2 y2 1 e (x1)2 y2
5
3
第三章 MATLAB图形系统
利用这一函数,可以方便地产生多条曲线的数据
[x,y]=meshgrid(-3:0.15:3); %产生41×41的输入矩阵