MATLAB基础练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一讲:软件使用练习-MATLAB篇
§1-2 MATLAB作图
人们很难从一大堆原始的数据中发现它们的含义,而数据图形恰能使视觉感官直接
感受到数据的许多内在本质,发现数据的内在联系。
MATLAB可以表达出数据的二维,三维,甚至四维的图形。
通过图形的线型,立面,色彩,光线,视角等属性的控制,可
把数据的内在特征表现得淋漓尽致。
下面我们分别介绍图形的命令。
1-2-1MATLAB二维绘图命令
1. plot命令------绘制直角坐标的二维曲线
用法(1) plot(X,Y)------ 当X,Y均为实数向量,且为同维向量(可以不是同型向量),X=[x(i)],Y=[y(i)],则plot(X,Y)先描出点(x(i),y(i)),然后用直线依次相连;
若X,Y中一个为向量,另一个为矩阵,且向量的维数等于矩阵的行数或者列数,则矩阵按向量的方向分解成几个向量,再与向量配对分别画出,矩阵可分解成几个向量就有几
条线;
(2)plot(Y)------- 若Y为实数向量,Y的维数为m,则plot(Y)等价于
plot(X,Y),其中x=1:m;若y为实数矩阵,则把y按列的方向分解成几个列向量,而y 的行数为n,则plot(Y)等价于plot(X,Y)其中x=[1;2;…;n];
(3)plot(X1,Y1,X2,Y2,…)------- Xi与Yi成对出现,plot(X1,Y1,X2,Y2,…)
将分别按顺序取两数据Xi与Yi进行画图
(4)plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2…)----- 将按顺序分别画出由三参数定义Xi,Yi,LineSpeci的线条。
其中参数LineSpeci指明了线条的类型,标记符号,
和画线用的颜色。
plot是绘制二维曲线的基本命令,但在使用此函数之前,我们需先定义曲线上每一点的x
及y座标。
下例可画出一条正弦曲线:
例1-38
>>close all; x=linspace(0, 2*pi, 100); % 100个点的x座标
y=sin(x); % 对应的y座标
plot(x,y);
2.多重线
若要在同一个画面上画出多条曲线,只需将座标对依次放入plot函数即可:例1-39
plot(x, sin(x), x, cos(x));
或Y= [sin(x), cos(x)];plot(x, Y)
3.线形与颜色:
plot 绘图函数的叁数字元
颜色字元 图线型态
y
黄色. 点k
黑色o 圆w
白色x X 形b
蓝色+ +g
绿色* *r
红色- 实线c
亮青色: 点线m 锰紫色-. 点虚线-- 虚线若要改变颜色,在座标对後面加上相关字串(用单引号括起)即可: 例1-40
plot(x, sin(x), x, cos(x), 'g'); 若要同时改变颜色及图线型态(Line style ),也是在座标对後面加上相关字串即可: 例1-41plot(x, sin(x), 'co', x, cos(x), 'g*'); ,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
4.网格和标记:
图形完成後,我们可用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围:axis([0, 6, -1.2, 1.2]);
此外,MATLAB也可对图形加上各种注解与处理:
xlabel('Input Value'); % x轴注解
ylabel('Function Value'); % y轴注解
title('Two Trigonometric Functions'); % 图形标题
legend('y = sin(x)','y = cos(x)'); % 图形注解
grid on; % 显示格线
5.画面窗口的分割:
我们可用subplot来同时画出数个小图形於同一个视窗之中:
subplot(m,n,p)----把一个画面分成m*n个区域,p代表当前的区域号例1-42
subplot(2,2,1); plot(x, sin(x));
subplot(2,2,2); plot(x, cos(x));
subplot(2,2,3); plot(x, sinh(x));
subplot(2,2,4); plot(x, cosh(x));
6.其他命令:
MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。
bar长条图
errorbar图形加上误差范围
fplot较精确的函数图形
polar极座标图
hist累计图
rose极座标累计图
stairs阶梯图
stem针状图
fill实心图
feather羽毛图
compass罗盘图
quiver向量场图
以下我们针对几个函数举例。
(1)bar------二维垂直条形图
用法 bar(Y)------若y为向量,则分别显示每个分量的高度,横坐标为1到length(y);
bar(x,Y) 在指定的横坐标x上画出y,其中x为严格单增的向量。
当资料点数量不多时,长条图是很适合的表示方式:
例1-43
close all; % 关闭所有的图形视窗
x=1:10;
y=rand(size(x));
bar(x,y);
(2)errorbar
功能沿着一曲线画误差棒形图。
误差棒为数据的置信水平或者为沿着曲线的偏差。
用法errorbar(X,Y,E)---------X,Y,E必须为同型参量。
若同为向量,则画出带长度为2*E(i)、对称误差棒于曲线点(X(i),Y(i))之处;
如果已知资料的误差量,就可用errorbar来表示。
下例以单位标准差来做资料的误差量:
例1-44
x = linspace(0,2*pi,30);
y = sin(x);
e = std(y)*ones(size(x));
errorbar(x,y,e)
(3)fplot
功能在指定的范围limits内画出一元函数y=f(x)的图形
用法fplot('function',limits) 其中limits是一个指定x-轴范围的向量[xmin xmax]或者是x轴和y轴的范围的向量[xmin xmax ymin ymax]。
fplot采用自适应步长控制来画出函数function的示意图,在函数的变化激烈的区间,采用小的步长,否则采用大的步长。
总之,使计算量与时间最小,图形尽可能精确。
对於变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样,如下例:
例1-45
fplot('sin(1/x)', [0.02 0.2]); % [0.02 0.2]是绘图范围
(4)polar---------产生极座标图形
用法polar (X,Y)----X为极角,Y为极角的函数
例1-46
theta=linspace(0, 2*pi);
r=cos(4*theta);
polar(theta, r);
(5)hist---------产生二维条形直方图
功能可以显示出数据的分配情形。
所有向量y中的元素是根据它们的数值范围来分组的,每一组作为一个条形进行显示。
条形直方图中的x轴反映了数据y中元素数值的范围,直方图的y轴显示出参量y中的元素落入该组的数目。
所以y轴的范围从0到任一条形中包含元素最多的数字。
用法hist(Y,x)----- 参量x为向量,把向量y中元素放到m(m=length(x))个由x中元素指定的位置为中心的条形中。
hist(Y,m)----- 参量m为标量,把y中元素分成m组指定的位置为中心的条形中。
对於大量的资料,我们可用hist来显示资料的分 情况和统计特性。
下面几个命令可用来验证randn产生的高斯乱数分 :
例1-47
x=randn(5000, 1); % 产生5000个 μ=0,σ=1 的高斯乱数 hist(x,20); % 20代表长条的个数
7.隐函数图形的描绘命令:ezplot(‘f’, [xmin,xmax,ymin,ymax])例1-48
>>ezplot('1/y-log(y)+log(-1+y)+x - 1') ezplot('x^3 + y^3 - 5*x*y + 1/5',[-3,3])
ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0,pi])
1-2-2MATLAB三维绘图命令
1.曲面与网格图命令
命令1 mesh
用法mesh(X,Y,Z,C) 画出颜色由c指定的三维网格图,若X与Y均为向量,length(X)=n,length(Y)=m,而[m,n]=size(Z),空间中的点(X(j),Y(I),Z(I,j)) 为所画曲面网线的交点,分别地,X对应于z的列,Y对应于z的行。
例1-49
>>[X,Y] = meshgrid(-3:0.125:3); % 生成二维网格点
Z = peaks(X,Y);%生成某种内置函数
mesh(X,Y,Z);
图形结果为图。
为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,
直接键入peaks:
peaks
z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...
- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...
- 1/3*exp(-(x+1).^2 - y.^2)
我们亦可对peaks 函数取点,再以各种不同方法进行绘图。
[x,y,z]=peaks;
命令2 surf 功能 在矩形区域内显示三维带阴影曲面图。
用法 surf(X,Y,Z) 数据z 同时为曲面高度,也是颜色数据。
X 和Y 为定义X 坐标轴和Y 坐标轴的曲面数据。
若X 与Y 均为向量,length (X )=n ,length (Y )=m ,而[m,n]=size (Z ),在这种情况下,空间曲面上的节点为(X(I),Y(j),Z(I,j))。
例1-50>>[X,Y,Z] = peaks(30);surf(X,Y,Z)结果图形为右图。
命令3 surfc 功能 在矩形区域内显示三维带阴影曲面图,且在曲面下面画出等高线。
用法 surfc(Z)、surfc(X,Y,Z)、 surfc(X,Y,Z,C)、 surfc(…,’PropertyName’,PropertyValue)、 surfc(…)、 h = surfc(…) 上面各个使用形式的曲面效果与命令surf 的相同,只不过是在曲面下面增加了曲面的等高线而已。
例
1-51
>>[X,Y,Z] = peaks(30);>>surfc(X,Y,Z)图形结果如右。
命令4 surfl 功能 画带光照模式的三维曲面图。
该命令显示一个带阴影的曲面,结合了周围的,散射的和镜面反射的光照模式。
想获得较平滑的颜色过度,要使用有线性强度变化的色图(如:gray ,copper ,bone ,pink 等)。
参数X ,Y ,Z 确定的点定义了参数曲面的“里面”和“外面”,若用户想曲面的“里面”有光照模式,只要使用: 用法 surfl(X,Y,Z) 以矩阵X ,Y ,Z 生成的一个三维的带阴影的曲面,其中阴影模式中的光源的方位、光照系数为缺省值(见下面)。
例1-52>>[X,Y] = meshgrid(-3:1/8:3);>>Z = peaks(X,Y);>>surfl(X,Y,Z);图形结果为右图。
2. 三维曲线命令plot3 plot3命令将绘制二维图形的函数plot 的特性扩展到三维空间。
函数格式除了包括第三维的信息(比如Z 方向)之外,与二维函数plot 相同。
plot3一般语法调用格式是plot3(x 1,y 1,z 1,S 1,x 2,y 2,z 2,S 2,…),这里x n ,y n 和z n 是向量或矩阵,S n 是可选的字符串,用来指定颜色、标记符号和/或线形。
总的来说,plot3可用来画一个单变量的三维函数。
如下为一个三维螺旋线例子:plot3可画出三度空间中的曲线: 例1-53t=linspace(0,20*pi, 501);
plot3(t.*sin(t), t.*cos(t), t);
亦可同时画出两条三度空间中的曲线:
t=linspace(0, 10*pi, 501);
plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);
3. ezplot3
命令:ezplot3 (x,y,z,[tmin,tmax])
》》ezplot3('cos(t)', 't * sin(t)', 'sqrt(t)', [0,6*pi])。