一. 特殊二维图形绘制语句
bar(x,y) | 二维条形图 |
compass(x,y) | 罗盘图 |
feather(x,y) | 羽毛状图 |
hist(y,n) | 直方图 |
polar(x,y) | 极坐标图 |
stairs(x,y) | 阶梯图形 |
semilogx(x,y) | x-半对数图 |
comet(x,y) | 彗星状轨迹图 |
errorbar(x,y,ym,yM) | 误差限图形 |
fill(x,y,c) | 二维填充图 |
loglog(x,y) | 对数图 |
quiver(x,y) | 磁力线图 |
stem(x,y) | 火柴杆图 |
semilogy(x,y) | y-半对数图 |
例题1
绘制极坐标曲线
解:
MATLAB代码:
clc;clear;
theta=0:0.01:6*pi; %周期可以利用试凑方法确定
rho=5*sin(4*theta/3);
polar(theta,rho)
figure,
rho=5*sin(theta/3);
polar(theta,rho)
运行结果:
例题2
用不同的曲线绘制函数表示正弦曲线
解:
代码:
clc;clear;
t=0:.2:2*pi;
y=sin(t); %生成绘图所用的数据
subplot(2,2,1),stairs(t,y) %分割窗口,在左上角绘制阶梯曲线
subplot(2,2,2),stem(t,y) %火柴杆曲线绘制
subplot(2,2,3),bar(t,y) %条形图
subplot(2,2,4),semilogx(t,y) %横坐标为对数的曲线
运行结果:
举例
代码:
clc;clear;
t=(1/16:1/8:1)*2*pi;
x=exp(t).*sin(t);
y=t.*cos(t);
fill(x,y,'k'), %黑色
grid on
运行结果:
有时候可能需要在多个图形窗口看绘制曲线效果,这时可以使用figure命令,创建多个窗口。
例题2
在两个窗口分别绘制以下函数:
解:
代码:
clc;clear;
x=0:0.01:5;
y1=cos(5*x)+0.1*x.^2;
plot(x,y1)
y2=sin(3*x)+0.1*x;
figure(2),
plot(x,y2)
运行结果:
还可以给图形加一些标注。
例题3
分别绘制以下函数,并加一些标注。
解:
MATLAB代码:
clc;clear;
x=0:0.04:20;
y1=sin(x);
y2=sin(5*x);
y3=y1+y2;
plot(x,y1,'*',x,y2,x,y3,'.') %y1用*表示,y2用默认的细线表示,y3用虚线点表示
legend('sin(x)','sin(5x)','sin(x)+sin(5x)') %分别对用上面表示给出图例
xlabel('x') %x轴标注
ylabel('y') %y轴标注
title('the function of sin') %标题
grid %加坐标格
运行结果:
二. 隐函数绘制
隐函数形式:
格式:
ezplot(隐函数表达式)
例题4
画图:
解:
MATLAB代码:
clc;clear;
%x自选
ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)')
%限定范围
figure,
ezplot('x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y)',[-10 10])
运行结果:
三. 三维图像绘制
3.1 三维曲线
格式:
%格式1
plot3(x1,y1,z1)
%格式2
plot3(x1,y1,z1,选项1,x2,y2,选项2,···,xm,ym,zm,选项m)
另外还有:
stem3:三维火柴杆型曲线
fill3:三维填充图形
bar3:三维直方图
例题5
画参数方程图:
解:
MATLAB代码:
clc;clear;
t=0:.1:2*pi; %构造t向量,注意下面的点运算
x=t.^3.*sin(3*t).*exp(-t);
y=t.^3.*cos(3*t).*exp(-t);
z=t.^2;
plot3(x,y,z), %三维曲线绘制
grid
figure,
stem3(x,y,z);
hold on;
plot3(x,y,z),
grid
运行结果:
3.2 三维曲面
格式:
[x,y]=meshgrid(v1,v2)
z=x.*y
surf(x,y,z) %绘制表面图
mesh(x,y,z)%绘制网格图
surfl() 光照下
surfc() 等高线
waterfall() 瀑布型
contour() contour3() 等高线
例题6
对Butterworth滤波器来讲,和取16为区域的中心。假设。
解:
MATLAB代码如下:
clc;clear;
[x,y]=meshgrid(0:31);
n=2;
D0=200;
D=sqrt((x-16).^2+(y-16).^2); %求距离
z=1./(1+D.^(2*n)/D0); %计算
mesh(x,y,z) %绘制滤波器
axis([0 31 0 31 0 1]) %重新设置坐标系,增大可读性
figure,
surf(x,y,z) %绘制三维表面图
figure,
contour3(x,y,z,30) %三维等高线图,30条等高线
运行结果:
例题7
试绘制出二元函数
解:
代码如下:
clc;clear;
xx=[-2:.1:-1.2,-1.1:0.02:-0.9,-0.8:0.1:0.8,0.9:0.02:1.1,1.2:0.1:2];
yy=[-1:0.1:-0.2,-0.1:0.02:0.1,0.2:0.1:1];
[x,y]=meshgrid(xx,yy);
z=1./(sqrt((1-x).^2+y.^2))+1./(sqrt((1+x).^2+y.^2));
surf(x,y,z),
shading faceted;
set(gca,'zlim',[0,20]) %设置当前坐标轴对象的句柄的值
运行结果:
例题8
对Butterworth滤波器画三视图。
解:
代码如下:
clc;clear;
[x,y]=meshgrid(0:31);
n=2;
D0=200;
D=sqrt((x-16).^2+(y-16).^2); %求距离
z=1./(1+D.^(2*n)/D0); %计算
subplot(221),surf(x,y,z),axis([0 31 0 31 0 1]);
view(0,90); %俯视图
subplot(222),surf(x,y,z),axis([0 31 0 31 0 1]);
view(90,0); %侧视图
subplot(223),surf(x,y,z),axis([0 31 0 31 0 1]);
view(0,0); %正视图
subplot(224),surf(x,y,z),axis([0 31 0 31 0 1]);
%三维图
运行结果:
第一个角度用来表示水平方向,即y轴负方向的夹角,默认值-37.5度;
第二个角度用来表示垂直方向,默认值36度。
四. 符号运算的可视化
MATLAB中除了数值结果可以绘制图像外,还提供了丰富的符号绘图功能,符号绘图命令通常以ez字母开头。
例题9
采用符号作图方法绘制变形的螺旋线。参数方程如下:
解:
代码如下:
clc;clear;
syms t;
x=t;
y=sin(t);
z=2*cos(t);
ezplot3(x,y,z,[0,20])
grid on
运行结果:
例题10
采用mesh绘图方法绘椭球面,椭球参数方程如下:
解:
MATLAB代码:
clc;clear;
syms t1 t2;
x=sin(t1)*cos(t2);
y=16*sin(t1)*sin(t2);
z=2*cos(t1);
ezmesh(x,y,z,[0,pi,0,2*pi])
hidden off %透视效果
%注意hidden off效果对ezsurf无效
运行结果:
例题11
采用ezsurf绘图方法绘制轮胎状环面,参数方程为如下:
解:
MATLAB代码如下:
clc;clear;
syms t u;
x=cos(t)*(3+cos(u));
y=sin(t)*(3+cos(u));
z=sin(u);
ezsurf(x,y,z,[0,2*pi,0,2*pi])
axis off %不显示坐标轴
运行结果:
五. 复数绘图
对于复数函数的绘图主要有两种形式。
一种是直角坐标图(plot),即分别以复数的实部和虚部为坐标做出复数的表示图;
另一种是极坐标图(polar),即以复数的模和幅角为坐标作图。
举例
代码:
clc;clear;
t=0:0.1:2*pi;
y=t+i*t.*sin(t);
r=abs(y);
theta=angle(y);
subplot(121),plot(y),
title('直角坐标图')
subplot(122),polar(theta,r),
title('极坐标图')
运行结果: