MATLAB 绘图

一、绘图的基本步骤

在MATLAB中绘制图形,通常采用以下7个步骤
1.准备数据
准备好绘图需要的横坐标变量和纵坐标变量数据。
2.设置当前绘图区
在指定的位置创建新的绘图窗口,并自动以此窗口的绘图为当前绘图区。
3.绘制图形
创建坐标轴,指定叠加绘图模式,绘制函数曲线。
4.设置图形中曲线和标记点格式
设置图形中的线宽、线型、颜色和标记点的形状、大小、颜色等。
5.设置坐标轴和网格线属性
将坐标轴的范围设置在指定横线,并设置网格线的属性,如网格线的类型(实线、虚线)等
6.标注图形
对图形进行标注,包括在图形中添加标题、坐标轴标注、文字标注等、
7.保存和导出图形
按指定文件格式、属性保存或导出图形,以备后续使用。

二、在工作区直接绘图

使用工作空间直接绘图

三、利用函数绘图

MATLAB提供了丰富的绘图功能,在命令行窗口中输入help graph2d可得到所有绘制二维图形的命令,输入help graph3d可得到所有绘制三维图形的命令。

1.基本二维图形

plot(X1,Y1,LineSpec,‘PropertyName’,PropertyValue):对所有用plot函数创建的图形进行属性值设置。
常用的绘图选项:

选项 含义 选项 含义
- 实线 . 用点号标出数据点
虚线 用圆圈标出数据点
点线 × 用叉号标出数据点
-. 点划线 + 用加号标出数据点
r 红色 s 用小正方形标出数据点
g 绿色 D 用菱形标出数据点
b 蓝色 V 用下三角标出数据点
y 黄色 ^ 用上三角标出数据点
m 品红 < 用左三角标出数据点
c 青色 > 用右三角标出数据点
w 白色 H 用六角形标出数据点
k 黑色 P 用五角形标出数据点
* 用星号标出数据点 - -

常用属性:

属性名 含义 属性名 含义
LineWidth 设置线的宽度 MarkerEdgeColor 设置标记点的边缘颜色
MarkerSize 设置标记点的大小 MarkerFaceColor 设置标记点的填充颜色

h = plot(X1,Y1,LineSpec,‘PropertyName’,PropertyValue):返回绘制函数的句柄值h。
loglog函数、semilogx函数与semilogy函数的用法与plot函数的用法类似。
【例1】在同一坐标下绘制多条曲线

>> clear all;
t = 0: pi/50: 4*pi;
y0 = exp(-t/3);
y = exp(-t/3).*sin(3*t);
plot(t,y,t,y0,t,-y0);
grid on

MATLAB 绘图_第1张图片

【例2】加载MATLAB自带的噪声信号进行图形绘图

>> clear all;
>> load noisdopp;
>> plot(noisdopp)

MATLAB 绘图_第2张图片

2.双y轴绘图

在MATLAB中,提供了plotyy函数用于绘制双y轴图形绘制。在实际中,如果两组数据的数据范围相差较大,而又希望放在同一图形中比较分析,则可以绘制双y轴图形。
plotyy(x1,y1,x2,y2):在一个图形窗口同时绘制两条曲线(x1,y1)和(x2,y2),曲线(x1,y1)用左侧的y轴,曲线(x2,y2)用右侧的y轴。
plotyy(x1,y1,x2,y2,fun):fun是字符串格式,用于指定绘图的函数名,如plot、semilogx等。例如,命令plotyy(x1,y1,x2,y2,‘semilogx’)就是用函数semilogx来绘制曲线(x1,y1)和(x2,y2)。
plotyy(x1,y1,x2,y2,fun1,fun2):和第二种形式类似,只是用fun1和fun2可以指定不同的绘图函数分别绘制这两种曲线。
【例3】利用plotyy绘制双y轴图形。

>> clear all;
>> x = 0: 0.01: 20;
>> y1 = 200 * exp(-0.05 * x).*sin(x);
>> y2 = 0.8 * exp(-0.5 * x).*sin(10 * x);
>> figure
>> plotyy(x,y1,x,y2)

MATLAB 绘图_第3张图片

3.三维图形
1)三维曲线

在MATLAB中,提供了plot3函数用于绘制三维曲线,其函数的用法与二维曲线绘制函数plot类似。plot3函数的调用格式如下。
plot3(X1,Y1,Z1,…):以默认线型属性绘制三维点集(Xi,Yi,Zi)确定的曲线。Xi、Yi、Zi为相同大小的向量或矩阵。
plot3(X1,Y1,Z1,LineSpec…):以参数LineSpec确定的线型属性绘制三维点集(Xi,Yi,Zi)确定的曲线,Xi、Yi、Zi为相同大小的向量或矩阵。
plot3(…,‘PropertyName’,PropertyValue,…):绘制三维曲线,根据指定的属性值设定曲线的属性。
h = plot3(…):返回绘制曲线图的句柄值向量h。
【例4】利用plot绘制三维曲线图。

clear all
t = 0: pi/50: 10 * pi
st = sin(t)
ct = cos(t)
figure
plot3(st,ct,t)

MATLAB 绘图_第4张图片
MATLAB中,除了可以绘制三维线性图形外,还可以绘制三维曲面。常见的绘制三维曲面的MATLAB函数有mesh和surf。

2)三维网格图的绘制

在三维网格图绘制时经常需要用到meshgid,用于生成网格数据。
meshgrid的用法简介
[X,Y] = meshgid(x,y):输入向量x为xy平面上矩阵定义域的矩形分割线在x轴的值,输入向量y为xy平面上矩形定义域的矩形分割线在y轴的值。输出向量X为xy平面上矩形定义域的矩形分割点的横坐标值矩阵,输出向量Y为xy平面上矩形定义域的矩形分割点的纵坐标值矩阵。
[X,Y] = meshgrid(x):等价于[X,Y] = meshgrid(x,x)
[X,Y,Z] = meshgrid(x,y,z)

3)三维网格曲面

mesh(X,Y,Z)

4)三维阴影曲面

surf(X,Y,Z)
Matlab用surf函数画三维曲面
Matlab绘制三维曲线(plot3)和三维图形(mesh & surf)
Matlab中mesh和surf的区别
meshgrid,contour,surf,mesh的总结

4.图形的修饰
1)选择图形窗口的函数

1.打开不同图形窗口的函数
figure(1);figure(2);…;figure(n):用来打开不同的图形窗口,以便绘制不同的图形。
2.图形窗口分拆函数subplot
subplot(m,n,p):分割图形显示窗口,m表示上下分割个数,n表示左右分割个数,p表示子图编号。
【例5】图形窗口的创建与分割

clear all
b = 2 * pi
x = linspace(0,b,50)                       %分割点
for k = 1:9
    y = sin(k * x).*cos(.52 * x)
    subplot(3,3,k)
    plot(x,y,'linewidth',2)
    axis([0,2*pi,-1,1])
end

MATLAB 绘图_第5张图片

2)坐标轴相关函数

在默认情况下,MATLAB自动选择图形的横、纵坐标的比例,当然也可以用axis函数控制,常用的函数格式如下:
axis([xmin xmax ymin ymax]):[xmin xmax ymin ymax]中分别给出x轴和y轴的最大值、最小值。
axis equal:x轴和y轴的单位长度相同。
axis square:图框呈正方形。
axis off:清除坐标刻度。
semilogx:绘制以x轴为对数坐标(以10为底)、y轴为线性坐标的半对数坐标图形。
semilogy:绘制以y轴为对数坐标(以10为底)、x轴为线性坐标的半对数坐标图形。
loglog:绘制全对数坐标图形,即x、y轴均为对数坐标(以10为底)。

3)文字标识函数

text(x,y,‘字符串’):在图形的指定坐标位置(x,y)处标示单引号括起来的字符串。
gtext(‘说明文字’):利用鼠标在图形的某一位置标示说明文字。执行完绘图命令后再执行gtext(‘说明文字’)命令,就可在屏幕上得到一个光标,然后用鼠标选择说明文字的位置。
title(‘字符串’):在所绘制图形的最上端显示说明该图形标题的字符串。
xlanbel(‘字符串’)、ylanbel(‘字符串’)、zlanbel(‘字符串’):设置x、y、z坐标轴的名称。输入特殊的文字需要用反斜杠()开头。
legend(‘字符串1’、‘字符串2’,…,‘字符串n’):在屏幕上开启一个视窗,然后依据绘图函数的先后次序,用对应的字符串区分图形上的线。

4)添加或删除栅格

grid:给图形加上栅格线。
grid on :给当前坐标系加上栅格线。
grid off:从当前坐标系中删去栅格线。
grid:交替转换命令,即执行一次,转变一个状态(相当于grid on、grid off)。

5)图形保持或覆盖

hold on:把当前图形保持在屏幕不变,同时允许在这个坐标内绘制另外一个图形。
hold off:使新图覆盖旧图。
hold函数是一个交替转换函数,即执行一次,转变一个状态(相当于hold on、hold off)。
【例6】绘制对数坐标及半对数坐标图

clear all
x1 = logspace(-1,2)
subplot(131)
loglog(x1,exp(x1),'-s')
title('loglog函数绘图')
grid on
x2 = 0: 0.1 :10
subplot(132)
semilogx(10.^x2,x2,'r-.*')
title('semilogx函数绘图')
subplot(133)
semilogx(10.^x2,x2,'rd')
title('semilogy函数绘图')

MATLAB 绘图_第6张图片

你可能感兴趣的:(matlab)