Presentation is loading. Please wait.

Presentation is loading. Please wait.

第二篇:MATLAB的高级应用和绘图简介

Similar presentations


Presentation on theme: "第二篇:MATLAB的高级应用和绘图简介"— Presentation transcript:

1 第二篇:MATLAB的高级应用和绘图简介
专用图形简介 绘制二维图形 MATLAB中的样条函数工具箱简介

2 一、Matlab的帮助简介(帮助窗口)

3 命令窗口中的帮助命令介绍

4 寻求帮助的几种方法

5 MATLAB的高级应用 二、MATLAB在高等代数中的应用 特征值和特征向量: d=e i g ( A ) 求包含矩阵A的特征值的向量。
[ V, D ] = e i g ( A ) 返回特征值矩阵D和特征向量矩阵V。特征值矩阵D是以A的特征值为对角线的元素生成的对角阵,矩阵A的第k个特征值的特征向量是矩阵V的第k列列向量,满足AV=VD。 d=eig(A) d = 1 -5 5 例:A = [ ]

6 求矩阵的秩:求矩阵A的秩,命令格式为rank(A)。
[V D]=eig(A) V = D = 求矩阵的秩:求矩阵A的秩,命令格式为rank(A)。 例:A = rank(A) ans = 2

7 [ L , U , P ] = l u ( A ) 求上三角矩阵U、有单位对角线的下三角矩阵L和交换矩阵P,满足L U = PA。
矩阵的分解: 1、矩阵的lu分解: [ L , U ] = l u ( A ) 求上三角矩阵U和交换下三角矩阵L。L是一个带有单位对角线的下三角矩阵和交换矩阵,即P的逆矩阵的乘积,见下个命令。 [ L , U , P ] = l u ( A ) 求上三角矩阵U、有单位对角线的下三角矩阵L和交换矩阵P,满足L U = PA。 例:A =[ ] [L U]=lu(A) L = U =

8 [ Q , R ] = q r ( A ) 求得m×m的矩阵Q和上三角矩阵R,Q的列形成了一个正交基,Q和R满足A = Q R。
[L U P]=lu(A) L = U = P = 2、矩阵的QR分解: [ Q , R ] = q r ( A ) 求得m×m的矩阵Q和上三角矩阵R,Q的列形成了一个正交基,Q和R满足A = Q R。 [ Q , R , P ] = q r ( A ) 求得矩阵Q、上三角矩阵R和交换矩阵P。Q的列形成一个正交基,R的对角线元素按大小降序排列,它们满足 A P=Q R。

9 例:A =[ ] [Q R]=qr(A) Q = R = [Q R P]=qr(A) Q = R =

10 c h o l ( A ) 求矩阵A的C h o l e s k y因子,是一个上三角矩阵。如果A不是一个正定矩阵,则给出一个错误信息。
P = 3、C h o l e s k y因式分解 c h o l ( A ) 求矩阵A的C h o l e s k y因子,是一个上三角矩阵。如果A不是一个正定矩阵,则给出一个错误信息。 例:A = chol(A) ans =

11 向量范数: n o r m ( x ) 求欧几里得范数。 n o r m ( x , i n f ) 求∞ -范数。
n o r m ( x , p ) 求p -范数。 例:x = norm(x,2) ans = 7.0711 norm(x,inf) ans = 5 norm(x,1) ans = 12

12 上海森伯(Hessenberg)形式: h e s s ( A ) 返回矩阵A的上海森伯形式 例:A = 1 4 2 0 -3 4
hess(A) ans =

13 三、MATLAB在高等数学中的应用 pretty命令:此为MATLAB中的化简命令。 syms x y z a b c
f=(x+y)*(a+b^c)^z/(x+a)^2*y; f=(x+y)*(a+b^c)^z/(x+a)^2; g=(a+b^c)^z/(x+a)^2*x+(a+b^c)^z/(x+a)^2*y; pretty(f) c z (x + y) (a + b ) 2 (x + a) pretty(g) c z c z (a + b ) x (a + b ) y

14 数值逼近:把一些离散的数据用一个近似的解析表达式描述出来,解决方法有两个:一是曲线拟合,二是插值。
1、曲线拟合:用已知的离散数据构造出一条“最”光滑的曲线,利用函数polyfit进行拟合。 调用格式:p=polyfit(x,y,n),功能为利用已知的向量x和y所确定的数据点,采用最小二乘法构造出n阶多项式去逼近已知的离散数据。 x=-2:0.4:2 y=[ ]; n=2; p=polyfit(x,y,n) p = 所得的拟合多项式为:

15 为了比较,将原始数据和拟合得到的曲线画出来
x=-2:0.4:2 y=[ ]; plot(x,y,'bo') hold on x1=-2:0.4:2; y1=polyval(p,x1); plot(x1,y1,'r:')

16 2、一元插值:一元插值就是利用已知的数据构造插值表。用MATLAB提供的函数interp1可实现一元插值。
调用格式为:yi=interp1(x,y,xi,method) 功能:利用已知的数据(x,y)构造插值函数,并计算xi处的函数值yi。method为插值的方法,其选项有: ‘linear’ 线形插值 ‘cubic’ 三次多项式插值 ‘nearest’ 最近点插值 ‘spline’ 三次样条插值 x=0:10; y=cos(x); xi=0:0.1:10; li=interp1(x,y,xi,'linear'); ci=interp1(x,y,xi,'cubic');

17 si=interp1(x,y,xi,'spline');
ni=interp1(x,y,xi,'nearest'); plot(x,y,'mo',xi,li,'k--',xi,ci,'b:',xi,si,'r-',xi,ni,'c'); legend('origin data','linear','cubic','spline','nearest');

18 四、Matlab的绘图 一个有趣的例子:飞闪效果抓拍的图片 load wind
wind_speed = sqrt(u.^2 + v.^2 + w.^2); hpatch = patch(isosurface(x,y,z,wind_speed,35)); isonormals(x,y,z,wind_speed,hpatch) set(hpatch,'FaceColor','red','EdgeColor','none'); [f vt] = reducepatch(isosurface(x,y,z,wind_speed,45),0.05); daspect([1,1,1]); hcone = coneplot(x,y,z,u,v,w,vt(:,1),vt(:,2),vt(:,3),2); set(hcone,'FaceColor','blue','EdgeColor','none'); hlight = camlight('headlight'); set(hpatch,'AmbientStrength',.1,... 'SpecularStrength',1,... 'DiffuseStrength',1); set(hcone,'SpecularStrength',1); set(gcf,'Color','k') lighting gouraud set(gcf,'Renderer','OpenGL') lighting phong set(gcf,'Renderer','zbuffer') hsline = streamline(x,y,z,u,v,w,80,30,11); xd = get(hsline,'XData'); yd = get(hsline,'YData'); zd = get(hsline,'ZData'); delete(hsline) for i=1:length(xd)-50 campos([xd(i),yd(i),zd(i)]) camtarget([xd(i+5)+min(xd)/100,yd(i),zd(i)]) camlight(hlight,'headlight') drawnow end

19 MATLAB的绘图简介 MATLAB的图形窗口 建立图形窗口: figure:为当前的绘图命令建立一个新的图形窗口.
figure(n):将第号图形窗口作为当前图形指令的图形窗口.

20 在同一个图形窗口中,可以用subplot命令建立几个不同的坐标系,并可以指定其中的一个作为当前的绘图坐标系。
建立坐标子系统 在同一个图形窗口中,可以用subplot命令建立几个不同的坐标系,并可以指定其中的一个作为当前的绘图坐标系。 命令格式为:subplot(m,n,p) 功能:将当前的图形窗口分成m*n个子坐标系统,并选择第p个作为当前坐标系,各个子坐标系的编号先按行(从上到下),再按列(从左到右)。 x=0:pi/100:2*pi; subplot(2,2,1); plot(x,sin(x)); subplot(2,2,2); plot(x,cos(x)); subplot(2,2,3); plot(x,tan(x)); subplot(2,2,4); plot(x,sinh(x));

21 hold on:保留当前的图形及其坐标系的所有属性,在已存在的图形的基础上附加新的图形。
图形的保留开关: hold on:保留当前的图形及其坐标系的所有属性,在已存在的图形的基础上附加新的图形。 hold:返回hold的缺省模式,随后plot的命令会把原有的图形擦掉,而画出新的图形。 clear x=0:pi/100:2*pi; plot(x,sin(x)); hold on plot(x,cos(x));

22 坐标轴的形式和刻度:axis命令用于设置坐标轴的属性,常用格式如下:
axis([x min,x max,y min,y max]):指定坐标轴的范围,其中[x min,x max]是x坐标轴的范围,[y min,y max]是y坐标轴的范围。 axis(‘auto’):使坐标轴的范围返回原来的缺省模式。 axis(‘ij’):使用“矩阵”坐标模式:坐标的原点在左上角,水平轴j的刻度从左 到右增加,垂直轴i的刻度从上到下增加。 axis(‘xy’):使用系统缺省的笛卡尔坐标系,坐标原点在左下角,水平轴x的刻度从左到右是增加的,垂直轴y从上到下是增加的。 axis(‘square’):使当前的坐标区域变成正方形。 axis(‘equal’):使标注在不同坐标轴上的刻度的增量是相等的。 axis(‘on’):使坐标轴和它的刻度、标注和说明等变为on状态(显示)。 axis(‘off’):与上一命令功能相反。

23 axis on axis([0,10,0,5]) x=0:pi/100:2*pi; plot(x,sin(x)); axis off

24 图形窗口中的文本: t i t l e ( t x t ): 在图形窗口顶端的中间位置输出字符串t x t作为标题。 x l a b e l ( t x t ): 在x轴下的中间位置输出字符串t x t作为标注。 y l a b e l ( t x t ) :在y轴边上的中间位置输出字符串t x t作为标注。 z l a b e l ( t x t ): 在z轴边上的中间位置输出字符串t x t作为标注。 t e x t ( x , y , t x t ) :在图形窗口的(x, y)处写字符串t x t。 l e g e n d ( s t r 1 , s t r 2 , . . .p o s):在当前图上输出图例,并用说明性字符串s t r 1, s t r 2等作为标注。如果指定参数p o s,则图例将按下面所述放置:-1: 将图例框放在坐标轴外的右侧。0: 将图例框放在坐标轴内侧,以便最少的点被覆盖。1: 将图例框放在右上角。2: 将图例框放在左上角。3: 将图例框放在左下角。4: 将图例框放在右下角。[x, y] 将图例框的左下角移动到坐标(x, y)指定的位置。 legend off 从当前图形中清除图例。

25 x=0:pi/100:2*pi; y=sin(x); z=cos(x); v=y-z; plot(x,y,'k-',x,z,'b:',x,v,'ro'); xlabel('Input Value'); ylabel('Function Value'); title('Two Trigonometric Function'); grid on; legend('y=sin(x)','z=cos(x)','v=sin(x)-cos(x)');

26 绘制二维图形 基本的二维图形命令: p l o t ( x , y ) 对向量x绘制向量y。以x为横坐标,y为纵坐标,按照坐标(xj ,yj)的有序排列绘制曲线。 p l o t ( y ) 以j为横坐标, yj为纵坐标,绘制(j, yj)的有序集合的图形。 p l o t ( A ) 绘制矩阵A的列对它下标的图形。对于m×n的矩阵A, 有n个含有m个元素的数对, 或是n条有m个点曲线,且这n条曲线均采用颜色监视器上不同的颜色绘制而成。 p l o t ( x , A ) 绘制矩阵A对向量x的图形。对m×n的矩阵A和长度为m的向量x,绘制矩阵A的列对向量x的图形。如果x的长度为n,则绘制矩阵A的行对向量x的图形。向量x可以是行向量也可以是列向量。

27 p l o t ( A , B ) 对矩阵A的行绘制矩阵B的列的图形。如果A和B都是m×n的矩阵,将绘制n条由m个有序对连成的曲线。
p l o t ( A , x ) 对矩阵A绘制向量x的图形。对于一个m×n的矩阵A和一个长度为m的向量x,对矩阵A的列绘制向量x的图形。如果x的长度为n,则对矩阵A的行绘制向量x的图形。向量x可以是行向量也可以是列向量。 p l o t ( A , B ) 对矩阵A的行绘制矩阵B的列的图形。如果A和B都是m×n的矩阵,将绘制n条由m个有序对连成的曲线。 例:x=[ ]; y=[ ]; plot(x,y) 例:y=[ ]; plot(y)

28 例:x=0:0.1:2; A=[sin(pi*x); *x]; plot(A) 例:x=0:0.1:2; A=[sin(pi*x); *x]; plot(x,A)

29 例:x=0:0.1:2; A=[sin(pi*x); *x]; plot(A,x) 例:A=[1 4 2;0 -3 4;0 4 3]; B=[1 0 0 ;0 1 0;0 0 1]; plot(A,B)

30 p l o t (. . ., s t r ) :使用字符串s t r指定的颜色和线型进行绘图。下表列出了s t r可以取的值。
p l o t ( x 1 , y 1 , s t r 1 , x 2 , y 2 , s t r 2 , ):用字符串s t r 1指定的颜色和线型对y1绘制x1的图形,用字符串s t r 2指定的颜色和线型对y 2绘制x 2的图形 。每组参数值可以采用上述除复数值以外的任何一种形式。str1, str2. . .可以省略,此时,M AT L A B自动为每条曲线选择颜色和线型。 x=0:pi/100:2*pi; y=sin(x); z=cos(x); v=y+z; plot(x,y,'k-',x,z,'b:',x,v,'ro');

31 点类型 * 星号 s q u a r e 正方形 d i a m o n d 菱形 p e n t a g r a m 五角星形 h e x a g r a m 六角星形 n o n e 无点 o o x × < 顶点指向左边的三角 > 顶点指向右边的三角 ^ 正三角 V 倒三角 线类型 实线 虚线 - 点划线 : 点线 n o n e 无线 颜色 g 绿色 m 品红色 b 蓝色 c 灰色 w 白色 r 红色 k 黑色 y 黄色

32 绘制三维图形 基本三维绘图命令: p l o t 3 ( x , y , z ) :用(xi, yi, zi)所定义的点绘制图形。向量x、y和z必须为等长度的。 p l o t 3 ( X , Y , Z ) :对矩阵X、Y和Z的每一列绘图。这些矩阵必须大小相等。或者,也可以是长度与矩阵列向量相等的向量。 p l o t 3 ( x , y , z , s t r ) :使用字符串s t r确定的线型和颜色按照上面所述的方法绘制图形。参见二维图形所用表。 p l o t 3 ( x 1 , y 1 , z 1 , s t r 1 , x 2 , y 2 , z 2 , s t r 2 ,. . .):用字符串s t r 1确定的线型和颜色对x 1 , y 1 , z 1绘图,用字符串s t r 2确定的线型和颜色对x2, y2, z2绘图. . .。如果省略s t r 1 , s t r 2,. . .,M AT L A B将自动选择线型和颜色。

33 clear; x=linspace(1,12*pi); subplot(1,2,1); plot3(sin(x),cos(x),x); title('helix'); subplot(1,2,2) plot3(cos(x),sin(x),x,'r:'); xlabel('cos(x)'); ylabel('sin(x)'); zlabel('x');

34 纹理映射后的三维表面图形 load earth % 加载二维数据图形
sphere; h = findobj('Type','surface'); hemisphere = [ones(257,125),... X,... ones(257,125)]; set(h,'CData',flipud(hemisphere),'FaceColor','texturemap') colormap(map) axis equal view([90 0]) set(gca,'CameraViewAngleMode','manual') view([65 30])

35

36 随机真彩填充的表面图形 Z = peaks(25); C(:,:,1) = rand(25); C(:,:,2) = rand(25);
surf(Z,C)

37

38 随机采样数据的表面图形 x = rand(100,1)*16 - 8; y = rand(100,1)*16 - 8;
r = sqrt(x.^2 + y.^2) + eps; z = sin(r)./r; xlin = linspace(min(x),max(x),33); ylin = linspace(min(y),max(y),33); [X,Y] = meshgrid(xlin,ylin); Z = griddata(x,y,z,X,Y,'cubic'); mesh(X,Y,Z) axis tight; hold on plot3(x,y,z,'.','MarkerSize',15)

39

40 例子 表面图形中添加颜色条 [x,y] = meshgrid([-2:.2:2]); Z = x.*exp(-x.^2-y.^2);
surf(x,y,Z,gradient(Z)) colorbar

41

42 三维网线图和曲面图的绘制 1、绘制三维网线图:
已知n维的向量x和m维的向量y,相应地二元函数z=f(x,y)的离散值为:z(i,j)=f(x(j),y(i)) j=1,…,n; i=1,…m 则绘制二元函数的三维网线图的基本步骤如下; (1)用meshgrid函数生成网线结点矩阵X、Y: [X,Y]=meshgrid(x,y) (2 ) X和Y计算函数值矩阵Z。 (3)由函数mesh绘制三维网线图。 下面介绍mesh的基本用法: 调用格式1:mesh(X,Y,Z),其功能为根据矩阵X,Y,Z绘制彩色的空间三维网线图.X,Y,Z中对应的元素映射为三维空间上的点,点与点之间用线段连接。 调用格式2:mesh(x,y,Z),其功能为n维的向量x,m维的向量y和m*n

43 的矩阵Z绘制成网线图,结点的坐标为(x(j),y(i),Z(i,j))。
调用格式3:mesh(Z),其功能为由数值对(i,j,Z(i,j))实现作图。 t=0:pi/10:2*pi; [X,Y,Z]=cylinder(4*cos(t)); subplot(2,2,1); mesh(X) title('X'); subplot(2,2,2); mesh(Y) title('Y'); subplot(2,2,3); mesh(Z); title('Z'); subplot(2,2,4); mesh(X,Y,Z) title('X,Y,Z');

44 例:用mesh绘制一顶阔边帽。 x=-8:0.5:8; y=x; [X,Y]=meshgrid(x,y);
R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; mesh(X,Y,Z) title('Sombrero');

45 2、彩色的三维曲面图 在三维网线图上,对网线之间的网线元进行颜色填充,就成了三维的曲面图了,使用surf函数我们可以实现。surf和mesh有相同的参数形式。 x=-8:0.5:8; y=x; [X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; surf(X,Y,Z) title('Sombrero');

46 专用图形简介 除了基本的绘图命令plot外,MATLAB还有其它各种二维绘图函数。
loglog:使用对数坐标作图。x和y的两个坐标采用对数刻度。 semilogx:只是x轴采用了对数坐标,y轴仍采用线性刻度画图。 semilogy:与上条情况相反。 bar:绘制条形图。 stairs:绘制阶梯图。 stem:绘制针状图。 errorbar:绘制误差棒图。 compass绘制复数向量图,以坐标原点为起点。 feather:绘制复数向量图,但是以向量的下标为起点。 polar:绘制极坐标图。 fplot:对于变化剧烈的函数,可用fplot函数进行较精确的绘图。

47 x=0:10; y=rand(size(x)); subplot(1,2,1); bar(x,y); title('Bar chart of random'); subplot(1,2,2); stairs(x,y); title('stair chart of random'); 本例画一个随机的条形图和梯形图

48 x=0:10; y=rand(size(x)); subplot(1,2,1); bar(x,y); title('Bar chart of random'); subplot(1,2,2); stairs(x,y); title('stair chart of random'); x=-3.9:0.2:3.9; y=randn(4000,1); subplot(1,1,1); hist(y,x); title('Histogram chart of random'); 本例画一个随机的频数统计直方图

49 x=linspace(0,10,50); y=sin(x).*exp(-x/3); stem(x,y); title('stem chart'); %以linspace(初值,终值,元素个数)建立 %线形等距离数组 绘制一个针状图

50 x=linspace(0,2*pi,30); y=sin(x);
e=std(y)*ones(size(x)); errorbar(x,y,e); title('errorbar chart'); %以linspace(初值,终值,元素个数)建立 %线形等距离数组 绘制一个误差棒图

51 x=linspace(0,2*pi,20); z=cos(x)+i*sin(x); subplot(2,2,1); compass(z); title('compass plot'); subplot(2,2,2); feather(z); title('feather plot'); subplot('2,2,4'); fplot('sin(1/x)',[ ]); title('fplot:sin(1/x)'); x=linspace(0,2*pi); subplot(2,2,3); r=cos(4*x); polar(x,r); title('polar plot'); %[ ]是绘图范围 本例绘制两个向量图,一个极坐标图,一个一员函数曲线图。

52 clear close all x=randn(1000,1); subplot(1,2,1); rose(x); title('rose plot'); x=linspace(0,10,50); y=sin(x).*exp(-x/3); subplot(1,2,2); fill(x,y,'m'); title('fill plot'); Rose和fill的使用


Download ppt "第二篇:MATLAB的高级应用和绘图简介"

Similar presentations


Ads by Google