MATLAB基础运算【4】:图像绘制

系列更新MATLAB各种运算和操作的说明。

本篇主要包括图像绘制相关内容(可利用侧边目录直接定位):

  1. 普通函数图像绘制:“plot”
  2. 散点图绘制:“scatter”
  3. 双纵坐标图像绘制:“plotyy”
  4. 横向与纵向的柱状图:“bar”、“barh”
  5. 等高线图云图绘制:“contour”、“contourf”、“colormap”、“surface”
  6. 三维绘图:“plot3”
  7. 函数曲线、曲面绘制:“fplot”、“fsurf”
  8. 矩阵数据绘制三维曲面图、调整视角:“surf”、“view”

前文:

MATLAB基础运算【1】:矩阵元素

MATLAB基础运算【2】:矩阵运算

MATLAB基础运算【3】:微积分运算

1- 普通函数图像绘制:“plot”

例1:利用plot函数绘制y_{1}=sin(x)y_{2}=cos(x) 的图像,x的步长取0.1,要求:

1) 横坐标范围[0,2π],纵坐标范围[-1.5,1.5];

2) y_{1}使用绿色实线, y_{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:试绘制y=sin(x)的图像,要求:

1) 取x=0:\frac{\pi}{100}:2\pi,用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,区域内的温度分布满足:T=100e^{-3(x-2)^2}e^{-(y-1)^2}

将区域划分成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:螺旋线的参数方程为 \left\{\begin{matrix} x=a\cos{2t} \\y=a\sin{2t} \\ z=bt \end{matrix}\right.,a=1,t在(0,8\pi) 间,分别取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:椭圆x^2/4+y^2/9=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:三条曲线合成图:y_1=sinx, y_2=sinxsin(10x), y_3=-sinx, 0<x<\pi

 命令行输入:

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^4+3x^2+y^2-2x-2y-2x^2y+6, \left | x \right |<3, -3<y<13

 命令行输入:

z = @(x,y) (x.^4 + 3*x.^2 + y.^2 - 2*x - 2*y - 2*(x.^2).*y + 6;
fsurf(z)

得到图像:

  例4:曲面 x=2sin\phi cos\theta , y=2sin\phi sin\theta ,z=2cos\phi , 0\geq \theta \geq 360^{\circ}, 0\geq \phi \geq 90^{\circ}

 命令行输入:

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)

得到图像:

【本篇完】

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值