1 / 52

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

第二篇 :MATLAB 的高级应用和绘图简介. MATLAB 的帮助介绍 MATLAB 的帮助窗口 MATLAB 的命令窗口帮助用法 MATLAB 的高级应用 MATLAB 在高等代数中的应用 MATLAB 在高等数学中的应用 MATLAB 的绘图简介 MATLAB 的图形窗 绘制三维图形 专用图形简介 绘制二维图形 MATLAB 中的样条函数工具箱简介. 一、 Matlab 的帮助简介 ( 帮助窗口 ). 命令窗口中的帮助命令介绍. 寻求帮助的几种方法. 二、 MATLAB 在高等代数中的应用.

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二篇:MATLAB的高级应用和绘图简介 • MATLAB的帮助介绍 • MATLAB的帮助窗口 • MATLAB的命令窗口帮助用法 • MATLAB的高级应用 • MATLAB在高等代数中的应用 • MATLAB在高等数学中的应用 • MATLAB的绘图简介 • 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 = [ 1 4 2 0 -3 4 0 4 3]

  6. [V D]=eig(A) V = 1.0000 0.4082 -0.6667 0 -0.8165 -0.3333 0 0.4082 -0.6667 D = 1 0 0 0 -5 0 0 0 5 • 求矩阵的秩:求矩阵A的秩,命令格式为rank(A)。 例:A = 1 0 0 1 rank(A) ans = 2

  7. 矩阵的分解: 1、矩阵的lu分解: [ L , U ] = l u ( A ) 求上三角矩阵U和交换下三角矩阵L。L是一个带有单位对角线的下三角矩阵和交换矩阵,即P的逆矩阵的乘积,见下个命令。 [ L , U , P ] = l u ( A ) 求上三角矩阵U、有单位对角线的下三角矩阵L和交换矩阵P,满足L U = PA。 • 例:A =[ 1 2 3 • 4 5 6 • 7 8 0] [L U]=lu(A) L = 0.1429 1.0000 0 0.5714 0.5000 1.0000 1.0000 0 0 U = 7.0000 8.0000 0 0 0.8571 3.0000 0 0 4.5000

  8. [L U P]=lu(A) L = 1.0000 0 0 0.1429 1.0000 0 0.5714 0.5000 1.0000 U = 7.0000 8.0000 0 0 0.8571 3.0000 0 0 4.5000 P = 0 0 1 1 0 0 0 1 0 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 =[1 2 2 3 2 2 1 1 2] [Q R]=qr(A) Q = -0.3015 0.9239 -0.2357 -0.9045 -0.3553 -0.2357 -0.3015 0.1421 0.9428 R = -3.3166 -2.7136 -3.0151 0 1.2792 1.4213 0 0 0.9428 [Q R P]=qr(A) Q = -0.5774 0.4082 -0.7071 -0.5774 -0.8165 -0.0000 -0.5774 0.4082 0.7071 R = -3.4641 -2.8868 -2.8868 0 -1.6330 -0.4082 0 0 -0.7071

  10. P = 0 1 0 0 0 1 1 0 0 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 = 1 0 0 0 1 0 0 0 1 chol(A) ans = 1 0 0 0 1 0 0 0 1

  11. 向量范数: • n o r m ( x ) 求欧几里得范数。 • n o r m ( x , i n f ) 求∞ -范数。 • n o r m ( x , 1 ) 求1 -范数。 • n o r m ( x , p ) 求p -范数。 • 例:x = • 3 4 5 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 0 4 3 hess(A) ans = 1 4 2 0 -3 4 0 4 3

  13. 三、MATLAB在高等数学中的应用 • pretty命令:此为MATLAB中的化简命令。 syms x y z a b c f=(x+y)*(a+b^c)^z/(x+a)^2*y; syms x y z a b c 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 ----------- + ----------- 2 2

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

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

  16. 2、一元插值:一元插值就是利用已知的数据构造插值表。用MATLAB提供的函数interp1可实现一元插值。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(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:返回hold的缺省模式,随后plot的命令会把原有的图形擦掉,而画出新的图形。 clear x=0:pi/100:2*pi; plot(x,sin(x)); hold on plot(x,cos(x));

  22. 坐标轴的形式和刻度:axis命令用于设置坐标轴的属性,常用格式如下:坐标轴的形式和刻度: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 , 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=[-4 -2 0 1 3 5]; y=[16 4 0 1 9 25]; plot(x,y) 例:y=[16 4 0 1 9 25]; plot(y)

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

  29. 例:x=0:0.1:2; A=[sin(pi*x);0.5+0.5*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. 绘制三维图形 • 基本三维绘图命令: • 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将自动选择线型和颜色。

  32. 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');

  33. 纹理映射后的三维表面图形 • 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])

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

  35. 随机采样数据的表面图形 • 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)

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

  37. 三维网线图和曲面图的绘制 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

  38. 的矩阵Z绘制成网线图,结点的坐标为(x(j),y(i),Z(i,j))。的矩阵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');

  39. 例:用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');

  40. 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');

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

  42. 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'); 本例画一个随机的条形图和梯形图

  43. 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'); 本例画一个随机的频数统计直方图

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

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

More Related