目录

  • 结合矩阵作图
  • 利用函数表达式作图
  • 交互式作图
  • 四维数据作图
  • 复数作图
  • GIF制作

虽然在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)=0f(x,y)=0f(x,y)=0 (例:x2+y2=1x^2+y^2=1x2+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 ycase ('N')mu=28e-3;case('O')mu=32e-3;otherwisewarning('只能输入大写N,O')
endT=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)

四维数据作图

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

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

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

答案是颜色,如果有玩过热成像仪的朋友应该明白,我们在空间坐标之外还有颜色可以用来表示物理量!我们只要在一般的三维作图基础上加上不同的颜色加以区分就可以利用四维数据作图。

好了,铺垫已经够多了,我们开始动手吧。

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])      % 通过方位角和俯仰角,设置观察角度


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

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

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

复数作图

使用复数作图的优点:可以对复变函数进行作图;可以通过乘 eikπ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

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

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

复数complex的简写为cplx

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

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

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

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

GIF制作

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

下面给出行波的动画程序

pic_num = 1;
t=0:pi/20:4*pi; x=0:0.1*pi:4*pi;    % 不会在循环中改变的变量可以放在循环之外
for i=1:40f=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 == 1imwrite(I,map,'test2.gif','gif','Loopcount',inf,'DelayTime',0.2);   % imwrite函数可将图像写入图形文件elseimwrite(I,map,'test2.gif','gif','WriteMode','append','DelayTime',0.2);endpic_num = pic_num + 1;
end

也可以通过句柄图形系统实现实时动画制作:

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:60y=sin(x-t(i));set(h,'XData',x,'YData',y)drawnowpause(0.2)
end

MATLAB绘图——加强篇相关推荐

  1. 一分钟学习matlab绘图-------直角坐标系篇

    前言 使用方法 : 想清目的,目录定位,一分钟学会,帅气出门. 注:(时间不足,忽略此处)文中每项操作的方法不止一种,笔者仅挑选其中常用的一种进行解释.目的就是简单快捷,方便使用(所有代码都在代码片中 ...

  2. Matlab绘图高级部分

    转载自:http://www.cnblogs.com/jeromeblog/p/3396494.html 图形是呈现数据的一种直观方式,在用Matlab进行数据处理和计算后,我们一般都会以图形的形式将 ...

  3. matlab绘图标题含有n=变量的方法(类似c语言)

    按照惯例,先给出结果: 这里的n=5 是自动生成的,类似于c语言的printf输出. 这里我们使用的是 sprintf()函数. 实现title含有n=5(或者某一个数字)的具体的代码如下: titl ...

  4. matlab画图入门篇--各种基本图形绘制的函数与实例【转载】

    MATLAB画图入门篇--各种基本图形绘制的函数与实例 一. 二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plo ...

  5. (转载)MatLab绘图

    转载自:http://www.cnblogs.com/hxsyl/archive/2012/10/10/2718380.html 转载自:http://www.cnblogs.com/jeromebl ...

  6. matlab 取点画图,matlab绘图小技巧-图像光滑数据取点

    原标题:matlab绘图小技巧-图像光滑&数据取点 小助理之前介绍过Matlab,,一款计算机.医学与生物学的软件,今天转载一篇实操,简单易上手~ 用cftool插值绘图得到拟合后的图像,然后 ...

  7. Matlab—绘图保存为视频VideoWrite()函数用法与自定义视频尺寸

    Matlab-绘图保存为视频VideoWrite()函数用法与自定义视频尺寸 1.早期版本的avifile()函数 Matlab中提供了将显示图形保存成视频的功能.早期的版本使用函数avifile() ...

  8. 数学建模第二天:数学建模工具课之MATLAB绘图操作

    目录 一.前言 二.二维绘图 1.曲线图.散点图plot 2.隐函数.显函数与参数方程的绘图 ①ezplot ②fplot 三.三维绘图 1.单曲线plot3 2.多曲线plot3 3.曲面 ①实曲面 ...

  9. matlab绘图插图_几十年来,制图师一直在瑞士官方地图中隐藏秘密插图

    matlab绘图插图 By Zoey Poll 佐伊·波尔(Zoey Poll) The first three dimensions - length, height, and depth - ar ...

  10. Matlab绘图总结1

    Matlab绘图总结1 ps.此文由matlab自动生成 Contents 概述 2D绘图plot 设置标题,xy轴标签及网格 改变图形窗口背景 绘制多个曲线在一个图上 改变线形及标记 坐标轴(axi ...

最新文章

  1. mybatis的面试一对一,一对多,多对多的mapper.xml配置
  2. Redis集群CentOS系统配置企业级数据备份方案以及数据恢复的操作(在开启AOF功能下恢复冷备RDB文件数据,保持AOF和RDB双开情况下恢复数据及错误的数据恢复步骤详解)
  3. Spring Boot WebFlux 上手教程
  4. react-native 发送接收“广播”
  5. 【Linux】gcc + gdb 安装教程
  6. C++通过文件读写保存用户注册登录信息
  7. 百度又一OCR神器面世!速度提升220%。网友:这也太猛了...
  8. JanusGraph批量导入数据优化
  9. [解读] GuiltyGearXrd‘s Art Style : The X Factor Between 2D and 3D - GGX 3D 渲染 2D 风格
  10. matlab求包络线拟合,MATLAB 一堆散点如何求包络线
  11. mkv linux 封装字幕,【多媒体封装格式详解】---MKV【1】
  12. 腾讯云CentOS7运行基于SSM的个人博客----第三节:使用Dokcer安装JDK、Tomcat环境
  13. Tomcate安装配置
  14. 氰基乙酸乙酯(CAS 105-56-6)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. DNBFT共识——一种可动态调节网络节点数的PBFT优化方案
  16. 【信息系统项目管理师】信息系统与信息化
  17. 字符串处理【AC自动机】 - 原理 AC自动机详解
  18. [L]C语言除法运算截断问题
  19. PC与三菱PLC 485BD模块 无协议通讯模式
  20. OracleDBA系列之--(二)创建数据库

热门文章

  1. 计算机故障排除pdf,计算机常见故障排除方法【藏】.pdf
  2. ZEMAX双胶合透镜设计——光学设计学习笔记1
  3. 自控原理学习笔记-反馈控制系统的动态模型(3)-开环、闭环特征模型
  4. 苹果cms V10 七色中文 二开苹果cms视频 图片 小说网站源码模板
  5. 检测文章相似度的方法?文章原创度检测工具免费
  6. 招聘 | 清华大学计算机系知识工程实验室博士后
  7. Java map转list
  8. tp3.2ajax上传文件,jquery - thinkphp3.2.3 ajax上传图片
  9. 求解鸡兔同笼问题C语言
  10. TeamTalk源码分析(一)—— TeamTalk介绍