MATLAB有很强的图形功能,可以方便地实现数据的视觉化。强大的计算功能与图形功能相结合为MATLAB在科学技术和教学方面的应用提供了更加广阔的天地。下面着重介绍二维图形的画法,对三维图形只作简单叙述。

6.1  二维图形的绘制

6.1.1 基本形式

二维图形的绘制是MATLAB语言图形处理的基础,MATLAB最常用的画二维图形的命令是plot,看两个简单的例子:

>> y=[0  0.58  0.70  0.95  0.83  0.25];

>> plot(y)

生成的图形是以序号 为横坐标、数组y的数值为纵坐标画出的折线。

>> x=linspace(0,2*pi,30);     % 生成一组线性等距的数值

>> y=sin(x);

>> plot(x,y)

生成的图形是 上30个点连成的光滑的正弦曲线。

6.1.2 多重线

在同一个画面上可以画许多条曲线,只需多给出几个数组,例如

>> x=0:pi/15:2*pi;

>> y1=sin(x);

>> y2=cos(x);

>> plot(x,y1,x,y2)

则可以画出图5-3。多重线的另一种画法是利用hold命令。在已经画好的图形上,若设置hold on,MATLA将把新的plot命令产生的图形画在原来的图形上。而命令hold off 将结束这个过程。例如:

>> x=linspace(0,2*pi,30);  y=sin(x);  plot(x,y)

先画好图5-2,然后用下述命令增加cos(x)的图形,也可得到图5-3。

>> hold on

>> z=cos(x);  plot(x,z)

>> hold off

6.1.3 线型和颜色

MATLAB对曲线的线型和颜色有许多选择,标注的方法是在每一对数组后加一个字符串参数,说明如下:

线型   线方式:  - 实线   :点线    -. 虚点线     - - 波折线。

线型   点方式:  . 圆点   +加号    * 星号     x  x形    o 小圆

颜色:   y黄; r红; g绿;  b蓝;  w白;  k黑;  m紫; c青.

以下面的例子说明用法:

>> x=0:pi/15:2*pi;

>> y1=sin(x);  y2=cos(x);

>> plot(x,y1,’b:+’,x,y2,’g-.*’)

6.1.4 网格和标记

在一个图形上可以加网格、标题、x轴标记、y轴标记,用下列命令完成这些工作。

>> x=linspace(0,2*pi,30);  y=sin(x);  z=cos(x);

>> plot(x,y,x,z)

>> grid

>> xlabel(‘Independent Variable X’)

>> ylabel(‘Dependent Variables Y and Z’)

>> title(‘Sine and Cosine Curves’)

也可以在图形的任何位置加上一个字符串,如用:

>> text(2.5,0.7,’sinx’)

表示在坐标x=2.5, y=0.7处加上字符串sinx。更方便的是用鼠标来确定字符串的位置,方法是输入命令:

>> gtext(‘sinx’)

在图形窗口十字线的交点是字符串的位置,用鼠标点一下就可以将字符串放在那里。

6.1.5 坐标系的控制

在缺省情况下MATLAB自动选择图形的横、纵坐标的比例,如果你对这个比例不满意,可以用axis命令控制,常用的有:

axis([xmin xmax ymin ymax])   [  ]中分别给出x轴和y轴的最大值、最小值

axis equal  或  axis(‘equal’)      x轴和y轴的单位长度相同

axis square  或  axis(‘square’)     图框呈方形

axis off  或  axis(‘off’)          清除坐标刻度

还有axis auto   axis image    axis xy   axis ij   axis normal   axis on   axis(axis)

用法可参考在线帮助系统。

6.1.6 多幅图形

可以在同一个画面上建立几个坐标系, 用subplot(m,n,p)命令;把一个画面分成m×n个图形区域, p代表当前的区域号,在每个区域中分别画一个图,如

>> x=linspace(0,2*pi,30);   y=sin(x);  z=cos(x);

>> u=2*sin(x).*cos(x);  v=sin(x)./cos(x);

>> subplot(2,2,1),plot(x,y),axis([0 2*pi –1 1]),title(‘sin(x)’)

>> subplot(2,2,2),plot(x,z),axis([0 2*pi –1 1]),title(‘cos(x)’)

>> subplot(2,2,3),plot(x,u),axis([0 2*pi –1 1]),title(‘2sin(x)cos(x)’)

>> subplot(2,2,4),plot(x,v),axis([0 2*pi –20 20]),title(‘sin(x)/cos(x)’)

6.2  三维图形

限于篇幅这里只对几种常用的命令通过例子作简单介绍.

6.2.1   带网格的曲面

例  作曲面z=f(x,y)的图形

用以下程序实现:

>> x=-7.5:0.5;7.5;

>> y=x;

>> [X,Y]=meshgrid(x,y);      (3维图形的X,Y数组)

>> R=sqrt(X.^2+Y.^2)+eps;    (加eps是防止出现0/0)

>> Z=sin(R)./R;

>> mesh(X,Y,Z)              (3维网格表面)

画出的图形如图5-7. mesh命令也可以改为surf, 只是图形效果有所不同,读者可以上机查看结果。

6.2.2   空间曲线

例   作螺旋线 x=sint, y=cost, z=t

用以下程序实现:

>> t=0:pi/50:10*pi;

>> plot3(sin(t),cos(t),t)    (空间曲线作图函数, 用法类似于plot)

画出的图形如图5-8

6.2.3   等高线

用contour 或 contour3 画曲面的等高线,如对图5-7的曲面, 在上面的程序后接

contour(X,Y,Z,10) 即可得到10条等高线。

6.2.4  其它

较有用的是给三维图形指定观察点的命令view(azi,ele),azi 是方位角, ele 是仰角.缺省时 azi= ele= .

三维网图的高级处理

1. 消隐处理

例.比较网图消隐前后的图形

z=peaks(50);

subplot(2,1,1);

mesh(z);

title('消隐前的网图')

hidden off

subplot(2,1,2)

mesh(z);

title('消隐后的网图')

hidden on

colormap([0 0 1])

2.       裁剪处理

利用不定数NaN的特点,可以对网图进行裁剪处理

例.图形裁剪处理

P=peaks(30);

subplot(2,1,1);

mesh(P);

title('裁剪前的网图')

subplot(2,1,2);

P(20:23,9:15)=NaN*ones(4,7);        %剪孔

meshz(P)                         %垂帘网线图

title('裁剪后的网图')

colormap([0 0 1])                   %蓝色网线

注意裁剪时矩阵的对应关系,即大小一定要相同.

3.       三维旋转体的绘制

为了一些专业用户可以更方便地绘制出三维旋转体,MATLAB专门提供了2个函数:柱面函数cylinder和球面函数sphere

(1)   柱面图

柱面图绘制由函数cylinder实现.

[X,Y,Z]=cylinder(R,N)  此函数以母线向量R生成单位柱面.母线向量R是在单位高度里等分刻度上定义的半径向量.N为旋转圆周上的分格线的条数.可以用surf(X,Y,Z)来表示此柱面.

[X,Y,Z]=cylinder(R)或[X,Y,Z]=cylinder此形式为默认N=20且R=[1 1]

例.柱面函数演示举例

x=0:pi/20:pi*3;

r=5+cos(x);

[a,b,c]=cylinder(r,30);

mesh(a,b,c)

例.旋转柱面图.

r=abs(exp(-0.25*t).*sin(t));

t=0:pi/12:3*pi;

r=abs(exp(-0.25*t).*sin(t));

[X,Y,Z]=cylinder(r,30);

mesh(X,Y,Z)

colormap([1 0 0])

(2).球面图

球面图绘制由函数sphere来实现

[X,Y,Z]=sphere(N)             此函数生成3个(N+1)*(N+1)的矩阵,利用函数        surf(X,Y,Z) 可产生单位球面.

[X,Y,Z]=sphere         此形式使用了默认值N=20.

Sphere(N)             只是绘制了球面图而不返回任何值.

例.绘制地球表面的气温分布示意图.

[a,b,c]=sphere(40);

t=abs(c);

surf(a,b,c,t);

axis('equal')   %此两句控制坐标轴的大小相同.

axis('square')

colormap('hot')

6.3

其他各种二维绘图函数

bar 长条图

errorbar 图形加上误差范围

fplot 较精确的函数图形

polar 极座标图

hist 累计图

rose 极座标累计图

stairs 阶梯图

stem 针状图

fill 实心图

feather 羽毛图

compass 罗盘图

quiver 向量场图

以下我们针对每个函数举例。

当资料点数量不多时,长条图是很适合的表示方式:

close all; % 关闭所有的图形视窗

x=1:10;

y=rand(size(x));

bar(x,y);

如果已知资料的误差量,就可用errorbar来表示。下例以单位标准差来做资的误差量:

x = linspace(0,2*pi,30);

y = sin(x);

e = std(y)*ones(size(x));

errorbar(x,y,e)

对於变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样,如下例:

fplot('sin(1/x)', [0.02 0.2]); % [0.02 0.2]是绘图范围

若要产生极座标图形,可用polar:

theta=linspace(0, 2*pi);

r=cos(4*theta);

polar(theta, r);

对於大量的资料,我们可用hist来显示资料的分 情况和统计特性。下面几个命令可用来验证randn产生的高斯乱数分 :

x=randn(5000, 1); % 产生5000个 m=0,s=1 的高斯乱数

hist(x,20); % 20代表长条的个数

rose和hist很接近,只不过是将资料大小视为角度,资料个数视为距离,并用极座标绘制

表示:

x=randn(1000, 1);

rose(x);

stairs可画出阶梯图:

x=linspace(0,10,50);

y=sin(x).*exp(-x/3);

stairs(x,y);

stems可产生针状图,常被用来绘制数位讯号:

x=linspace(0,10,50);

y=sin(x).*exp(-x/3);

stem(x,y);

stairs将资料点视为多边行顶点,并将此多边行涂上颜色:

x=linspace(0,10,50);

y=sin(x).*exp(-x/3);

fill(x,y,'b'); % 'b'为蓝色

feather将每一个资料点视复数,并以箭号画出:

theta=linspace(0, 2*pi, 20);

z = cos(theta)+i*sin(theta);

feather(z);

compass和feather很接近,只是每个箭号的起点都在圆点:

theta=linspace(0, 2*pi, 20);

z = cos(theta)+i*sin(theta);

compass(z);

6.4图形的输出

在数学建模中,往往需要将产生的图形输出到Word文档中。通常可采用下述方法:

首先,在MATLAB图形窗口中选择【File】菜单中的【Export】选项,将打开图形输出对话框,在该对话框中可以把图形以emf、bmp、jpg、pgm等格式保存。然后,再打开相应的文档,并在该文档中选择【插入】菜单中的【图片】选项插入相应的图片即可。

matlab的图形功能主要包括,6、MATLAB图形功能相关推荐

  1. matlab 光流法工具箱,MatlabToolBox-PIV Special Effects 图形图像处理 267万源代码下载- www.pudn.com...

    文件名称: MatlabToolBox-PIV下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 4944 KB 上传时间: 2016-11-25 下载次数: ...

  2. matlab 三维立体图,(精)MATLAB三维图形绘制.ppt

    4.2 MATLAB的 三维图形绘制 二.绘制三维网格图和曲面图 2. 三维网格图 3. 三维曲面图 三.绘制三维旋转体 四.立体图形与图轴的控制 五.色彩的控制 2.色图的显示和处理 (2) 浓淡处 ...

  3. matlab图形绘制经典案例,MATLAB经典教程第四章_图形绘制.ppt

    <MATLAB经典教程第四章_图形绘制.ppt>由会员分享,可在线阅读,更多相关<MATLAB经典教程第四章_图形绘制.ppt(32页珍藏版)>请在人人文库网上搜索. 1.Ma ...

  4. 如何使用MATLAB绘制不同类型的二维图形

    如何使用MATLAB绘制不同类型的二维图形 听语音 | 浏览:360 | 更新:2014-11-30 18:10 | 标签:matlab 1 2 3 4 5 分步阅读 如何用MATLAB绘制各种二维图 ...

  5. MATLAB图形的修饰(选择图形窗口、线型点颜色、坐标轴、图形标注、栅格和图形叠加的设置)

    在绘制曲线时,MATLAB自动安排曲线的线型.颜色及坐标等属性,有时需要用户对图形的坐标.曲线和注释等进行进一步的修饰,以增加图像的可读性,突出结果的显示. MATLAB提供了一些函数可以对图形进行修 ...

  6. Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴)

    Matlab绘图基础--利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制多个坐标轴) - 司徒鲜生 - 博客园 Matlab中axes函数解析_ljh0302的博客-CSDN博客_ ...

  7. Matlab:数学之美--绘制分形图形

    Matlab:数学之美–绘制分形图形 学习最好的动力是兴趣,所以我们先看看效果: 这一篇与Java学习日记:数学之美-分形图形绘制有共同之处,只是所用的工具不同. clear; %不同的参数有不同的图 ...

  8. matlab 李萨如_基于MATLAB的李萨如图形研究

    内容简介: 基于MATLAB的李萨如图形研究,毕业论文,说明书共20页,5144字,附开题报告.任务书.源程序等. 摘要 质点在相互垂直的分振动频率比成有理数的情况下,合成振动轨迹为稳定的曲线,曲线的 ...

  9. 如何将matlab中多个m文件的图形,在一个图形上面显示

    将matlab中多个m文件的图形在同一个小窗口上显示的前提是坐标系相同,下面就做简单的介绍: 1.新建一个huatu1.m文件,三角函数为例,程序如下: x=0:1:360; y=sind(x); p ...

最新文章

  1. 2019年2月26日 Unique Email Addresses、To Lower Case、Encode and Decode TinyURL
  2. hive(3)——使用mapreduce
  3. krsort_PHP krsort()函数与示例
  4. hdoj-3342-Legal or Not(拓扑排序)
  5. 使用 Spring 2.5 注释驱动的 IoC 功能
  6. 速度申请!2020年度腾讯犀牛鸟精英人才培养计划今日发布
  7. Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)
  8. jquery实现上下左右键盘监听_基于 jQuery 实现键盘事件监听控件
  9. SpringBoot 接收 单个String入参之解决方案
  10. Virtual Machine Manager 2012 R2利用服务模板部署SQL
  11. Base64编码详解及其变种(解决加号在URL变空格问题)
  12. java 数组减除值_java – 删除数组中空值的最有效方法是什么.
  13. JavaScript GET 和 POST 请求的区别详解
  14. PHP网站安全日志系统开发与部署
  15. vbs的msgbox的恶搞文件
  16. 微信开发者工具稳定版本的使用经验分享
  17. 三星note5 android9,史上最快!三星公布新版安卓9.0升级名单:Note FE在内
  18. Java如何读取和操作上G文本数据
  19. Unity——责任链模式(土味情话传递)
  20. 设计Weekday类

热门文章

  1. gradle mysql方言_2020 年 4月 随笔档案 - xj_aks - 博客园
  2. 按键精灵刷阿里妈妈广告联盟源码 后台运行 并显示点击次数 亲测有效
  3. 大公司内部的标准开发文档模板下载
  4. 【论文】——Once-for-All: Train One Network and Specialize it for Efficient Deployment阅读
  5. HDD/SSD基础知识及工作原理
  6. 逆向破解思路和获取app的代码,脱壳操作(四)
  7. win10磁盘100官方解释_Win10系统下磁盘占用100%常用处理方法
  8. 在计算机领域中不常用到的数值是,第一章计算机应用基础..doc
  9. 中央单位高级职称评审委员会备案目录
  10. 高压电源模块5V/12V/24V升90V/200V/450V/900V升压电路