Matlab绘图 
强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。 
本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。 
二维绘图 
二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。 
一.绘制二维曲线的基本函数 
在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。 
1. plot函数的基本用法 
plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式 
plot(x,y)     其中x,y为长度相同的向量,存储x坐标和y坐标。 
例51 在[0 , 2pi]区间,绘制曲线 
程序如下:在命令窗口中输入以下命令  
>> x=0:pi/100:2*pi; 
>> y=2*exp(-0.5*x).*sin(2*pi*x); 
>> plot(x,y) 
程序执行后,打开一个图形窗口,在其中绘制出如下曲线 
注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。

例52 绘制曲线 
这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线: 
>> t=-pi:pi/100:pi; 
>> x=t.*cos(3*t); 
>> y=t.*sin(t).*sin(t); 
>> plot(x,y) 
程序执行后,打开一个图形窗口,在其中绘制出如下曲线

以上提到plot函数的自变量x,y为长度相同的向量,这是最常见、最基本的用法。实际应用中还有一些变化。分别说明:

2. 含多个输入参数的plot函数 
plot函数可以包含若干组向量对,每一组可以绘制出一条曲线。含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,…,xn,yn) 
如下列命令可以在同一坐标中画出3条曲线。 
>> x=linspace(0,2*pi,100); 
>> plot(x,sin(x),x,2*sin(x),x,3*sin(x))

当输入参数有矩阵形式时,配对的x,y按对应的列元素为横坐标和纵坐标绘制曲线,曲线条数等于矩阵的列数。

>> x=linspace(0,2*pi,100); 
>> y1=sin(x); 
>> y2=2*sin(x); 
>> y3=3*sin(x); 
>> x=[x;x;x]'; 
>> y=[y1;y2;y3]'; 
>> plot(x,y,x,cos(x)) 
x,y都是含有三列的矩阵,它们组成输入参数对,绘制三条曲线;x和cos(x)又组成一对,绘制一条余弦曲线。 
利用plot函数可以直接将矩阵的数据绘制在图形窗体中,此时plot函数将矩阵的每一列数据作为一条曲线绘制在窗体中。如 
>> A=pascal(5) 
A = 
     1     1     1     1     1 
     1     2     3     4     5 
     1      3     6    10    15 
     1     4    10    20    35 
     1     5    15    35    70 
>> plot(A)

3. 含选项的plot函数 
Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示: 
线型 颜色 标记符号 
- 实线 b蓝色 .   点 s 方块 
: 虚线 g绿色 o 圆圈 d 菱形 
-. 点划线 r红色 × 叉号 ∨朝下三角符号 
-- 双划线 c青色 + 加号 ∧朝上三角符号 
m品红 * 星号 <朝左三角符号 
y黄色 >朝右三角符号 
k黑色 p 五角星 
w白色 h 六角星

例 用不同的线型和颜色在同一坐标内绘制曲线 及其包络线。 
>> x=(0:pi/100:2*pi)'; 
>> y1=2*exp(-0.5*x)*[1,-1]; 
>> y2=2*exp(-0.5*x).*sin(2*pi*x); 
>> x1=(0:12)/2; 
>> y3=2*exp(-0.5*x1).*sin(2*pi*x1); 
>> plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp');

在该plot函数中包含了3组绘图参数,第一组用黑色虚线画出两条包络线,第二组用蓝色双划线画出曲线y,第三组用红色五角星离散标出数据点。 
4. 双纵坐标函数plotyy 
在Matlab中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy函数,它能把具有不同量纲,不同数量级的两个函数绘制在同一个坐标中,有利于图形数据的对比分析。使用格式为:plotyy(x1,y1,x2,y2) 
x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左边的对应x1,y1数据对,右边的对应x2,y2。 
例:(略) 
二.绘制图形的辅助操作 
绘制完图形以后,可能还需要对图形进行一些辅助操作,以使图形意义更加明确,可读性更强。 
1. 图形标注 
在绘制图形时,可以对图形加上一些说明,如图形的名称、坐标轴说明以及图形某一部分的含义等,这些操作称为添加图形标注。有关图形标注函数的调用格式为: 
title(’图形名称’) (都放在单引号内) 
xlabel(’x轴说明’) 
ylabel(’y轴说明’) 
text(x,y,’图形说明’) 
legend(’图例1’,’图例2’,…) P190 
其中,title、xlabel和ylabel函数分别用于说明图形和坐标轴的名称。text函数是在坐标点(x,y)处添加图形说明。(P88 或用gtext命令)。legend函数用于绘制曲线所用线型、颜色或数据点标记图例,图例放置在空白处,用户还可以通过鼠标移动图例,将其放到所希望的位置。除legend函数外,其他函数同样适用于三维图形,在三维中z坐标轴说明用zlabel函数。 
上述函数中的说明文字,除了使用标准的ASCII字符外,还可以使用LaTex(一种流行的数学排版软件)格式的控制字符,这样就可以在图形上添加希腊字符,数学符号和公式等内容。在Matlab支持的LaTex字符串中,用/bf , /it , /rm控制字符分别定义黑体、斜体和正体字符,受LaTex字符串控制部分要加大括号{}括起来。例如,text(0.3,0.5,’the usful {/bf MATLAB}’),将使MATLAB一词黑体显示。一些常用的LaTex字符见表,各个字符可以单独使用也可以和其他字符及命令配合使用。如text(0.3 ,0.5 ,’sin({/omega}t+{/beta})’) 
将得到标注效果 。 
标识符 符号 标识符 符号 标识符 符号 
/alpha /epsilon /infty
/beta /eta /int
/gamma /Gamma /partial
/delta /Delta /leftarrow
/theta /Theta /rightarrow
/lambda /Lambda /downarrow
/xi /Xi /uparrow
/pi /Pi /div
/omega /Omega /times
/sigma /Sigma /pm
/phi /Phi /leq
/psi /Psi /geq
/rho /tau /neq
/mu /zeta /forall
/nu /chi /exists
绘图程序可以参考 Matlab源码:http://www.eyesourcecode.com/forum-Matlab-1.html

Matlab 绘图全方位分析及源码的更多相关文章

  1. Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)

    原文:[原创]Matlab.NET混合编程技巧之--直接调用Matlab内置函数(附源码) 在我的上一篇文章[原创]Matlab.NET混编技巧之——找出Matlab内置函数中,已经大概的介绍了mat ...

  2. Android源码分析--CircleImageView 源码详解

    源码地址为 https://github.com/hdodenhof/CircleImageView 实际上就是一个圆形的imageview 的自定义控件.代码写的很优雅,实现效果也很好, 特此分析. ...

  3. 一 分析easyswoole源码(启动服务)

    分析easyswoole源码 1以启动为例 //检查是否已经安装 installCheck();//检查锁文件是否存在,不存在结束 //启动服务 serverStart showLogo();//显示 ...

  4. 分析jQuery源码时记录的一点感悟

    分析jQuery源码时记录的一点感悟      1.  链式写法      这是jQuery语法上的最大特色,也许该改改POJO里的set方法,和其他的非get方法什么的,可以把多行代码合并,减去每次 ...

  5. Linux内核(2) - 分析内核源码如何入手(上)

    透过现象看本质,兽兽们无非就是一些人体艺术展示.同样往本质里看过去,学习内核,就是学习内核的源代码,任何内核有关的书籍都是基于内核,而又不高于内核的. 既然要学习内核源码,就要经常对内核代码进行分析, ...

  6. STM32F103 ucLinux开发之一(BOOT分析及源码)

    STM32F103 ucLinux开发BOOT STM3210E-EVAL官方开发板主芯片STM32F103ZET6: 片内512K Flash,地址0x0800 0000 ~ 0x0807 FFFF ...

  7. Activiti架构分析及源码详解

    目录 Activiti架构分析及源码详解 引言 一.Activiti设计解析-架构&领域模型 1.1 架构 1.2 领域模型 二.Activiti设计解析-PVM执行树 2.1 核心理念 2. ...

  8. JVM源码分析-JVM源码编译与调试

    要分析JVM的源码,结合资料直接阅读是一种方式,但是遇到一些想不通的场景,必须要结合调试,查看执行路径以及参数具体的值,才能搞得明白.所以我们先来把JVM的源码进行编译,并能够使用GDB进行调试. 编 ...

  9. [源码分析] 从源码入手看 Flink Watermark 之传播过程

    [源码分析] 从源码入手看 Flink Watermark 之传播过程 0x00 摘要 本文将通过源码分析,带领大家熟悉Flink Watermark 之传播过程,顺便也可以对Flink整体逻辑有一个 ...

随机推荐

  1. npm使用问题总结

    1.报错npm run dev error [npm ERR! code ELIFECYCLE] 解决方法 rm -rf node_modules rm package-lock.json npm c ...

  2. nodeJS学习(8)--- WS/...开发 NodeJS 项目-节3 <使用 mongodb 完整实例过程>

    使用 mongodb 的小系统 参考:https://my.oschina.net/chenhao901007/blog/312367 1. Robomongo 创建项目的数据库和数据表 参考:htt ...

  3. cf 235C 后缀自动机

    题目大意 给定字符串\(S\)与\(n<=10^5\)个串\(x_1,x_2...x_n\)(总长\(\le10^6\)) 对于每个\(x_i\),输出有多少个\(S\)的子串与\(x_i\)循 ...

  4. hdu 5930 GCD 线段树上二分/ 强行合并维护信息

    from NOIP2016模拟题28 题目大意 n个点的序列,权值\(<=10^6\) q个操作 1.单点修改 2.求所有区间gcd中,不同数个数 分析 1.以一个点为端点,向左或向右的gcd种 ...

  5. 洛谷 [P1608] 最短路计数

    最短路计数模版 本题要注意重边的处理 #include <iostream> #include <cstdio> #include <algorithm> #inc ...

  6. 【转】SqlCacheDependency的使用 强大的功能

    原文发布时间为:2009-10-25 -- 来源于本人的百度文章 [由搬家工具导入]     最近我在忙于研究负载平衡、并发性容错性等性能优化问题,ASP.NET有太多强大的功能等待学习和挖掘。今天, ...

  7. JavaScript内部是这样运行

    编译阶段 词法分析(Lexing) 这个过程会将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代 码块被称为词法单元(token). 简单举个例子:c = b - a 转换为 NAME ...

  8. phpexcel--导入excel表格

    最近在做一个小项目,就是一个管理信息的小系统:要求有导入和导出的信息为excel的功能,研究过导入导出功能的肯定知道导出要比导入的简单多了,导入用的phpexcel,当时对phpexcel是完全不了解 ...

  9. vue element-ui Tabs 标签页实现【更多】功能

    element-ui Tabs本身是没有更多功能的,如果在外边添加一个更多按钮,又非常不好看, 而利用API中Tabs Attributes的before-leave勾子方法可以实现这个功能, 简单P ...

  10. UVA - 294 Divisors【数论/区间内约数最多的数的约数个数】

    Mathematicians love all sorts of odd properties of numbers. For instance, they consider to be an int ...