49
实实实 MATLAB 实实实实 实实实实 实实实 (一) 实实实实实 实实实实 (): 实实实实实实 (): 2 实实 .

实验二 MATLAB 绘制图形

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

Page 1: 实验二  MATLAB 绘制图形

实验二 MATLAB 绘制图形

(一) 实验类型:验证性(二) 实验类别:基础实验(三) 实验学时数: 2 学时.

Page 2: 实验二  MATLAB 绘制图形

一、二维图形

实验内容

二、三维图形

Page 3: 实验二  MATLAB 绘制图形

一、二维图形

1 、 基本二维绘图命令

(1) plot 函数

plot(x) :缺省自变量的绘图格式, x 可为向量或矩阵 .

当 x 为向量时,以 x 元素值为纵坐标,以相应元素下标为横坐标绘图 .

当 x 为实矩阵时,按列绘制曲线,每列的元素值为纵坐标,相应元素下标为横坐标 . 当 x 为 m×n 矩阵时,就有 n 条曲线 .

Page 4: 实验二  MATLAB 绘制图形

例 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

Page 5: 实验二  MATLAB 绘制图形

( 2) plot(x,y) :

基本格式, x 和 y 可为向量或矩阵 .

1. 如果 x , y 是同维向量,以 x 元素为横坐标,以 y

元素为纵坐标绘图 .

2. 如果 x 是向量, y 是有一维与 x 元素数量相等的矩阵,则以 x 为共同横坐标, y 元素为纵坐标绘图,曲线数目为 y 的另一维数 .

3. 如果 x , y 是同维矩阵,则按列以 x , y 对应列元素为横、纵坐标绘图,曲线数目等于矩阵列数 .

Page 6: 实验二  MATLAB 绘制图形

例 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

Page 7: 实验二  MATLAB 绘制图形

例 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

Page 8: 实验二  MATLAB 绘制图形

例 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

Page 9: 实验二  MATLAB 绘制图形

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

Page 10: 实验二  MATLAB 绘制图形

例 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)

Page 11: 实验二  MATLAB 绘制图形

0 2 4 6 8 10 12 14-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

2.5

3

Page 12: 实验二  MATLAB 绘制图形

3 、 函数 plot(x,y,’s’)

plot(x,y,’s’) --- 开关格式,开关量字符串 s 设定曲线颜色、线型及标示符号,由一对单引号括起来 .

plot(x1,y1,’s1’,x2,y2,’s2’,…)

Page 13: 实验二  MATLAB 绘制图形

图形颜色、标记和线形参数表色彩字符 所定颜

色线型字

符线型格式 标记符号 数据点形式 标记符

号数据点形式

y 黄 - 实线(默认)

. 点 < 左三角形

m 紫 : 点线 o 圆 s 方形

c 青 -. 点划线 x 叉号 d 菱形

r 红 -- 虚线 + 加号 h 六角星

g 绿 * 星号 p 五角星

b 篮 v 下三角形

w 白 ^ 上三角形

k 黑 > 右三角形

Page 14: 实验二  MATLAB 绘制图形

数据点形式

square 方形

diamond 菱形

pentagram 五角星

hexagram 六角星

Page 15: 实验二  MATLAB 绘制图形

例 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

Page 16: 实验二  MATLAB 绘制图形

2 、对函数自适应采样的绘图函数

fplot 指令 用来自动画一个已定义的函数分布图,而无须

产生绘图所要的一组数据做为变量 . 采用自适应步长控制来画出函数的示意图,在函数变化激烈的区间,采用小的步长,否则采用大的步长 . 总之,使计算量与时间最小,图形尽可能精确 .

Page 17: 实验二  MATLAB 绘制图形

fplot 函数调用格式:

fplot(fname,lims,tol, 选项 )

其中 fname 为函数名,以字符串形式出现, lims 为 x,y 的取值范围, tol 为相对允许误差,其系统默认值为 2e-3. 选项定义与 plot 函数相同 .

Page 18: 实验二  MATLAB 绘制图形

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)

Page 19: 实验二  MATLAB 绘制图形

subplot 函数调用格式:

subplot(m,n,p)

该函数将当前图形窗口分成 m×n 个绘图区,即每行 n 个,共 m 行,区号按行优先编号,且选定第 p个区为当前活动区 . 在每一个绘图区允许以不同的坐标系单独绘制图形 .

3 、图形窗口的分割

Page 20: 实验二  MATLAB 绘制图形

采用图形窗口分割方法进行比较显示 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 列

Page 21: 实验二  MATLAB 绘制图形

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

绘制图形如下

Page 22: 实验二  MATLAB 绘制图形

4 、特殊的二维函数命令

其它坐标系下的二维数据曲线图

1 )对数坐标

绘制对数和半对数坐标曲线的函数,

其调用格式为:

semilogx(x1,y1, 选项 1,x2,y2, 选项 2,…)

semilogy(x1,y1, 选项 1,x2,y2, 选项 2,…)

loglog(x1,y1, 选项 1,x2,y2, 选项 2,…)

Page 23: 实验二  MATLAB 绘制图形

例 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 % 在所画出的图形坐标中加入栅格

Page 24: 实验二  MATLAB 绘制图形

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

绘制图形如下

Page 25: 实验二  MATLAB 绘制图形

clearx=logspace(-1,2);% 在 10^(-1) 到 10^2 之间产生 50 个对数等分的行向量subplot(121);loglog(x,10*exp(x),'-p')subplot(122);semilogx(x,cos(10.^x))

如果在图中不加栅格程序如下:

绘制图形如下:

Page 26: 实验二  MATLAB 绘制图形

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

Page 27: 实验二  MATLAB 绘制图形

2 )极坐标图

polar 函数用来绘制极坐标图,

其调用格式:

polar(theta,rho, 选项 )

其中 theta 为极坐标极角, rho 为极坐标半径,选项的内容与 plot 函数相似

Page 28: 实验二  MATLAB 绘制图形

例 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

Page 29: 实验二  MATLAB 绘制图形

例 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

Page 30: 实验二  MATLAB 绘制图形

3 )设定轴的范围 axis ( [xmin xmax ymin ymax] )4 )文字标示

gtext(‘ 字符串’ ) %利用鼠标在图形的某一位置标示字符串 .

title(‘ 字符串’ ) %在所画图形的最上端显示说明该图形标题的字符串 .

xlabel(‘ 字符串’ ) , ylabel(‘ 字符串’ ) %设置 x , y 坐标轴 的名称 .

text(x, y, s); %指定位置加标注

axis square % 将图形设置为正方形

Page 31: 实验二  MATLAB 绘制图形

5 ) legend(‘ 字符串 1’,‘ 字符串 2’,…,‘ 字符串 n’)

在屏幕上开启一个小视窗,然后依据绘图命令

的先后次序,用对应的字符串区分图形上的线 .   

6 ) surf ( x,y.z.c )绘制表面图和亮度

Page 32: 实验二  MATLAB 绘制图形

5 、 图形修饰与控制title —— 给图形加标题

xlable —— 给 x 轴加标注

ylable —— 给 y 轴加标注

text —— 在图形指定的任意位置加标注

gtext —— 利用鼠标将标注加到图形任意位置

grid on —— 打开坐标网格线

grid off—— 关闭坐标网格线

legend —— 添加图例

axis —— 控制坐标轴刻度

Page 33: 实验二  MATLAB 绘制图形

例 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)

正 弦 和 余 弦 曲 线

时 间

&正

弦余

正 弦余 弦

Page 34: 实验二  MATLAB 绘制图形

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

Page 35: 实验二  MATLAB 绘制图形

二、三维图形 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

Page 36: 实验二  MATLAB 绘制图形

三维网格图mesh 函数为数据点绘制网格线:mesh(z) —— z 为 n×m 的矩阵, x 与 y 坐标为元素的下标位置mesh(x, y, z) —— x, y, z 分别为三维空间的坐标位置

三维曲面图三维曲面的绘图是由 surf 函数完成的,用法和 mesh 类似。

Page 37: 实验二  MATLAB 绘制图形

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 可产生一个凹凸有致的曲面

注:

其方程式为:

Page 38: 实验二  MATLAB 绘制图形

例 14 分别用 mesh 函数和 surf 函数绘制高斯矩阵

clear

z=peaks(40); %peaks 可产生一个凹凸有致的曲面 mesh(z); % 网格线 figure; % 产生新的图形窗口 surf(z) % 着色表面图

Page 39: 实验二  MATLAB 绘制图形

观察点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

Page 40: 实验二  MATLAB 绘制图形

例 15 peaks(40); shading interp;% 曲面的颜色更加柔顺平滑 colormap(hot) % 涂颜色

-3-2

-10

12

3

-2

0

2

-5

0

5

x

Peaks

y

Page 41: 实验二  MATLAB 绘制图形

例 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

Page 42: 实验二  MATLAB 绘制图形

例 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

Page 43: 实验二  MATLAB 绘制图形

例 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)

绘图结果如下:

Page 44: 实验二  MATLAB 绘制图形
Page 45: 实验二  MATLAB 绘制图形

例 19 研究电偶极子 (Diploe) 所产生的电势和电场强度 .设在 ( , )a b 处有电荷 则在电荷q , 在 ( , )a b 处有电荷 q

所在平面上任何一点的电势为

0

1 1( )

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) 程序和仿真结果

Page 46: 实验二  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

Page 47: 实验二  MATLAB 绘制图形

结果如图:

Page 48: 实验二  MATLAB 绘制图形

1 、用 plot命令绘制下列函数曲线图像 .

作业:写出以下各题实验报告 .

2,2

,tan

xy

2 、用 plot命令在同一坐标下绘制下列函数曲线图像 .

22 )(cos,cos,2cos,cos xyxyxyxy

Page 49: 实验二  MATLAB 绘制图形

3 、 在 0≤x≤2 区间内,用 fplot 函数绘制下列函数 曲线图像。

)4cos(2 5.0 xey x