Matlab数据可视化方法与模板(1)——基本绘制概述

当下越来越多研究人员选择运用Matlab对数据进行建模处理,并进行相应的数据可视化操作。本系列对Matlab绘图与可视化方法进行了总结,并给出了相应的模板供各位参考使用,希望对各位的研究与工作有所帮助👀✔。
本篇为基本绘制概述部分,主要大致介绍一些Matlab绘图与可视化的基本方法,后续篇章将对各类Matlab数据可视化方法进行详细讲解。


离散数据及离散函数绘制

对离散数据的可视化时,仅仅需配置横坐标与纵坐标参数,并调用 plot() 函数进行绘制即可,具体 plot() 函数的参数配置后续系列将会详细讲解。在对离散函数进行处理时,可先将横坐标按照对应的函数处理,再将处理后的数据作为纵坐标绘制即可,具体模板如下所示:
(注意:在Matlab中无法实现无限区间的数据可视化)

X1 = [1 2 4 6 7 8 10 11 12 14 16 17 18 20]; % 原始数据
Y1 = [1 2 4 6 7 8 10 10 8 7 6 4 2 1];
figure(1)
plot(X1, Y1, 'o', 'MarkerSize', 15); % 离散数据绘制
X2 = 1:20;
Y2 = log(X2);
figure(2)
plot(X2, Y2, 'o', 'MarkerSize', 15); % 离散函数绘制

具体代码运行后可视化结果如下:
在这里插入图片描述

具体各函数与参数的含义在后续章节将会详细讲解。(包括绘图函数、图标形状与大小等)

连续函数

首先说明:Matlab中无法画出真正的连续函数

由此将有如下两种解决方案 (一般都会将两种方案结合使用)

  1. 对离散区间进行更进一步的划分,逐步趋近函数的连续变化特性,直到达到视觉上连续的效果
  2. 把每个离散点用直线连接起来,以每两个离散点之间的直线来近似表示两点间的函数特性。

下面将运用上述两种方案,实现连续函数的数据可视化任务,首先给出连续函数绘制模板程序一:

X1 = (0:12) * pi / 6; % 基本划分
Y1 = cos(3*X1);
X2 = (0:360) * pi / 180; %更精细的划分——更能体现函数的连续特性
Y2 = cos(3*X2);
figure(1)
subplot(2, 2, 1);
plot(X1, Y1, 'o', 'MarkerSize', 3);
xlim([0, 2 * pi]);
subplot(2, 2, 2);
plot(X1, Y1, 'LineWidth', 2);
xlim([0, 2 * pi]);
subplot(2, 2, 3);
plot(X2, Y2, 'o', 'MarkerSize', 3);
xlim([0, 2 * pi]); %对其进行更细划分
subplot(2, 2, 4);
plot(X2, Y2, 'LineWidth', 2);
xlim([0, 2 * pi]); %将离散点用直线连接

上述程序将以不同粒度对 y = c o s ( 3 x ) y=cos(3x) y=cos(3x)函数进行绘制,具体运行结果图如下所示:
在这里插入图片描述

上图中的左侧为未连接离散点,而右侧为相邻离散点连接后的图像。
可以看出,当划分粒度较大时,离散点图像的视觉连续特性更好。且当对较高划分粒度的相邻离散点进行连接后,可近似得到函数的连续图像,在视觉上与连续图像几乎无差别。而当对较低划分粒度的相邻离散点进行连接时,图像的整体连续性较差,误差也变大。
下面给出连续函数绘制程序模板二:

x = -pi / 2:0.01:pi / 2; % 间隔0.01
y = x + sin(x) + exp(x);
plot(x, y, '-ro')
grid on
title('y的函数图像');
xlabel('x');
ylabel('y');
legend('y=x+sinx+e^{x}');

程序对 y = x + s i n x + e x y=x+sinx+e^{x} y=x+sinx+ex函数进行可视化,具体运行结果如下所示:

在这里插入图片描述

从上述两程序的运行结果可以看出,我们可以通过较高的划分粒度相邻离散点间的直线连接,实现对连续函数的近似可视化

多图绘制示例

在运用Matlab进行数据可视化的过程中,有时我们需要运用一个窗口完成多个图像的可视化任务,由此我们需要借助 subplot() 函数实现多图绘制。
该函数的常规使用方式为: s u b p l o t ( m , n , p ) subplot(m,n,p) subplot(m,n,p),其将当前图窗划分为一个 m × n m×n m×n的网格,并在 p p p指定的位置创建坐标区。 Matlab中将按行对子图的位置进行编号。 第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区——覆盖/重写
具体多图绘制的模板代码如下所示:

%本程序在一个窗口内画出多种图像
%三角函数与空间螺旋函数构造
x = 0:0.001:8 * pi;
y1 = sin(x);
y2 = cos(x);
z = x;
%三维网格图构造
[X, Y] = meshgrid(-3:0.1:3, -4:0.1:4);
Z = cos(X) .* sin(Y);
xlabel('x');
ylabel('y');
zlabel('z');
%标准正太分布的频率分布直方图
a = normrnd(10, 5, 1000, 1);
[count, center] = hist(a);
%对不同图在同一窗口进行展示
subplot(3, 2, 1);
plot(x, y1, 'b', x, y2, 'r');
title('y=sin(x)与y=cos(x)在0-8pi上的对比图');
grid on
subplot(3, 2, 2);
plot3(y1, y2, z, 's');
title('空间螺旋线');
grid on
subplot(3, 2, 3);
surf(X, Y, Z);
title('z=cosx.siny的曲面图(带阴影)');
grid on
subplot(3, 2, 4);
mesh(X, Y, Z);
title('z=cosx.siny的曲面图(不带阴影)');
grid on
subplot(3, 2, 5);
histogram(a);
title('标准正太分布的频率分布直方图(无间隔)');
grid on
%由于hist是比较老的版本里的函数,这里运用histogram(),其优势在于可以直接返回一个直方图对象,方便修改直方图属性
subplot(3, 2, 6);
bar(center, count);
title('标准正太分布的频率分布直方图(有间隔)');
grid on

上述代码的运行结果如下所示:

在这里插入图片描述

总结

上述内容对Matlab绘图与可视化的基本方法进行了介绍,并给出了相应的模板,后序系列中将对二维、三维、四维、统计作图🎨等多种Matlab数据可视化方法与模板进行介绍,欢迎各位点赞关注。😀😁

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

neal-wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值