数学建模及其基于 MATLAB的实现辽宁工程技术大学理学院应用数学系数学建模简介二维图形 三维图形 图形处理实例作业特殊二、三维图形
Matlab作图是通过描点、连线来实现的,故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标和纵坐标),然后将该点集的坐标传给 Matlab函数画图,命令为:
PLOT(X,Y,S)
PLOT(X,Y)--画实线
PLOT(X,Y1,S1,X,Y2,S2,……,X,Yn,Sn)
--将多条线画在一起
X,Y是向量,分别表示点集的横坐标和纵坐标线型
y 黄色,点 - 连线
m 洋红 o 圈,短虚线
c 蓝绿色 x x-符号
-,长短线 r 红色
+ 加号 -- 长虚线
1.曲线图例 在 [0,2*pi]用红线画 sin(x),用绿圈画 cos(x),
x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,'r',x,z,’g0')

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
Matlab liti1
2.符号函数 (显函数、隐函数和参数方程 )画图
(1) ezplot
ezplot(‘x(t)’,’y(t)’,[tmin,tmax])
表示在区间 tmin<t<tmax绘制参数方程
x=x(t),y=y(t)的函数图
ezplot(‘f(x)’,[a,b])
表示在 a<x<b绘制显函数 f=f(x)的函数图
ezplot(‘f(x,y)’,[xmin,xmax,ymin,ymax])
表示在区间 xmin<x<xmax和 ymin<y<ymax绘制隐函数 f(x,y)=0的函数图例 在 [0,pi]上画 y=cos(x)的图形解 输入命令
ezplot(‘sin(x)’,[0,pi]) Matlab liti25
解 输入命令
ezplot(‘cos(t)^3’,’sin(t)^3’,[0.2*pi])
Matlab liti41
例 在 [ - 2,0,5 ],[0,2] 上画隐函数 0)s i n ( xye x 的图解 输入命令
ezplot('exp(x)+sin(x*y)',[-2,0.5,0,2])
Matlab liti40
例 在 [ 0,2 * p i ] 上画 tx 3c o s?,ty 3s i n? 星形图
(2) fplot
注意:
[1] fun必须是 M文件的函数名或是独立变量为
x的字符串,
[2] fplot函数不能画参数方程和隐函数图形,
但在一个图上可以画多个图形。
fplot(‘fun’,lims)
表示绘制字符串 fun指定的函数在
lims=[xmin,xmax]的图形,
例 在 [ - 1,2] 上画 )3s i n ( 22 xey x 的 图形解 先建 M文件 myfun1.m:
function Y=myfun1(x)
Y=exp(2*x)+sin(3*x.^2)
再输入命令:
fplot(‘myfun1’,[-1,2])
Matlab liti43
例 x,y 的取值范围都在 [ -?2,?2 ],
画函数 t a n h ( x ),s i n ( x ),c o s ( x ) 的图形
Matlab liti28
解 输入命令,
fplot(‘[tanh(x),sin(x),cos(x)]’,2*pi*[-1 1 –1 1])
例 在 [-2,2]范围内绘制函数 tanh的图形解 fplot(‘tanh’,[-2,2])
Matlab liti42
3,对数坐标图在很多工程问题中,通过对数据进行对数转换可以更清晰地看出数据的某些特征,在对数坐标系中描绘数据点的曲线,可以直接地表现对数转换,对数转换有双对数坐标转换和单轴对数坐标转换两种,用 loglog函数可以实现双对数坐标转换,用 semilogx和 semilogy函数可以实现单轴对数坐标转换,
loglog(Y) 表示 x,y坐标都是对数坐标系
semilogx(Y) 表示 x坐标轴是对数坐标系
semilogy(…) 表示 y坐标轴是对数坐标系
plotyy 有两个 y坐标轴,一个在左边,一个在右边例 用方形标记创建一个简单的 loglog
解 输入命令,
x=logspace(-1,2);
loglog(x,exp(x),’-s’)
grid on %标注格栅
Matlab liti37
例 创建一个简单的半对数坐标图解 输入命令,
x=0:.1:10;
semilogy(x,10.^x)
Matlab liti38
例 绘制 y=x3的函数图、对数坐标图、半对数坐标图
Matlab liti22 返回三维图形
1,空间曲线
2,空间曲面返回
PLOT3(x,y,z,s)
空 间 曲 线
1,一条曲线例 在区间 [0,10*pi]画出参数曲线 x=sin(t),y=cos(t),
z=t,
Matlab liti8
解 t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
rotate3d %旋转
n维向量,分别表示曲线上点集的横坐标、纵坐标、函数值指定颜色、
线形等
PLOT3(x,y,z)
2,多条曲线例 画多条曲线观察函数 Z=(X+Y).^2,
(这里 meshgrid(x,y)的作用是产生一个以向量 x为行、向量 y
为列的矩阵)
Matlab liti9
其中 x,y,z是都是 m*n矩阵,其对应的每一列表示一条曲线,
解 x=-3:0.1:3;y=1:0.1:5;
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
plot3(X,Y,Z)
返回空 间 曲 面例 画函数 Z=(X+Y).^2的图形,
解 x=-3:0.1:3;
y=1:0.1:5;
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
surf(X,Y,Z)
shading flat %将当前图形变得平滑
Matlab liti11
(1) surf(x,y,z) 画出数据点( x,y,z)表示的曲面数据矩阵。分别表示数据点的横坐标、纵坐标、函数值
( 2) Mesh(x,y,z)
解 x=-3:0.1:3; y=1:0.1:5;
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
mesh(X,Y,Z)
Matlab liti24
例 画出曲面 Z=(X+Y).^2在不同视角的网格图,
画网格曲面数据矩阵。分别表示数据点的横坐标、纵坐标、函数值
(3)meshz(X,Y,Z) 在网格周围画一个 curtain图 (如,参考平面 )
解 输入命令,
[X,Y]=meshgrid(-3:.125:3);
Z=praks(X,Y);
Meshz(X,Y,Z)
例 绘 peaks的网格图
Matlab liti36
返回在图形上加格栅、图例和标注定制坐标图形保持分割窗口缩放图形改变视角图形处理返回动 画
1、在图形上加格栅、图例和标注
( 1) GRID ON,加格栅在当前图上
GRID OFF,删除格栅处理图形
( 2) hh = xlabel(string),在当前图形的 x轴上加图例 string
hh = ylabel(string),在当前图形的 y轴上加图例 string
hh = title(string),在当前图形的顶端上加图例 string
hh = zlabel(string),在当前图形的 z轴上加图例 string
例 在区间 [0,2*pi]画 sin(x)的图形,并加注图例“自变量
X”、“函数 Y”、“示意图”,并加格栅,
解 x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y)
xlabel('自变量 X')
ylabel('函数 Y')
title('示意图 ')
grid on
Matlab liti2
( 3) hh = gtext(‘string’)
命令 gtext(‘string’)用鼠标放置标注在现有的图上,
运行命令 gtext(‘string’)时,屏幕上出现当前图形,在图形上出现一个交叉的十字,该十字随鼠标的移动移动,
当按下鼠标左键时,该标注 string放在当前十交叉的位置,
例 在区间 [0,2*pi]画 sin(x),并分别标注,sin(x)”
”cos(x)”.
解 x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,x,z)
gtext(‘sin(x)’);gtext(’cos(x)’)
Matlab liti3
返回
2、定制坐标
Axis([xmin xmax ymin ymax zmin zmax])
例 在区间 [0.005,0.01]显示 sin(1/x)的图形。
解 x=linspace(0.0001,0.01,1000);
y=sin(1./x);
plot(x,y)
axis([0.005 0.01 –1 1])
Matlab liti4
返回定制图形坐标将坐标轴返回到自动缺省值Axis auto
x,y,z的最大、最小值
3、图形保持
(1) hold on
hold of
例 将 y=sin(x),y=cos(x)分别用点和线画出在同一屏幕上。
解 x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x)
plot(x,z,:)
hold on
Plot(x,y)
Matlab liti5
保持当前图形,以便继续画图到当前图上释放当前图形窗口
(2) figure(h)
例 区间 [0,2*pi]新建两个窗口 分别画出 y=sin(x);
z=cos(x)。
解 x=linspace(0,2*pi,100);
y=sin(x);z=cos(x);
plot(x,y);
title('sin(x)');
pause
figure(2);
plot(x,z);
title('cos(x)');
Matlab liti6
返回新建 h窗口,激活图形使其可见,并把它置于其它图形之上
4、分割窗口
h=subplot(mrows,ncols,thisplot)
划分整个作图区域为 mrows*ncols块(逐行对块访问)并激活第 thisplot块,其后的作图语句将图形画在该块上。
激活已划分为 mrows*ncols块的屏幕中的第 thisplot块,其后的作图语句将图形画在该块上。
命令 Subplot(1,1,1)返回非分割状态。
subplot(mrows,ncols,thisplot)
subplot(1,1,1)
解 x=linspace(0,2*pi,100);
y=sin(x); z=cos(x);
a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps)
subplot(2,2,1);plot(x,y),title(‘sin(x)’)
subplot(2,2,2);plot(x,z),title(‘cos(x)’)
subplot(2,2,3);plot(x,a),title(‘sin(x)cos(x)’)
subplot(2,2,4);plot(x,b),title(‘sin(x)/cos(x)’)
例 将屏幕分割为四块,并分别画出 y=sin(x),z=cos(x),
a=sin(x)*cos(x),b=sin(x)/cos(x)。
Matlab liti7
返回
5、缩放图形
zoom on
单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大 2倍;单击鼠标右键,则缩小 2倍解 x=linspace(0,2*pi,30);
y=sin(x);
Plot(x,y)
zoom on
Matlab liti13
例 缩放 y=sin(x)的图形
zoom off
为当前图形打开缩放模式关闭缩放模式返回
6,改变视角 view
( 1) view(a,b)
命令 view(a,b)改变视角到 (a,b),a是方位角,b为仰角。
缺省视角为( -37.5,30)。
解 x=-3:0.1:3; y=1:0.1:5;
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
subplot(2,2,1),mesh(X,Y,Z)
subplot(2,2,2),mesh(X,Y,Z),view(50,-34)
subplot(2,2,3),mesh(X,Y,Z),view(-60,70)
subplot(2,2,4),mesh(X,Y,Z),view(0,1,1)
Matlab liti10
例 画出曲面 Z=(X+Y).^2在不同视角的网格图,
view用空间矢量表示的,三个量只关心它们的比例,与数值的大小无关,x轴 view( [1,0,0]),y轴 view( [0,1,
0]),z轴 view( [0,0,1])。
( 2) view( [x,y,z])
返回
7,动画
Moviein(),getframe,movie()
函数 Moviein()产生一个帧矩阵来存放动画中的帧;函数 getframe对当前的图象进行快照;函数 movie()按顺序回放各帧。
Matlab liti14
返回例 将曲面 peaks做成动画。
解 [x,y,z]=peaks(30);
surf(x,y,z)
axis([-3 3 -3 3 -10 10])
m=moviein(15);
for i=1:15
view(-37.5+24*(i-1),30)
m(:,i)=getframe;
end
movie(m)
特殊二、三维图形
1,特殊的二维图形函数
2,特殊的三维图形函数返回特殊的二维图形函数
1、极坐标图,polar (theta,rho,s)
用角度 theta(弧度表示)和极半径 rho作极坐标图,用 s
指定线型。
例 的极坐标图形。? 2c o s2s i nr
解,theta=linspace(0,2*pi),
rho=sin(2*theta).*cos(2*theta);
polar(theta,rho,’g’)
title(‘Polar plot of sin(2*theta).*cos(2*theta)’);
Matlab liti15
2,散点图,scatter( X,Y,S,C)
在向量 X和 Y的指定位置显示彩色圈,X和 Y必须大小相同.
解 输入命令:
load seamount
scatter(x,y,5,z)
Matlab liti29
3、平面等值线图,contour (x,y,z,n) 绘制 n个等值线的二维等值线图解 输入命令:
[ X,Y] =meshgeid(-2:.2:2,-2:.2:3);
Z=X.*exp(-X.^2-Y.^2);
[C,h]=contour(X,Y,Z);
clabel(C,h)
colormap cool Matlab liti34
例 绘制 seamount散点图例 在范围 - 2 < x < 2,- 2 < y < 3 内绘 22 yxxez 的等值线图返回特殊的三维图形函数
1、空间等值线图,contour 3(x,y,z,n)
其中 n表示等值线数。
例 山峰的三维和二维等值线图。
解 [x,y,z]=peaks;
subplot(1,2,1)
contour3(x,y,z,16,'s')
grid,xlabel('x-axis'),ylabel('y-axis')
zlabel('z-axis')
title('contour3 of peaks');
subplot(1,2,2)
contour(x,y,z,16,'s')
grid,xlabel('x-axis'),ylabel('y-axis')
title('contour of peaks');
Matlab liti18
3,三维散点图 scatter3( X,Y,Z,S,C)
在向量 X,Y和 Z指定的位置上显示彩色圆圈,
向量 X,Y和 Z的大小必须相同,
解 输入命令,
[x,y,z]=sphere(16);
X=[x(:)*.5 x(:)*.75 x(:)];
Y=[y(:)*.5 y(:)*.75 y(:)];
Z=[z(:)*.5 z(:)*.75 z(:)];
S=repmat([1,75,5]*10,prod(size(x)),1);
C=repmat([1 2 3],prod(size(x)),1);
scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'),
view(-60,60)
例 绘制三维散点图。
Matlab liti32
返回绘制山区地貌图要在某山区方圆大约 27平方公里范围内修建一条公路,
从山脚出发经过一个居民区,再到达一个矿区。横向纵向分别每隔 400米测量一次,得到一些地点的高程,(平面区域 0<=x<=5600,0<=y<=4800),需作出 该山区的地貌图和等高线图。
Matlab shanqu
返回返回实验作业
1、在同一平面中的两个窗口分别画出心形线和马鞍面。
要求,1,在图形上加格栅、图例和标注
2,定制坐标
3、以不同角度观察马鞍面
2、以不同的视角观察球面 和圆柱面 所围区域。
2222 rzyx
rxyx 22