系列更新MATLAB各种运算和操作的说明。
本篇主要包括图像绘制相关内容(可利用侧边目录直接定位):
- 普通函数图像绘制:“plot”
- 散点图绘制:“scatter”
- 双纵坐标图像绘制:“plotyy”
- 横向与纵向的柱状图:“bar”、“barh”
- 等高线图云图绘制:“contour”、“contourf”、“colormap”、“surface”
- 三维绘图:“plot3”
- 函数曲线、曲面绘制:“fplot”、“fsurf”
- 矩阵数据绘制三维曲面图、调整视角:“surf”、“view”
前文:
1- 普通函数图像绘制:“plot”
例1:利用plot函数绘制
和
的图像,x的步长取0.1,要求:
1) 横坐标范围[0,2π],纵坐标范围[-1.5,1.5];
2)
使用绿色实线,
使用红色虚线;
3) 显示图形四周坐标轴以及坐标网格。
命令行输入:
x = 0:0.1:2*pi;
y1 = sin(x); y2 = cos(x)
plot(x,y1,'-g') % 绿色实线
hold on % 在同一张图上继续操作
plot(x,y2,'--r') % 红色虚线
xlim([0,2*pi]); ylim([-1.5,1.5]); % 设置坐标轴范围
grid on; % 打开网格
得到图像:
2- 散点图绘制:“scatter”
例1:试绘制
的图像,要求:
1) 取x=
,用plot函数作出 的曲线,红色实线,线宽为2;
2) 保持图像,在x的基础上间隔5点取值,作出y(x)的散点图,使用圆形标识,大小设为12磅,内部填充蓝色,周围线条设为黑色。
命令行输入:
x = 0:(pi/100):2*pi;
y1 = sin(x);
plot(x,y1,'-r','LineWidth',2) % 红色实线,线宽2
hold on % 在同一张图上继续操作
x1 = 0:(pi/20):2*pi; % 设置x的取点
y1 = sin(x1);
scatter(x1,y1,12,'MarkerFaceColor','b','MarkerEdgeColor','k') % 散点图,大小为12,内部蓝色,周围线条黑色
得到图像:
可以看到图像上的散点。
3- 双纵坐标图像绘制:“plotyy”
例1:利用plotyy函数绘制 和 ,要求:
1)t取[0,1000];
2)对应左端纵坐标“Semilog Plot”,并且使用指数坐标, 对应右端纵坐标“Linear Plot”,并使用线性坐标;
3)使用蓝色虚线, 使用红色实线,线宽设为2;
4)显示左侧指数坐标的坐标网格。
命令行输入:
t = 0:0.1:1000; % 创建时间向量t,从0到1000,步长为0.1
y1 = exp(-0.005*t);
y2 = sin(0.005*t);
[ax,h1,h2] = plotyy(t,y1,t,y2,'semilogy','plot'); % 使用双y轴绘制y1和y2,y1用对数坐标,y2用线性坐标
set(h1,'linestyle','--','color','b','linewidth',2); % 设置h1(y1曲线)的属性:蓝色虚线,线宽2
set(h2,'linestyle','-','color','r','linewidth',2); % 设置h2(y2曲线)的属性:红色实线,线宽2
得到图像:
可以看到左右侧有不同的纵坐标轴
4- 横向与纵向的柱状图:“bar”、“barh”
例1:某国2007年到2011年的人口数据如下:
年份
2007
2008
2009
2010
2011
人口(百万)
9
14
13
17
18
试用bar函数和barh函数分别作出人口变化图,并组成横排的子图。
命令行输入:
x = [2007,2008,2009,2010,2011];
y = [9,14,13,17,18];
subplot(1,2,1) % 创建一个1行2列的子图布局,并在第一个子图位置绘制条形图
bar(x,y) % 绘制条形图
title('bar') % 设置第一个子图的标题
subplot(1,2,2)
barh(x,y) % 绘制水平条形图
title('barh')
得到图像:
5- 等高线图云图绘制:“contour”、“contourf”、“colormap”、“surface”
例1:利用peaks函数生成一个50*50 的矩阵,并用contourf函数作出生成矩阵的云图,要求:
1)云图包含10个颜色等级;
2)使用spring色图;
3)添加颜色标尺。
命令行输入:
z = peaks(50); % 使用peaks函数生成一个50x50的矩阵,包含山峰形状的数据
contourf(z); % 使用contourf函数绘制z的等高线填充图
c = spring(10); % 使用spring函数生成一个10x3的矩阵,用于设置等高线图的颜色映射
colormap(c) % 设置当前颜色映射为由spring函数生成的颜色
colorbar % 显示颜色条,以便于观察不同颜色对应的数据范围
得到图像:
例2:长为4,宽为2的长方形区域的中心(2,1)处的温度为100°C,区域内的温度分布满足:
将区域划分成200×100的网格,用surface和contour函数做出温度分布,并尝试分别将网格加密成400×200和将网格变稀疏为100×50,观察温度分布的变化。
200*100 命令行输入:
x = linspace(0,4,200); % 创建一个从0到4的线性空间向量,用于X轴,共200个点
y = linspace(0,2,100); % 创建一个从0到2的线性空间向量,用于Y轴,共100个点
[X,Y] = meshgrid(x,y); % 使用meshgrid函数生成网格矩阵X和Y,用于等高线图的坐标
T = 100.*exp(-3.*(X-2).^2 - (Y-1).^2);
contour(X,Y,T) % 使用contour函数绘制T的等高线图
surface(X,Y,T) % 使用contour函数绘制T的三维表面云图
得到图像:
400*200 命令行输入:
x = linspace(0,4,400);
y = linspace(0,2,200);
[X,Y] = meshgrid(x,y); % 使用meshgrid函数生成网格矩阵X和Y,用于等高线图的坐标
T = 100.*exp(-3.*(X-2).^2 - (Y-1).^2);
contour(X,Y,T) % 使用contour函数绘制T的等高线图
surface(X,Y,T) % 使用contour函数绘制T的三维表面云图
得到图像:
100*50 命令行输入:
x = linspace(0,4,100);
y = linspace(0,2,50);
[X,Y] = meshgrid(x,y); % 使用meshgrid函数生成网格矩阵X和Y,用于等高线图的坐标
T = 100.*exp(-3.*(X-2).^2 - (Y-1).^2);
contour(X,Y,T) % 使用contour函数绘制T的等高线图
surface(X,Y,T) % 使用contour函数绘制T的三维表面云图
得到图像:
加密网格或者使其更稀疏对于等高线图没有影响,但对于云图(surface),由于网格加密挡住了颜色显像,网格过密后颜色变化不明显。
6- 参数方程三维绘图:“plot3”
例1:螺旋线的参数方程为
,a=1,t在
间,分别取b=0.2,0.4,-0.4,-0.1,作出螺旋线的三维图,并将子图排布成两行两列。
命令行输入:
t = 0:0.05:8*pi; % 创建时间向量t,从0开始,以0.05为步长,直到8*pi
x = cos(2.*t);
y = sin(2.*t);
b = [0.2,0.4,-0.3,-0.1]; % 定义一个包含不同b值的向量
for i=1:length(b) % 循环遍历b中的每个值
z = b(i).*t;
subplot(2,2,i) % 在2x2的子图布局中,选择第i个子图进行绘制
plot3(x,y,z,'b-') % 绘制三维线图,x, y, z分别代表三个坐标轴的值,颜色为蓝色
title(['b=',num2str(b(i))]); % 设置当前子图的标题,显示b的值
hold on % 保持当前图形,以便在同一个坐标轴上绘制下一个图形
end
hold off % 结束所有子图的绘制,取消hold on状态
得到图像:
7- 函数曲线、曲面绘制:“fplot”、“fsurf”
例1:椭圆
命令行输入:
y = @(t) 3*sin(t); % 定义y关于t的函数句柄
x = @(t) 2*cos(t); % 定义x关于t的函数句柄
fplot(x,y,[0,2*pi]) % 使用fplot函数绘制参数方程x(t)和y(t)在t从0到2*pi的范围内的图形
得到图像:
例2:三条曲线合成图:
命令行输入:
y1 = @(x) sin(x);
y2 = @(x) (sin(x).*sin(10*x));
y3 = @(x) (-sin(x));
fplot(y1)
hold on
fplot(y2)
hold on
fplot(y3)
得到图像:
例3:曲面
命令行输入:
z = @(x,y) (x.^4 + 3*x.^2 + y.^2 - 2*x - 2*y - 2*(x.^2).*y + 6;
fsurf(z)
得到图像:
例4:曲面
命令行输入:
x = @(phi,theta) (2*sin(phi)*cos(theta));
y = @(phi,theta) (2*sin(phi)*sin(theta));
z = @(phi,theta) (2*cos(phi));
fsurf(x,y,z,[0,pi/2,0,2*pi])
得到图像:
8- 矩阵数据绘制三维曲面图、调整视角:“surf”、“view”
例1:对10阶魔术阵绘制三维曲面图并且调整视角
命令行输入:
A = magic(10);
surf(A); axis off; view(30,45)
surf(A); axis off; view(300,450)
surf(A); axis off; view(3,4.5)
得到图像:
【本篇完】