MATLAB绘图——加强篇

这篇具有很好参考价值的文章主要介绍了MATLAB绘图——加强篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

虽然在MATLAB绘图/数据可视化中介绍了绘图函数并给出了可直接使用的代码,但如果仅掌握这些,还远做不到随心所欲的绘图,因此,本篇博客将在上篇的基础上进一步深入讲解绘图方法。

结合矩阵作图

例如,我们在上一篇介绍了plot函数。plot(list0)为以列表list0中元素下标为横坐标,元素值为纵坐标的点所组成的折线图;plot(list_x,list_y)是以list_x为横坐标,list_y为纵坐标的点所组成的折线图;plot(list_x1,list_y1,list_x2,list_y2,...)则可在同一窗口中绘制多条二维曲线。但如果使用多个列表分别储存list_x1,list_y1,… 的值则过于繁琐,因此我们可以将其与矩阵的知识结合。

例:绘制 sin(x), sin(4x) 的函数。

x=0:0.1:6;
A=[x; 4*x];
B=sin(A);
plot(x,B(1,:), x,B(2,:))

通过实例我们可以发现,矩阵有同时储存多个列表减少变量数目的优势,而且我们可以通过类似B=sin(A)的操作对A内所有元素进行统一处理,同时在plot(x,B(1,:), x,B(2,:))形式简洁,不会造成混乱。

利用函数表达式作图

在使用plot函数作图时,我们需要先将记录点横纵坐标的列表给出,这样必然是比较麻烦的,MATLAB也给出了更简单的作图方法——fplotezplot方法。

ezplotfplot也是作图函数,并且二者均不需要计算函数值,可直接画图。

ezplot的优势在于其可以完成 f ( x , y ) = 0 f(x,y)=0 f(x,y)=0 (例: x 2 + y 2 = 1 x^2+y^2=1 x2+y2=1) 这样的隐函数图形;而fplot由于其自适应取点的特点,可以对有奇点的函数进行绘图。

clear all; clc; close all
%% plot函数
x=0:0.01:2*pi;
y=sin(x);
plot(x,y);

%% ezplot函数
ezplot('x*x+y*y=1',[-1,1]);

%% fplot函数
fplot(@(x)sin(1/x), [0 2*pi]);

交互式作图

在Python中我们可以通过print函数以及input函数实现简单的交互功能,而在MATLAB作图过程中我们同样可以做到交互式作图。

clear all;clc;close all
disp('该程序计算室温下Maxwell分布律')
y=input('请输入一种分子名称(N/O):','s')
switch y
	case ('N')
		mu=28e-3;
	case('O')
		mu=32e-3;
	otherwise
	warning('只能输入大写N,O')
end

T=300;		v=0:1500;
k=1.38e-23;		NA=6.02e23;
m=mu/NA;
f=4*pi*(m/(2*pi*k*T))^(3/2)*exp(-m*v.^2./(2*k*T)).*v.^2;
plot(v,f)

MATLAB绘图——加强篇

MATLAB绘图——加强篇

四维数据作图

我们前面已介绍了利用二维数据的平面作图以及利用三维数据的空间作图的方法,但有些读者可能不大清楚,我们的空间就是三维空间,三维数据作图难道还不够吗,为什么还要讨论四维数据作图的情况呢?

对此,必须要先说明,三维数据确实不够。例如我们要描述一个房间内的温度场,光有三维空间坐标可什么都做不了,必须引入第四维数据表示温度。类似的情况还有很多,如果只有三维坐标那我们只能表示空间中的位置,而做不到物理量的表示,因此,我们必须引入第四维数据。

那么这个第四维数据应当如何表示呢,在空间作图时我们好像已经把xyz三个坐标都使用到了,如果来表示这个第四维的数据呢?

答案是颜色,如果有玩过热成像仪的朋友应该明白,我们在空间坐标之外还有颜色可以用来表示物理量!我们只要在一般的三维作图基础上加上不同的颜色加以区分就可以利用四维数据作图。
MATLAB绘图——加强篇
好了,铺垫已经够多了,我们开始动手吧。

clear all;clc;close all
[x,y,z]=meshgrid(-2:.2:2);	% .2=0.2,,meshgrid生成三维空间网格
v=x.*exp(-x.^2-y.^2-z.^2);	% 生成物理场
slice(v,[5 15],15,10)			% v所对应物理场的切片,分别在x=5,x=15,y=15,z=10处切片
axis([0 21 0 21 0 21]);		% 设置xyz坐标范围
hold on
colorbar('horiz')	% 在竖直方向显示温度表
colorbar('vert')		% 在水平方向显示温度表
view([-25 65])		% 通过方位角和俯仰角,设置观察角度

MATLAB绘图——加强篇
怎么样,是不是看着很清晰,我们可以很容易看出, v v v所代表的物理场在空间中有一个“热源”和一个“冷源”,在其他地区则比较“稳定”。

我们来回看一下绘图所用的代码。[x,y,z]=meshgrid(-2:.2:2)生成了一个三维的表示空间坐标的数组,接下来使用v=x.*exp(-x.^2-y.^2-z.^2)生成了一个物理场v,然后我们使用了切片函数slice选取了物理场v的空间剖面图,然后根据剖面图上v值的大小对剖面图上色。

如何选取合适的剖面是四维数据绘图中最重要的一步。

复数作图

使用复数作图的优点:可以对复变函数进行作图;可以通过乘 e i k π e^{ik\pi} eikπ 项旋转或加一个复数进行平移。

plot函数会使用两个列表画出折线图,而我们知道,复数列表自带一个实数列表和一个虚数列表,因此仅对一个复数列表作图,就可以得到以其实数为x轴,虚数为y轴的图形。plot(z)即为plot(real(z), imag(z))

clear all;clc;close all
t = 0: pi/10: 2*pi;
plot(exp(i*t), '-o')
axis equal

MATLAB绘图——加强篇

如果对两个复数列表使用plot函数,则只会利用两个复数的实数作图,即plot(z1,z2)=plot(real(z1), real(z2))

MATLAB提供了多种对复变函数绘图的函数。cplxgrid(m)在复变量平面的单位圆内绘制 ( m + 1 ) × ( 2 m + 1 ) (m+1)\times (2m+1) (m+1)×(2m+1) 极坐标的数据网格,cplxmap(u,f(u))绘制复变函数图形,cplxroot(n)绘制复数n次方根的图形。

复数complex的简写为cplx

以复数的平方 u 2 u^2 u2为例:

clear all;clc;close all
u=cplxgrid(20);
cplxmap(u,u.^2)
colormap('winter')
colorbar

MATLAB绘图——加强篇

再以复数方根 u 1 / 2 u^{1/2} u1/2为例:

clear all;clc;close all
u=cplxgrid(20);
cplxroot(2)
colormap('winter')
colorbar

MATLAB绘图——加强篇

GIF制作

虽然图片很直观,但对于类似驻波、干涉条纹变化这样的概念,仅有静态图片还是不够的,我们还需要学会制作GIF。

下面给出行波的动画程序

pic_num = 1;
t=0:pi/20:4*pi; x=0:0.1*pi:4*pi;    % 不会在循环中改变的变量可以放在循环之外
for i=1:40
    f=figure(1);    % 令f为当前图形窗口
    
    y=sin(x-t(i));
    plot(x,y);
    axis([0,12,-1,1]);

    F=getframe(gcf);    % getframe函数将图形作为影片帧,gcf为获取当前图窗的句柄
    I=frame2im(F);      % 返回与影片帧关联的图像数据
    [I,map]=rgb2ind(I,256);     % 将 RGB 图像转换为索引图像
    if pic_num == 1
        imwrite(I,map,'test2.gif','gif','Loopcount',inf,'DelayTime',0.2);   % imwrite函数可将图像写入图形文件
    else
        imwrite(I,map,'test2.gif','gif','WriteMode','append','DelayTime',0.2);
    end
    pic_num = pic_num + 1;
end

MATLAB绘图——加强篇

也可以通过句柄图形系统实现实时动画制作:文章来源地址https://www.toymoban.com/news/detail-402815.html

t=0:pi/20:4*pi; x=0:0.1*pi:6*pi; y=sin(x);

h=plot(x,y);
axis([0,12,-1,1]);
set(h,'EraseMode','xor')
for i=2:60
    y=sin(x-t(i));
    set(h,'XData',x,'YData',y)
    drawnow
    pause(0.2)
end

到了这里,关于MATLAB绘图——加强篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Matplotlib数据可视化绘图之(二)————箱线图

    本文我们主要介绍利用Python中的Matplotlib模块进行几种箱线图的画法,包括整张图片只有一种颜色的不分组箱线图、整张图片有好几种颜色的不分组箱线图、整张图片有好几种颜色的分组箱线图等。 主要利用Python中的Matplotlib模块完成该功能。 表格如下(示例): 班别 语文成

    2024年02月05日
    浏览(52)
  • 【python绘图(一)】Python数据分析和可视化

    1. 绘制三维曲面图及其投影图 2. 绘制曲面图 3. 绘制曲面投影图 4. 同时绘制曲面图和投影图,用两个图展示 5. 绘制曲面图 6. 同时绘制曲面图及其二维填色图 数据分析包括探索、清理和转换数据以从中提取有用信息。Python有许多库可以使数据分析变得更容易,例如Pandas、Nu

    2024年02月04日
    浏览(45)
  • Python数据可视化库Matplotlib绘图学习(二维)&数学建模

    如果没有出现错误,就说明安装成功。 一元二次函数图像: 运行效果: 解释: as: 重命名,将长串的函数库改一个容易书写的名字 range函数: 生成范围内所有的数字 列表推导式: 列表推导式(List Comprehension)是一种简洁地创建新列表的方法,它可以基于现有的列表、集合

    2024年02月07日
    浏览(47)
  • 第3章-指标体系与数据可视化-3.2-描述性统计分析与绘图

    目录 变量的度量类型 变量的分布类型 正态分布 对数正态分布  伽马分布

    2024年02月07日
    浏览(38)
  • Matlab:可视化四维数据

    以下示例演示在 MATLAB® 中以可视方式呈现四维 (4-D) 数据的几种方法。 有时数据含有一个离散变量,即该变量仅有几个可能的值。您可以对每个离散组中的数据创建多个具有相同类型的绘图。例如,使用 stem3 函数查看三个变量之间的关系,第四个变量则将总体数据划分为若干

    2024年01月18日
    浏览(43)
  • MATLAB第九章_数据图形可视化

    目录 数据图形可视化 MATLAB图形窗口 函数绘制 一元函数绘制  二元函数绘图 数据图形绘制简介 离散数据可视化 连续函数可视化 二维绘图函数 基本绘图 快速方程式画图 特殊二维图形  三维绘图函数 绘制三维曲面 生成栅格数据 网格曲线绘制 隐藏线的显示和关闭        

    2024年02月08日
    浏览(41)
  • Python Matplotlib数据可视化绘图之(六)————图片大小、颜色、标题、纵横坐标、画布和绘图区域背景颜色、Legend(图例)等的参数设置详解

    前面五期的文章详细讲述了Python Matplotlib数据可视化绘图的方法技巧,主要涉及柱状图(《Python Matplotlib数据可视化绘图之(一)————柱状图》)、箱线图(《Python Matplotlib数据可视化绘图之(二)————箱线图》)、散点图(《Python Matplotlib数据可视化绘图之(三)—

    2024年02月06日
    浏览(80)
  • 【AI可视化---04】点亮数据之旅:发现Matplotlib的奇幻绘图世界!用Python挥洒数据音符的创意乐章——这四篇就够了!

      晴川历历汉阳树,芳草萋萋鹦鹉洲。 日暮乡关何处是,烟波江上使人愁。     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌟[2] 2022年度博客之星人工智能领域TOP4🌟   🏅[3] 阿里云社区特邀专家博主🏅   🏆[4] CSDN-人工智能

    2024年02月15日
    浏览(43)
  • 数据预处理matlab matlab数据的获取、预处理、统计、可视化、降维

    1.1 从Excel中获取 使用readtable() 例1: 使用 spreadsheetImportOptions(Name,Value) 初步确定导入信息, 再用 opts.Name=Value 的格式添加。 例2: 先初始化 spreadsheetImportOptions 对象, 再用 opts.Name=Value 的格式逐个添加。 例3: 将导入信息存到变量里, 再使用 spreadsheetImportOptions(Name,Value)

    2024年02月15日
    浏览(54)
  • MATLAB中3D点云数据的处理与可视化

    3D点云数据是表示3D形状的一种数据结构,它通常是通过激光扫描、立体摄影或其他3D扫描技术获得的。处理和可视化这些数据在很多领域中都非常有用,比如计算机视觉、机器人技术、地理信息系统等。MATLAB提供了一系列的工具,可以帮助我们方便地进行3D点云数据的处理与

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包