实验二 MATLAB绘制图形 (一) 实验类型:验证性 (二) 实验类别:基础实验 (三) 实验学时数:2学时 .
实验内容 一、二维图形 二、三维图形
(1) plot函数 一、二维图形 1、 基本二维绘图命令 plot(x):缺省自变量的绘图格式,x可为向量或矩阵. 当x为实矩阵时,按列绘制曲线,每列的元素值为纵坐标,相应元素下标为横坐标. 当x为m×n矩阵时,就有n条曲线.
例1 x为向量时, plot(x) clear x=[3 5 7 6 12 24 15 33 6 9 7 2]; plot(x)
(2)plot(x,y): 基本格式,x和y可为向量或矩阵. 1. 如果x,y是同维向量,以x元素为横坐标,以y元素为纵坐标绘图. 2. 如果x是向量,y是有一维与x元素数量相等的矩阵,则以x为共同横坐标, y元素为纵坐标绘图,曲线数目为y的另一维数. 3. 如果x,y是同维矩阵,则按列以x,y对应列元素为横、纵坐标绘图,曲线数目等于矩阵列数.
例2 x,y是同维向量时, plot(x,y) clear x=(0:pi/10:2*pi); y=sin(x); plot(x,y)
例3 在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)
例4 绘制曲线 t=(0:0.1:2*pi); x=t.*sin(3*t); y=t.*sin(t).*sin(t); plot(x,y)
2、多条曲线绘图格式 plot(x1, y1, x2, y2,…):.在同一坐标系中绘制多个图形,以x1,x2…元素为横坐标值, 对应的y1,y2…元素为纵坐标绘图。 注; x=linspace(0,7) %在0到7之间等分取100个分点 例5 程序如下: clear %可不写 x=linspace(0,7); y1=sin(2*x); y2=sin(x.^2); y3=(sin(x)).^2; plot(x,y1,x,y2,x,y3)
例6 分析下列程序绘制的曲线. x1=linspace(0,2*pi); x2=linspace(0,3*pi); x3=linspace(0,4*pi); y1=sin(x1); y2=1+sin(x2); y3=2+sin(x3); x=[x1;x2;x3]'; y=[y1;y2;y3]'; plot(x,y,x1,y1-1)
3、 函数plot(x,y,’s’) plot(x,y,’s’) ---开关格式,开关量字符串s设定曲线颜色、线型及标示符号,由一对单引号括起来. plot(x1,y1,’s1’,x2,y2,’s2’,…)
图形颜色、标记和线形参数表 色彩字符 所定颜色 线型字符 线型格式 标记符号 数据点形式 y 黄 - 实线(默认) . 点 < 左三角形 m 紫 : 点线 o 圆 s 方形 c 青 -. 点划线 x 叉号 d 菱形 r 红 -- 虚线 + 加号 h 六角星 g 绿 * 星号 p 五角星 b 篮 v 下三角形 w 白 ^ 上三角形 k 黑 > 右三角形
数据点形式 square 方形 diamond 菱形 pentagram 五角星 hexagram 六角星
例7 >> x=linspace(0,7); >> y1=sin(2*x); %曲线1:红色实线,+号显示数据点 >> plot(x, y1, 'r+-', x, y2, 'k*:', x, y3, 'b--^')
2、对函数自适应采样的绘图函数 fplot指令 用来自动画一个已定义的函数分布图,而无须产生绘图所要的一组数据做为变量.采用自适应步长控制来画出函数的示意图,在函数变化激烈的区间,采用小的步长,否则采用大的步长.总之,使计算量与时间最小,图形尽可能精确.
fplot函数调用格式: fplot(fname,lims,tol,选项) 其中fname为函数名,以字符串形式出现,lims为x,y的取值范围,tol为相对允许误差,其系统默认值为2e-3. 选项定义与plot函数相同.
例8 用fplot函数绘制f(x)=cos(tan(πx))的曲线. 程序如下: fplot('cos(tan(pi*x))',[ 0,1],1e-4)
subplot函数调用格式: subplot(m,n,p) 3、图形窗口的分割 subplot函数调用格式: subplot(m,n,p) 该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区. 在每一个绘图区允许以不同的坐标系单独绘制图形.
采用图形窗口分割方法进行比较显示 clear t=0:pi/10:2*pi; y1=sin(t);y2=cos(t);y3=cos(t+pi/2);y4=cos(t+pi); subplot(2,2,1); plot(t,y1); %将图形窗口分割成两行两列,y1为第1行第1列 subplot(2,2,2); plot(t,y2); %将图形窗口分割成两行两列,y2为第1行第2列 subplot(2,2,3); plot(t,y3); %将图形窗口分割成两行两列,y3为第2行第1列 subplot(2,2,4); plot(t,y4); %将图形窗口分割成两行两列,y4为第2行第2列
绘制图形如下
4、特殊的二维函数命令 其它坐标系下的二维数据曲线图 1)对数坐标 绘制对数和半对数坐标曲线的函数, 其调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…)
例9 在对数坐标系中绘图. clear x=logspace(-1,2); %在10^(-1)到10^2之间产生50个对数等分的行向量 subplot(1,2,1); loglog(x,10*exp(x),'-p') grid on %在所画出的图形坐标中加入栅格 subplot(1,2,2); semilogx(x,cos(10.^x)) grid on %在所画出的图形坐标中加入栅格
绘制图形如下
如果在图中不加栅格 程序如下: clear x=logspace(-1,2);%在10^(-1)到10^2之间产生50个 对数等分的行向量 subplot(121); loglog(x,10*exp(x),'-p') subplot(122); semilogx(x,cos(10.^x)) 绘制图形如下:
2)极坐标图 polar函数用来绘制极坐标图, 其调用格式: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标半径,选项的内容与plot函数相似
例10 绘制r=sin(t)cos(t)的极坐标图,并标记数据点. 程序如下: t=0:pi/50:2*pi; r=sin(t).*cos(t); polar(t,r,'-*');
例11 画出一花瓣状图形 theta = (-pi:0.01:pi); rho(1,:) = 2*sin(5*theta).^2; rho(2,:) = cos(10*theta).^3; rho(3,:) = sin(theta).^2; rho(4,:) = 5*cos(3.5*theta).^3; for i = 1:4 % 极坐标图形输出函数 polar(theta,rho(i,:)) pause end
3)设定轴的范围axis([xmin xmax ymin ymax]) 4)文字标示 text(x, y, s); %指定位置加标注 gtext(‘字符串’) %利用鼠标在图形的某一位置标示 字符串. title(‘字符串’) %在所画图形的最上端显示说明该图 形标题的字符串. xlabel(‘字符串’),ylabel(‘字符串’) %设置x,y坐标 轴 的名称. axis square %将图形设置为正方形
5)legend(‘字符串1’,‘字符串2’,…,‘字符串n’) 在屏幕上开启一个小视窗,然后依据绘图命令 的先后次序,用对应的字符串区分图形上的线. 6)surf(x,y.z.c)绘制表面图和亮度
5、 图形修饰与控制 title —— 给图形加标题 xlable —— 给x轴加标注 ylable —— 给y轴加标注 text —— 在图形指定的任意位置加标注 gtext —— 利用鼠标将标注加到图形任意位置 grid on —— 打开坐标网格线 grid off——关闭坐标网格线 legend —— 添加图例 axis —— 控制坐标轴刻度
axis square %将图形设置为正方形 例12 绘制正弦和余弦曲线,并加入网格和标注 t=(0:0.1:10); y1=sin(t); y2=cos(t); plot(t,y1,'r',t,y2,'b--'); x=[1.7*pi;1.6*pi]; y=[-0.3; 0.7]; s=['sin(t)';'cos(t)']; text(x, y, s); %指定位置加标注 title('正弦和余弦曲线'); %标题 legend('正弦','余弦') %添加图例注解 xlabel('时间') %x坐标名 ylabel('正弦&余弦') %y坐标名 grid on %添加网格 axis square %将图形设置为正方形
6、采用hold函数对图形进行比较显示 clear t=0:pi/10:2*pi; y1=sin(t); y2=cos(t); y3= sin(t)-cos(t); plot(t,y1); hold on; %后续图形叠加显示 plot(t,y2); hold on; plot(t,y3);
二、三维图形 1、 基本的三维绘图命令 plot3函数可以绘制三维曲线: 1、 基本的三维绘图命令 三维曲线图 plot3函数可以绘制三维曲线: plot3(x1, y1, z1, 's1', x2, y2, z2, 's2'…) 例13 函数plot3绘制的三维曲线图 clear t=0:pi/50:10*pi; plot3(t,sin(t),cos(t),'r:') grid on %添加网格
三维网格图 三维曲面图 mesh函数为数据点绘制网格线: mesh(z) —— z为n×m的矩阵,x与y坐标为元素的下标位置 mesh(x, y, z) —— x, y, z分别为三维空间的坐标位置 三维曲面图 三维曲面的绘图是由surf函数完成的,用法和mesh类似。
z = 3*(1-x).^2.*exp(-(x.^2) (y+1).^2) ... 注: peaks(40); %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)
例14 分别用mesh函数和surf函数绘制高斯矩阵 clear z=peaks(40); %peaks可产生一个凹凸有致的曲面 mesh(z); % 网格线 figure; %产生新的图形窗口 surf(z) %着色表面图
观察点 clear z=peaks(40); subplot(2,2,1); mesh(z);%绘制子图1(默认视点) view(-15,60); %指定子图2的视点 subplot(2,2,3); view(-90,0); %指定子图3的视点 subplot(2,2,4); view(-7,-10) %指定子图4的视点
例15 peaks(40); shading interp;%曲面的颜色更加柔顺平滑 colormap(hot) %涂颜色
例16 peaks(40); colormap(hot); colorbar('horiz') ; figure(2); colormap(cool); colorbar('horiz')加水平颜色条.
例17 绘制三维球面 [x,y,z]=sphere(30);%30是画出来的球面的经纬分面数...30的话就是30个经度, 30个纬度 surf(x,y,z); %着色表面图
例18 绘出对数函数 的图形. 【Matlab源程序】 z=cplxgrid(20); w=log(z); for k=0:3 w=w+i*2*pi; surf(real(z),imag(z),imag(w),real(w)); hold on title('Lnz') end view(-75,30) 绘图结果如下:
例19 研究电偶极子(Diploe)所产生的电势和电场强度. 设在 处有电荷 ,在 处有电荷 则在电荷 所在平面上任何一点的电势为 ,其中 【Matlab源程序】 根据解析函数理论中求复势的方法,可由等势线求出 电力线方程. 下面给出计算机仿真方法求解:仿真(MATLAB) 程序和仿真结果
clear ; clf;q=2e-6;k=9e9;a=1.5;b=-1.5;x=-6:0.6:6;y=x; [X,Y]=meshgrid(x,y); rp=sqrt((X-a).^2+(Y-b).^2); rm=sqrt((X+a).^2+(Y+b).^2); V=q*k*(1./rp-1./rm); % 计算电势 [Ex,Ey]=gradient(-V); %计算电场强度 AE=sqrt(Ex.^2+Ey.^2);Ex=Ex./AE;Ey=Ey./AE; %场强归一化 cv=linspace(min(min(V)),max(max(V)),49); %用黑实线绘等势线 contour (X,Y,V,cv,'k-') %axis('square') title('\fontname{宋体}\fontsize{22}电偶极子的场和等势线'),hold on quiver(X,Y,Ex,Ey,0.7) plot(a,b,'wo',a,b,'w+') plot(-a,-b,'wo',-a,-b,'w-') xlabel('x'); ylabel('y'),hold off
结果如图:
作业:写出以下各题实验报告. 1、用plot命令绘制下列函数曲线图像. 2、用plot命令在同一坐标下绘制下列函数曲线图像.
3、 在0≤x≤2区间内,用fplot函数绘制下列函数 曲线图像。