Upload
evan-jimenez
View
115
Download
9
Embed Size (px)
DESCRIPTION
实验二 MATLAB 绘制图形. (一) 实验类型:验证性 (二) 实验类别:基础实验 (三) 实验学时数: 2 学时. 实验内容. 一、二维图形. 二、三维图形. 一、二维图形 1 、 基本二维绘图命令 (1) plot 函数 plot(x) :缺省自变量的绘图格式, x 可为向量或矩阵 . 当 x 为向量时,以 x 元素值为纵坐标,以相应元素下标为横坐标绘图 . 当 x 为实矩阵时,按列绘制曲线,每列的元素值为纵坐标,相应元素下标为横坐标 . 当 x 为 m×n 矩阵时,就有 n 条曲线. 例 1 x 为向量时 , plot(x) clear - PowerPoint PPT Presentation
Citation preview
实验二 MATLAB 绘制图形
(一) 实验类型:验证性(二) 实验类别:基础实验(三) 实验学时数: 2 学时.
一、二维图形
实验内容
二、三维图形
一、二维图形
1 、 基本二维绘图命令
(1) plot 函数
plot(x) :缺省自变量的绘图格式, x 可为向量或矩阵 .
当 x 为向量时,以 x 元素值为纵坐标,以相应元素下标为横坐标绘图 .
当 x 为实矩阵时,按列绘制曲线,每列的元素值为纵坐标,相应元素下标为横坐标 . 当 x 为 m×n 矩阵时,就有 n 条曲线 .
例 1 x 为向量时 , plot(x)clearx=[3 5 7 6 12 24 15 33 6 9 7 2];plot(x)
0 2 4 6 8 10 120
5
10
15
20
25
30
35
( 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)
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
例 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)
0 1 2 3 4 5 6 7-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
例 4 绘制曲线t=(0:0.1:2*pi);x=t.*sin(3*t);y=t.*sin(t).*sin(t);plot(x,y)
-6 -4 -2 0 2 4 60
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
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)
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
例 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)
0 2 4 6 8 10 12 14-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
3
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 :红色实线, + 号显示数据点>> y2=sin(x.^2); % 曲线 2 :黑色点线, * 号显示数据点>> y3=(sin(x)).^2; % 曲线 3 :蓝色虚线,上三角形显示数据
点>> plot(x, y1, 'r+-', x, y2, 'k*:', x, y3, 'b--^')
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
2 、对函数自适应采样的绘图函数
fplot 指令 用来自动画一个已定义的函数分布图,而无须
产生绘图所要的一组数据做为变量 . 采用自适应步长控制来画出函数的示意图,在函数变化激烈的区间,采用小的步长,否则采用大的步长 . 总之,使计算量与时间最小,图形尽可能精确 .
fplot 函数调用格式:
fplot(fname,lims,tol, 选项 )
其中 fname 为函数名,以字符串形式出现, lims 为 x,y 的取值范围, tol 为相对允许误差,其系统默认值为 2e-3. 选项定义与 plot 函数相同 .
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
例 8 用 fplot 函数绘制 f(x)=cos(tan(πx)) 的曲线 .
程序如下:
fplot('cos(tan(pi*x))',[ 0,1],1e-4)
subplot 函数调用格式:
subplot(m,n,p)
该函数将当前图形窗口分成 m×n 个绘图区,即每行 n 个,共 m 行,区号按行优先编号,且选定第 p个区为当前活动区 . 在每一个绘图区允许以不同的坐标系单独绘制图形 .
3 、图形窗口的分割
采用图形窗口分割方法进行比较显示 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 列
0 2 4 6 8-1
-0.5
0
0.5
1
0 2 4 6 8-1
-0.5
0
0.5
1
0 2 4 6 8-1
-0.5
0
0.5
1
0 2 4 6 8-1
-0.5
0
0.5
1
绘制图形如下
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 % 在所画出的图形坐标中加入栅格
10-2
100
102
100
1010
1020
1030
1040
1050
10-2
100
102
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
绘制图形如下
clearx=logspace(-1,2);% 在 10^(-1) 到 10^2 之间产生 50 个对数等分的行向量subplot(121);loglog(x,10*exp(x),'-p')subplot(122);semilogx(x,cos(10.^x))
如果在图中不加栅格程序如下:
绘制图形如下:
10-2
100
102
100
1010
1020
1030
1040
1050
10-2
100
102
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
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,'-*');
0.1
0.2
0.3
0.4
0.5
30
210
60
240
90
270
120
300
150
330
180 0
例 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,:)) pauseend
0.5
1
1.5
2
30
210
60
240
90
270
120
300
150
330
180 0
3 )设定轴的范围 axis ( [xmin xmax ymin ymax] )4 )文字标示
gtext(‘ 字符串’ ) %利用鼠标在图形的某一位置标示字符串 .
title(‘ 字符串’ ) %在所画图形的最上端显示说明该图形标题的字符串 .
xlabel(‘ 字符串’ ) , ylabel(‘ 字符串’ ) %设置 x , y 坐标轴 的名称 .
text(x, y, s); %指定位置加标注
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 —— 控制坐标轴刻度
例 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 % 将图形设置为正方
形
0 2 4 6 8 10-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
sin(t)
cos(t)
正 弦 和 余 弦 曲 线
时 间
&正
弦余
弦
正 弦余 弦
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);
0 1 2 3 4 5 6 7-1.5
-1
-0.5
0
0.5
1
1.5
二、三维图形 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 % 添加网格0
1020
3040
-1
-0.5
0
0.5
1-1
-0.5
0
0.5
1
三维网格图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) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)
peaks(40); %peaks 可产生一个凹凸有致的曲面
注:
其方程式为:
例 14 分别用 mesh 函数和 surf 函数绘制高斯矩阵
clear
z=peaks(40); %peaks 可产生一个凹凸有致的曲面 mesh(z); % 网格线 figure; % 产生新的图形窗口 surf(z) % 着色表面图
观察点clearz=peaks(40);subplot(2,2,1); mesh(z);% 绘制子图 1 (默认视点)subplot(2,2,2);mesh(z);view(-15,60); % 指定子图 2 的视点subplot(2,2,3);mesh(z);view(-90,0); % 指定子图 3 的视点subplot(2,2,4);mesh(z);view(-7,-10) % 指定子图 4 的视点
010
2030
40
0
10
20
30
40-10
-5
0
5
10
0 5 10 15 20 25 30 35 40
0
10
20
30
40
-10
0
10
0510152025303540-8
-6
-4
-2
0
2
4
6
8
10
0 5 10 15 20 25 30 35 40
0
20
40-8
-6
-4
-2
0
2
4
6
8
10
例 15 peaks(40); shading interp;% 曲面的颜色更加柔顺平滑 colormap(hot) % 涂颜色
-3-2
-10
12
3
-2
0
2
-5
0
5
x
Peaks
y
例 16 peaks(40);colormap(hot);colorbar('horiz') ;figure(2);colormap(cool);colorbar('horiz') 加水平颜色条 .
-3-2
-10
12
3
-2
0
2
-5
0
5
x
Peaks
y
-6 -4 -2 0 2 4 6
例 17 绘制三维球面[x,y,z]=sphere(30);%30 是画出来的球面的经纬分面数 ...30 的话就是 30 个经度 , 30 个纬度 surf(x,y,z); % 着色表面图
-1-0.5
00.5
1
-1
-0.5
0
0.5
1-1
-0.5
0
0.5
1
例 18 绘出对数函数 Lnz的图形 .【 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) 所产生的电势和电场强度 .设在 ( , )a b 处有电荷 则在电荷q , 在 ( , )a b 处有电荷 q
所在平面上任何一点的电势为
0
1 1( )
2π
qV
r r
,其中
2 2 2 2 9
0
1( ) ( ) , ( ) ( ) , 9 10 ,
4πr x a y b r x a y b
62 10 , 1.5, 1.5q a b 【 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,2
,tan
xy
2 、用 plot命令在同一坐标下绘制下列函数曲线图像 .
22 )(cos,cos,2cos,cos xyxyxyxy
3 、 在 0≤x≤2 区间内,用 fplot 函数绘制下列函数 曲线图像。
)4cos(2 5.0 xey x