第五章 matlab绘图
- 格式:ppt
- 大小:1.02 MB
- 文档页数:27
1.基本绘图函数:2.Matlab绘图步骤3.plot(x,y,s) s是字符串,不同的字符串代表不同的线型plot(x1,y1,s1,x2,y2,s2,…..)是将多个图形或函数曲线拼接放置在同一个图形框中。
函数曲线的颜色、线型和数据点型上面左边的b代表蓝色,-.代表点线型,就是x取的各点之间的连线为-.,而x取值的各个点的类型为空,就代表是默认的点型上面那个是r代表红色,--代表线型,而点型是*就是x取了多少个点,就多少个*,而*和*直接的连接为—上面的s里面的写法为:线型+颜色+点型线性为-.,颜色为k代表黑色,点型为h代表六角星型。
我们还可以不定义线性,为空,那么两个点之间就不连线了。
4.我们还可以定义曲线的颜色和线宽LineWidth:设定绘图曲线的粗细MarkerEdgeColor:数据点型或边界的颜色(圆形、菱形、六角星型等) MarkerFaceColor:数据点型的天聪颜色。
MarkerSize:数据点的大小从上可以看出:线型为--,颜色为r代表红色,点型为s代表方形,线的粗细为3,点标记的颜色为r代表红色,点标记的填充颜色为y代表黄色,点标记的大小为10.5.很多时候,需要在一张图上多次画多条曲线。
就需要hold函数:即图形保持命令,主要用于暂存当前的图形窗口,可以让用户继续在命令窗口中绘制其他函数图形,并且后续的图形曲线与当前窗口中的曲线在同一个图形界面中显示。
Hold函数不会因后面画的图形的坐标值不一样而改变当前坐标轴的定义范围。
Hold on函数:作用同上,但可以根据新的图形曲线的坐标轴极限值来自动调整当前坐标轴的坐标值。
Hold off函数:结束当前的图形保持状态,一般与Hold on匹配,hold off函数后就需要从新设置坐标轴的属性。
Hold All函数:保留当前的颜色和线型,这样在绘制后面的图形时就是用当前的颜色和线型。
这里x变换是从0—1我们通过hold on之后,就把后面的1—2的变换接上去了,效果很好。
第五章MATLAB绘图教学目标1、熟练掌握MATLAB二维图形的绘制2、了解隐函数绘图3、熟练掌握三维图形绘制4、熟练掌握各种特殊图形的绘制5.1 二维曲线图5.1.1 图形窗口简介MATLAB一向注重数据的图形表示,所有的图形窗口的开发使用都是为了让用户通过更为直观的方法直接体会数据间的含义1、figure及相关指令在MATLAB术语中,有一个显示图形窗口叫做“figure”,不同的figure命令可以用其句柄(handle)加以区分。
不带参数的figure命令用来产生一个新的figure窗口,返回其句柄。
也可以带一个整型参数:figure(H),表示打开一个新的figure窗口并且其句柄为H。
如果举兵为H的figure窗口已经存在,则此命令将它变为可见,即置于其他所有子窗口的上面,并且把它变成“当前”的figure,在这里,“当前”的含义是:以后的图形操作如果不指明figure 句柄,则都是针对这个figure进行的。
2、subplot及其相关指令MATLAB可以将窗口区域分成若干个小的窗口,每一个窗口相当于一个figure,在小窗口中可以像在整个窗口中一样进行图形的绘制工作。
完成这个工作的命令是subplot。
命令subplot(m,n,i)把图形窗口分成m×n个小图形区域,并指定第i个为图形的绘制区域。
和矩阵不同,图形区域的编排采用行优先的原则。
5.1.2 plot指令绘图1、绘制一条二维曲线MATLAB中最常用的就是plot指令,其具体调用格式为plot(x) %绘制以x为纵坐标的二维曲线plot(x,y) %绘制以x为横坐标y为纵坐标的二维曲线说明:x和y可以是向量或矩阵。
例:用plot(x)命令画直线。
x1=[1 2 3]x1 =1 2 3plot(x1)x2=[0 1 0]x2 =0 1 0plot(x2)例在0≢x≢2 区间内,绘制曲线y=2e-0.5xcos(4πx) 程序如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y)例绘制曲线程序如下:t=0:0.1:2*pi;x=t.*sin(3*t);y=t.*sin(t).*sin(t);plot(x,y);2、绘制多条二维曲线例矩阵图形的绘制,如下图所示。
第五讲MATLAB绘图第五讲 MATLAB绘图y 内容 y 画图入门 y 打印图象 y 联合作图 y 图像设置循结构(固)y 循环结构(巩固) y 目的 y 能够进行MATLAB绘图1画图入门y MATLAB的扩展性和机制独立的画图功能是一个极其重要的功能.这个功能使数据画图变得十分简单.画一个数据图, 首先要创建两个向量,由x, y构成,然后使用plot函数。
x=0:1:10; 0 1 10 y=x.^2-10*x+15; plot(x y); plot(x,y);2y 正如我们所看到的,在MATLAB中画图是十分容易的.只要任何对向量的长度相同,那么它就可以就能可视化地画出任何一对向量的长度相同来。
但是这还不是最后的结果,因为它还没有标题,坐标轴标签,网格线。
y 给图增加标题和坐标轴标签将会用到title, xlabel, ylable函数。
调用每个函数时将会有一个字符串,这个字符串包含了图象标题和坐标轴标签的信息用grid 象标题和坐标轴标签的信息。
用 id命令可使网格线出现或消失在图象中,grid on代表在图象中出现网格线,grid off代表去除网格线。
3给图增加标题和坐标轴标签将会用到title, xlabel, ylable函数。
调用每个函数时将会有一个字符串,这个字符串包含了图象标题和坐标轴标签的信息。
用grid命令可使网格线出现或消失在图象中,grid on代表在图象中出现网格线 grid 网格线, id off ff代表去除网格线。
代表去除网格线 x 0:1:10; x=0:1:10; y=x.^2-10*x+15; plot(x,y); title ('Plot of y=x.^2-10*x+15'); xlabel ('x'); ylabel l b l ('y'); (' ') grid on;4打印图象y 一个图象一旦建立,我们就可以用print命令在打印机上打印出这幅图,也可以单击图象窗口的打印图标或者在文件印出这幅图也可以单击图象窗口的打印图标或者在文件菜单中选择打印项打印。
Matlab绘图强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。
此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。
这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。
本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。
一.二维绘图二维图形是将平面坐标上的数据点连接起来的平面图形。
可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。
二维图形的绘制是其他绘图操作的基础.一.绘制二维曲线的基本函数在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。
1.plot函数的基本用法plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。
plot函数的应用格式plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。
例51 在[0 ,2pi]区间,绘制曲线程序如下:在命令窗口中输入以下命令〉〉x=0:pi/100:2*pi;>〉y=2*exp(-0。
5*x).*sin(2*pi*x);>> plot(x,y)程序执行后,打开一个图形窗口,在其中绘制出如下曲线注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。
例52 绘制曲线这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线:〉〉t=-pi:pi/100:pi;〉> x=t.*cos(3*t);>> y=t.*sin(t).*sin(t);>〉plot(x,y)程序执行后,打开一个图形窗口,在其中绘制出如下曲线以上提到plot函数的自变量x,y为长度相同的向量,这是最常见、最基本的用法。
第五章%Exercise 1x=[0 4 10 12 15 22 28 34 40];y=[0 1 3 6 8 9 5 3 0];trapz(x,y)%Exercise 2x=[0 4 10 12 15 22 28 34 40];y=[0 1 3 6 8 9 5 3 0];diff(y)./diff(x)%Exercise 3xa=-1:0.1:1;ya=0:0.1:2;[x,y]=meshgrid(xa,ya);z=x.*exp(-x.^2 -y.^3);[px,py] = gradient(z,xa,ya);px%Exercise 4t=0:0.01:1.5;x=log(cos(t));y=cos(t)-t.*sin(t);dydx=gradient(y,x)plot(x,dydx) %dydx函数图,作图观察x=-1时,dydx的值约0.9 %以下是更精确的编程计算方法[x_1,id]=min(abs(x-(-1)));%找最接近x=-1的点,id为这个点的下标dydx(id)%Exercise 5(1)fun=@(x)1/sqrt(2*pi)*exp(-x.^2/2);quadl(fun,0,1)或用trapzx=linspace(0,1,100);y=1/sqrt(2*pi)*exp(-x.^2/2);trapz(x,y)%Exercise 5(2)fun=inline('exp(2*x).*cos(x).^3');quadl(fun,0,2*pi)或用trapzx=linspace(0,2*pi,100);y=exp(2*x).*cos(x).^3;trapz(x,y)%Exercise 5(3)fun=@(x)x.*log(x.^4).*asin(1./x.^2);quadl(fun,1,3)或用trapzx=1:0.01:3;y=feval(fun,x);trapz(x,y)%Exercise 5(4)fun=@(x)sin(x)./x;quadl(fun,1e-10,1) %注意由于下限为0,被积函数没有意义,用很小的1e-10代替%Exercise 5(5)fun=inline('x.^(-x)','x');quadl(fun,1e-10,1) %注意由于下限为0,被积函数没有意义,用很小的1e-10代替%Exercise 5(6)fun=inline('sqrt(1+r.^2.*sin(th))','r','th');dblquad(fun,0,1,0,2*pi)%Exercise 5(7)%先在Editer窗口建立90页函数dblquad2,再在Command窗口clear;fun=@(x,y)1+x+y.^2;clo=@(x)-sqrt(2*x-x.^2);dhi=@(x)sqrt(2*x-x.^2);dblquad2(fun,0,2,clo,dhi,100)%Exercise 6t=linspace(0,2*pi,100);x=2*cos(t);y=3*sin(t);dx=gradient(x,t);dy=gradient(y,t);f=sqrt(dx.^2+dy.^2);trapz(t,f)%Exercise 6另一解法%先写参数方程x=2*cos(t);y=3*sin(t);%计算x'(t)=-2*sin(t),y'(t)=3*cos(t)%4*sin(t)^2+9*cos(t)^2=4+5*cos(t)^2fun=@(t)sqrt(4+5*cos(t).^2);quadl(fun,0,2*pi)%Exercise 7%先算出z的梯度dz/dx=(1-2*x^2)*exp(-x^2-y^2),dz/dy=(1-2*y^2)*exp(-x^2-y^2);%根据曲面面积公式fun=@(x,y)sqrt(1+((1-2*x.^2).*exp(-x.^2-y.^2)).^2+((1-2*y.^2)*exp(-x.^2-y.^2)).^2);dblquad(fun,-1,1,0,2)%或者用下列纯粹离散化解法xa=linspace(-1,1);ya=linspace(0,2);[x,y]=meshgrid(xa,ya);z=x.*exp(-x.^2-y.^2);[zx,zy]=gradient(z,xa,ya);f=sqrt(1+zx.^2+zy.^2);s=0;for i=2:length(xa)for j=2:length(ya)s=s+(xa(i)-xa(i-1))*(ya(j)-ya(j-1))*(f(i,j)+f(i-1,j)+f(i,j-1)+f(i-1,j-1))/4;%每个近似长方体高用四顶点平均值endends%Exercise 8funl=inline('-(-x).^0.2.*cos(x)');funr=inline('x.^0.2.*cos(x)');quadl(funl,-1,0)+quadl(funr,0,1)%Exercise 9 (以I32为例)fun=@(x)abs(sin(x));h=0.1;x=0:h:32*pi;y=feval(fun,x);t1=trapz(x,y)h=pi;x=0:h:32*pi;y=feval(fun,x);t2=trapz(x,y)%步长与周期一致,结果失真q1=quad(fun,0,32*pi)q2=quadl(fun,0,32*pi)%Exercise 10(1)先在Editer窗口建立88页函数deriv,再在Command窗口fun=inline('x.^2.*sin(x.^2+3*x-4)','x');deriv(fun,[1.3 1.5],0.1,1e-3) %取0.1为初始步长%注:书后习题答案错,1.3处导数应为2.4177,1.5处导数应为-11.3330%Exercise 10(2)%先在程序编辑器,写下列函数,保存为ex5_10_2ffunction d=ex5_10_2f(fname,a,h0,e)h=h0;d=(fname(a+h)-2*fname(a)+fname(a-h))/(h*h);d0=d+2*e;while abs(d-d0)>ed0=d;h0=h;h=h0/2;d=(fname(a+h)-2*fname(a)+fname(a-h))/(h*h);end%再在指令窗口执行fun=@(x)x.^2*sin(x.^2-x-2);d=ex5_10_2f(fun,1.4,0.1,1e-3)%Exercise 11%提示:f上升时,f'>0;f下降时,f'<0; f极值,f'=0.%Exercise 12在程序编辑器,写下列函数,保存为ex5_12function I=ex5_12(fname,a,b,n)h=(b-a)/n;x=a:h:b;f=fname(x);I=f(1)+f(n+1);for i=2:nif i-2*floor(i/2)==0I=I+4*f(i);elseI=I+2*f(i);endendI=h/3*I;%再在指令窗口执行ex5_12(inline('1/sqrt(2*pi)*exp(-x.^2/2)'),0,1,50) %注:原题n=5改为偶数n=50%更加符合Matlab风格的编程ex5_12function I=ex5_12f(fname,a,b,n)x=linspace(a,b,n+1);f=fname(x);I=(b-a)/n/3*(f(1)+f(n+1)+2*sum(f(3:2:n))+4*sum(f(2:2:n)));%Exercise 13fun=inline('5400*v./(8.276*v.^2+2000)','v');quadl(fun,15,30)%Exercise 14重心不超过凳边沿。