许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Matlab数据可视化方法与模板(一):基本绘制概述

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

阅读数 3
点赞 0
article_banner

离散数据及离散函数绘制

对离散数据的可视化时,仅仅需配置横坐标与纵坐标参数,并调用 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数据可视化方法与模板进行介绍,欢迎各位点赞关注。😀😁


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空