实验4和5-MATLAB中的绘图
实验报告(理工类)
开课学院及实验室: 实验时间 : 年 月 日
一、实验目的
1、掌握基本的绘图指令。
2、学习如何绘制二维图形和进行图形修饰。
3、掌握三维图形的绘制。
4、掌握各种特殊图形的绘制。
二、实验原理
1、普通图形的绘制:2维图形的基本函数为plot 函数,其基本格式为:plot(x,y,‘选项’),选项包括线型、颜色等设置。
2、图形窗口的分割:用函数subplot(m,n,i)来实现。含义是将图形窗口分为m 行n 列子窗口,然后选定第i 个窗口为当前窗口。
3、坐标系的调整:可用函数axis([xmin,xmax,ymin,ymax,zmin,zmax])来完成。
4、图形的标注:为坐标轴标注用函数xlabel(‘string’,文本属性);为图形加标题用函数title(‘string’,文本属性);在图形窗口的任意位置加入标注用函数text(x,y, ‘string’)
5、3维图形的基本函数为plot3函数,用法和plot 函数相同。
6、绘制特殊图形:绘制极坐标图形用函数polar(角度向量,幅值向量,选项);条形图用函数bar(x,y);扇形图用pie(x)函数。
三、实验设备、仪器及材料
高性能计算机,MATLAB 软件。
四、实验步骤(按照实际操作过程)
1、用不同线型和颜色同一坐标内绘制曲线-0.5x
y1=e
sin(2x)π及曲线-0.1x y2=1.5e sin(x) ,其中,
0≤X≤2π。再分别为这两条曲线添加网格线,再用axis 改变横坐标和纵坐标的范围重新画一次。 2、同一坐标内绘制曲线y1=sin(10x)及曲线y2=sin(x)sin(10x),要求: (1)y1曲线为红色点划线;
(2)y2曲线为蓝色虚线圆圈;
(3)分别为这两条曲线在右下角添加图例“sin10x”、“sinxsin10x”; (4)分别添加横坐标和纵坐标名称为“x”、“y”; (5)添加图名为“正弦曲线”; (6)分别给两条曲线添加一些文字注释。
3、在同一图形窗口绘制2*1布局的子图,第1幅子图绘制曲线1sin(),[0,4]y t t π=∈;第1幅子图绘制曲线22cos(2),[,3]y t t ππ=∈。要求:曲线y1为黑色的点划线,曲线y2为红色的虚线圆圈,在右下角标注两条曲线的图例分别为“sint ”,“2cos2t ”。
4、把图形窗口分割为2*2的布局,在窗口1中绘制一条正弦曲线sin(2),[0,2]y t t π=∈;在窗口2中绘制三条衰减的单边指数曲线23,,,[0,2]t t t y e y e y e t ---===∈;在窗口3中绘制一个矩形脉冲信号,脉冲宽度为1,高度为2,开始时间为1;在窗口4中绘制一个单位圆。
5、在同一平面绘制多条二阶系统时域曲线。二阶系统的时域响应
为
11s c o s
)
x y e x
a ξξ-=-
+。 (1)绘制1条阻尼系数zeta=0的二阶系统曲线; (2)绘制1条阻尼系数zeta=0.3的二阶系统曲线; (3)绘制1条阻尼系数zeta=0.5的二阶系统曲线;
再给图添加上标题“二阶系统曲线”;并在平面的右上角分别为三条曲线添加上图例“ξ =0” ,“ξ =0.3”,“ξ =0.5”。
6、控制系统的开环传递函数为4
321
586s s s s
+++,横坐标w 的范围为2
310
10--。画出该系
统的bode 图和nyquist 曲线。 7、 特殊图形绘制。 (1)绘制条形图。 >>x=0:0.3:2*pi; >>y=sin(x); >>subplot(2,2,1)
>>bar(x,y,0.5) %绘制宽度为0.5的条形图 >>axis([0,2*pi,-1.2,1.2]) (2)绘制实心图 >>subplot(2,2,2)
>>fill(x,y,’r ’) %绘制红色实心图 (3)绘制阶梯图 >>subplot(2,2,3)
>>stairs(x,y)
(4)绘制火柴杆图
>>subplot(2,2,4)
>>stem(x,y)
8、三维曲线绘图:
>> x=0:0.1:20*pi;
>> plot3(x,sin(x),cos(x)) %按系统默认设置绘图
9、三维网线绘图
在MATLAB命令窗口输入:
>> [X,Y]=meshgrid(-8:0.5:8);
>>R=sqrt(X.^2+Y.^2)+eps;
>>Z=sin(R)./R;
>>mesh(X,Y,Z) %画三维网线
五、实验过程记录(数据、图表、计算等)
1、>> x=0:0.1:2*pi;
>> y1=exp(-0.5*x).*sin(2*pi*x);
>> y2=1.5*exp(-0.1*x).*sin(x);
>> plot(x,y1,'r-.')
>> hold on
>> plot(x,y2,'b--')
>> grid on
>> axis equal
2、>> x=0:0.1:2*pi;
>> y1=sin(10*x);
>> y2=sin(x).*sin(10*x);
>> plot(x,y1,'r-.')
>> hold on
>> plot(x,y2,'b--o')
>> legend('sin10x','sinxsin10x',4) >> xlabel('x')
>> ylabel('y')
>> title('正弦曲线')
>> text(pi,sin(10*pi),'x=\pi')
3、>> t=0:4*pi;
>> y1=sin(t);
>> subplot(2,1,1) >> plot(t,y1,'k-.') >> legend('sint',4) >> t=pi:3*pi;
>> y2=2*cos(2*t); >> subplot(2,1,2) >> plot(t,y2,'r--o') >> legend('2cos2t',4)
4、>> t=0:0.01:2;
>> y=sin(2*pi*t);
>> subplot(2,2,1)
>> plot(t,y)
>> t=0:2;
>> y1=exp(-t);
>> y2=exp(-2*t);
>> y3=exp(-3*t);
>> subplot(2,2,2)
>> plot(t,y1,t,y2,t,y3) >> t=[0 1 1 2 2 3 4]; >> y=[0 0 2 2 0 0 0]; >> subplot(2,2,3)
>> plot(t,y)
>> t=0:0.1:2*pi;
>> subplot(2,2,4)
>> plot(sin(t),cos(t));
>> axis equal
5、>> x=0:0.1:20;
>> zeta=0;
>> y1=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta)); >> plot(x,y1)
>> zeta=0.3;
>> y2=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta)); >> hold on
>> plot(x,y2,'r:')
>> zeta=0.5;
>> y3=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta)); >> plot(x,y3,'g*')
>> title('二阶系统曲线')
>> legend('/zeta=0','/zeta=0.3','/zeta=0.5')
6、>> num=1;
>> den=[1 5 8 6 0];
>> sys=tf(num,den)
Transfer function:
1
-------------------------
s^4 + 5 s^3 + 8 s^2 + 6 s
>> w=logspace(-2,3,20); >> bode(num,den,w)
>> figure(2)
>> nyquist(sys,w)
7、>> x=0:0.3:2*pi;
>> y=sin(x);
>> subplot(2,2,1)
>> bar(x,y,0.5)
>> axis([0,2*pi,-1.2,1.2]) >> subplot(2,2,2)
>> fill(x,y,'r')
>> subplot(2,2,3)
>> stairs(x,y)
>> subplot(2,2,4)
>> stem(x,y)
8、>> x=0:0.1:20*pi;
>> plot3(x,sin(x),cos(x));
9,、>> x=0:0.1:20*pi;
>> plot3(x,sin(x),cos(x)); >> [X,Y]=meshgrid(-8:0.5:8); >> R=sqrt(X.^2+Y.^2)+eps; >> Z=sin(R)./R;
>> mesh(X,Y,Z)
六、实验结果分析及问题讨论
1、plot函数有几种格式?各有什么区别?
2、如何设置绘制的曲线的颜色?
Matlab画图
Matlab中的将几条曲线画在一个坐标系下的方法 subplot:这个函数可以在同一个窗口内画几幅图,但是不在一个坐标系下 如果在一个坐标系下的话,目前我找到了三种方法: (1)用hold on和hold off,画好第一幅图后,用hold on 语句就可以接着在该坐标系下画出其他的曲线图形,画完后再用hold off结束 (2)建一个m行n列的矩阵,每一行代表一条曲线,然后再用一般的画图方法,如plot()函数就可以了 (3)可以直接将两条曲线直接写入plot函数的参数里, 例如 x=linspace(0,2*pi,100); y=sin(x); plot(x,y); z=cos(x); plot(x,y,x,z); 另外,还学会了一些其他的函数 axis用于限定x轴和y轴的范围 semilogy其纵坐标以10的指数为单位 gtext在指定的坐标上写入文本 这几天的画的第一幅图: %瑞利衰落下选择合并的中断率 M=[1 2 3 4 10 20]; initial_r=-10; final_r=40; r_step=0.25; r_in_dB=initial_r:r_step:final_r; v=zeros(length(M),length(r_in_dB)); for j=1:length(M), for i=1:length(r_in_dB), r=10^(r_in_dB(i)/10); Pout(i)=(1-exp(-1/r))^M(j); end; v(j,:)=Pout; end; semilogy(r_in_dB,v);
title('瑞利衰落下选择合并的中断率'); xlabel(''); ylabel('Pout'); axis([initial_r,final_r,v(1,length(r_in_dB)),v(1,1)]); %添加每条线的说明 hold on; text(27,0.003,'M=1'); text(15,0.002,'M=2'); text(11,0.0008,'M=3'); text(8.6,0.000415,'M=4'); text(3.2,0.00022,'M=10'); text(0,0.000115,'M=20'); hold off; Matlab中如何修改图形中标注文字的大小? 文中对图形中标注的文字都有规定,Matlab中默认的文字大小可能不满足要求。在找到这个方法之前,俺曾经在很长一段时间内使用笨办法,手工的修改图上文字的大小,每幅图都得来这么一下,挺麻烦的。后来总算找到一个一劳永逸的办法,就是使用gca获得当前绘图坐标的指针,然后用set设定绘图坐标的FontSize属性,这种设定同时对坐标轴标注、图例、标题有效。 下面是一小段实例代码,以飨大家: %---------- test_gca.m ---------------------- figure; % 打开一个绘图窗口 h = gca; % 获取当前绘图坐标的指针 set(h,'FontSize',14); % 设置文字大小,同时影响坐标轴标注、图例、标题等。 % 生成一个正弦曲线 x = 0:0.01:2*pi; y = sin(x); plot(x,y); % 绘图 xlabel('x'); % 横坐标 ylabel('sin(x)'); % 纵坐标 legend('sin(x)'); % 图例 title('正弦曲线'); % 标题
matlab中画图的时各种设置
MATLAB 受到控制界广泛接受的一个重要原因是因为它提供了方便的绘图 功能.本章主要介绍2维图形对象的生成函数及图形控制函数的使用方法,还将简单地介绍一些图形的修饰与标注函数及操作和控制MATLAB各种图形对象的方法. 第一节图形窗口与坐标系 一.图形窗口 1.MATLAB在图形窗口中绘制或输出图形,因此图形窗口就像一张绘图纸. 2. 在MATLAB下,每一个图形窗口有唯一的一个序号h,称为该图形窗口的 句柄.MATLAB通过管理图形窗口的句柄来管理图形窗口; 3.当前窗口句柄可以由MATLAB函数gcf获得; 4.在任何时刻,只有唯一的一个窗口是当前的图形窗口(活跃窗口); figure(h)----将句柄为h的窗口设置为当前窗口; 5.打开图形窗口的方法有三种: 1)调用绘图函数时自动打开; 2)用File---New---Figure新建; 3)figure命令打开,close命令关闭. 在运行绘图程序前若已打开图形窗口,则绘图函数不再打开,而直接利用已 打开的图形窗口;若运行程序前已存在多个图形窗口,并且没有指定哪个窗 口为当前窗口时,则以最后使用过的窗口为当前窗口输出图形. 6.窗口中的图形打印:用图形窗口的File菜单中的Print项. 7.可以在图形窗口中设置图形对象的参数.具体方法是在图形窗口的Edit菜 单中选择Properties项,打开图形对象的参数设置窗口,可以设置对象的属 性. 二.坐标系 1.一个图形必须有其定位系统,即坐标系; 2.在一个图形窗口中可以有多个坐标系,但只有一个当前的坐标系; 3.每个坐标系都有唯一的标识符,即句柄值; 4.当前坐标系句柄可以由MATLAB函数gca获得; 5.使某个句柄标识的坐标系成为当前坐标系,可用如下函数:axes(h) h为指 定坐标系句柄值. 6.一些有关坐标轴的函数: 1)定义坐标范围:一般MATLAB自动定义坐标范围,如用户认为设定的不 合适,可用:axis([Xmin, Xmax, Ymin, Ymax]) 来重新设定; 29 2) 坐标轴控制:MATLAB的缺省方式是在绘图时,将所在的坐标系也画出 来,为隐去坐标系,可用axis off;axis on则显示坐标轴 (缺省值). 3)通常MATLAB的坐标系是长方形,长宽比例大约是4:3,为了得到一个 正方形的坐标系可用:axis square 4)坐标系横纵轴的比例是自动设置的,比例可能不一样,要得到相同比例 的坐标系,可用:axis equal 第二节二维图形的绘制 一. plot函数
matlab句柄学习
matlab 句柄学习 句柄式图形常用函数: (1)get(h)返回句柄值h所指定的图形对象的所有属性名称与相对应的属性值 (2)a = get(h)返回由句柄值h所指定的图形对象的属性结构数组,并且该数组的字段名称就是该对象的属性名称。 (3)a = get(0,'factory')返回所有能由用户设置的属性的默认定义值。 (4)a = get(0,'FactoryObjectTypePropertyName1','FactoryObjectTypePropertyName2',...)返回指定对象类型指定的属性值,输入参数FactoryObjectTypePropertyName为一个关键词,由字符Factory与图形对象类型(如Figure)还有属性名称(如Color)组成。 a = get(0,'factoryFigureColor')返回Figure对象的Color属性值。 (5)a = get(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName1',...)返回句柄值为h的对象指定属性的默认值。如“DefaultFigureColor”。 (6)a = get(h,'default')列出h对象的所有属性的默认属性值 (7)a = set(h)返回句柄值h所指定的图形对象的所有属性名称对应的可设置属性值,a为结构数组,存储对象的属性名称,其字段值为相对应的属性值。属性值中用{}括起来的表示默认值。 (8)set(h,a)使用指定的属性值来设置由句柄值h所指定的对象属性,a为结构数组,其字段名称为对象的属性名称,字段值为相对应的属性值。 (9)a = set(0,'factory')返回那些用户可以设置默认值的所有对象的属性,同时显示可设置的属性值。 (10)a=set(0,'FactoryObjectTypePropertyName')返回所有对象中指定的属性名称FactoryObjectTypePropertyName的所有可能的属性值。 (11)a = set(h,'属性名','属性值')设置句柄值为h的对象的与属性名对应的属性值。 (12)set(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePropertyName2',...)对句柄值为h的对象设置特定属性名称的属性默认值。 (13)H = findobj;返回Root对象与其所有子对象的句柄值 (14)H = findobj(h);返回h变量的句柄值 (15)H = findobj(?属性名称…,?属性值…);依据对象的属性名称和属性值找出匹配的对象句柄值。 (16)H = findobj(ObjectHandles,?属性名称…,?属性值…);根据限定的对象列表找出与对象的属性名称和属性值匹配的对象句柄值 (17)gcf返回当前Figure对象的句柄值 gca返回当前axes对象的句柄值 gco返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab 会把当前图形对象的句柄值存放在Figure的CurrentObject属性中 Figure对象的属性篇 (1).^是矩阵每个元素的幂乘,^是数的幂乘。 (2)set(handle)列出句柄值为handle的对象的所有属性 get(handle)除列出上述属性外,还列出可以设置的属性 reset(handle)将所有属性改为默认值 delete(handle)删除句柄值为handle的图形对象 (3)利用set(handle,…属性名称?)获得句柄值为handle的对象的属性名称下所有可设置的属性值