文档库 最新最全的文档下载
当前位置:文档库 › 第五章MATLAB的绘画与图形处理

第五章MATLAB的绘画与图形处理

第五章MATLAB的绘画与图形处理
第五章MATLAB的绘画与图形处理

第五章 MATLAB 的绘画与图形处理

MATLAB 具有非常强大的二维和三维绘图功能,尤其擅长于各种科学运算结果的优秀可视化。

5.1二维曲线的绘制

5.1.1基本绘图命令plot

plot 命令是MATLAB 中最简单而且使用最广泛的一个绘图命令,用来绘制二维曲线。 1. plot(x,y) 语法:

plot(x,y) %绘制以x 为横坐标y 为纵坐标的二维曲线

【例5.1】绘制正弦曲线y=sin(x)和方波曲线,如图5.1所示。

>> x1=0:0.1:2*pi; >> y1=sin(x1); %y1为x1的正弦函数 >> plot(x1,y1);

>> x2=[0 1 1 2 2 3 ]; >> y2=[1 1 0 0 1 1 ];

>> plot(x2,y2);

>> axis([0 4,0 2])

%将坐标轴范围设定为0-4和0-2

2. plot(x1,y1,x2,y2,…)绘制多条曲线

plot 命令还可以同时绘制多条曲线,用多个矩阵对为参数,MATLAB 自动以不同的颜色绘制不同曲线。

【例5.2】绘制三条曲线,如图5.2所示。

图5.1 (a) 正弦曲线

(b) 方波曲线

>> x=0:0.1:2*pi;

>> plot(x,sin(x),x,cos(x),x,sin(3*x)) %画三条曲线

图5.2 三条曲线

5.1.2绘制曲线的一般步骤

表5.1为绘制二维、三维图形一般步骤的归纳。

表5.1绘制二维、三维图形的一般步骤

内容

曲线数据准备:

对于二维曲线,横坐标和纵坐标数据变量;

说明:

?步骤1和3是最基本的绘图步骤,如果利用MA TLAB的默认设置通常只需要这两个基本步骤就可以基本绘制出图形,而其他步骤并不完全必需。

?步骤2一般在图形较多的情况下,需要指定图形窗口、子图时使用。

除了步骤1、2、3的其他步骤用户可以根据自己需要改变前后次序。

5.1.3多个图形绘制的方法

1. 指定图形窗口

如果需要多个图形窗口同时打开时,可以使用figure语句。

语法:

figure(n) %产生新图形窗口

说明:如果该窗口不存在,则产生新图形窗口并设置为当前图形窗口,该窗口名为“Figure No.n”,而不关闭其它窗口。

2. 同一窗口多个子图

如果需要在同一个图形窗口中布置几幅独立的子图,可以在plot命令前加上subplot命令来将一个图形窗口划分为多个区域,每个区域一幅子图。

语法:

subplot(m,n,k) %使(m×n)幅子图中的第k幅成为当前图

说明:将图形窗口划分为m×n幅子图,k是当前子图的编号,“,”可以省略。子图的序号编排原则是:左上方为第1幅,先向右后向下依次排列,子图彼此之间独立。

【例5.3】用subplot命令画四个子图,如图5.3所示。

>> x=0:0.1:2*pi;

>> subplot(2,2,1) %分割为2*2个子图,左上方为当前图

>> plot(x,sin(x))

>> subplot(2,2,2) %右上方为当前图

>> plot(x,cos(x))

>> subplot(2,2,3) %左下方为当前图

>> plot(x,sin(3*x))

>> subplot(224) %右下方为当前图,省略逗号

>> plot(x,cos(3*x))

图5.3 四个子图

如果在使用绘图命令之后,想清除图形窗口画其它图形,应使用“clf”命令清图形窗。

>>clf %清除子图

3. 同一窗口多次叠绘

为了在一个坐标系中增加新的图形对象,可以用“hold”命令来保留原图形对象。

语法:

hold on %使当前坐标系和图形保留

hold off %使当前坐标系和图形不保留

hold %在以上两个命令中切换

说明:在设置了“hold on”后,如果画多个图形对象,则在生成新的图形时保留当前坐标系中已存在的图形对象,MATLAB会根据新图形的大小,重新改变坐标系的比例。

【例5.4】在同一窗口画出函数sinx在区间[0 2π]的曲线和cosx在区间[-ππ]的曲线,如图5.7所示。

>> x1=0:0.1:2*pi;

>> plot(x1,sin(x1))

>> hold on

>> x2=-pi:.1:pi;

>> plot(x2,cos(x2))

程序分析:坐标系的范围由0~2π转变为-π~2π。

图5.4 用hold on在同一窗口

5.1.4曲线的线型、颜色和数据点形

plot命令还可以设置曲线的线段类型、颜色和数据点形等,如表5.2所示。

表5.2 线段、颜色与数据点形

数据点间连线数据点形

符号类型符号类型

语法:

plot(x,y, s)

说明:x 为横坐标矩阵,y 为纵坐标矩阵,s 为类型说明字符串参数;s 字符串可以是线段类型、颜色和数据点形三种类型的符号之一,也可以是三种类型符号的组合。

【例5.5】用不同线段类型、颜色和数据点形画出sinx 和cosx 曲线,如图5.5所示。

>> x=0:0.1:2*pi;

>> plot(x,sin(x),'r-.') %用红色点划线画出曲线

>> hold on

>> plot(x,cos(x),'b:o')

%用蓝色圆圈画出曲线,用点线连接

5.1.5设置坐标轴和文字标注

1. 坐标轴的控制

用坐标控制命令axis 来控制坐标轴的特性,表5.3列出其常用控制命令。

表5.3 常用的坐标控制命令

含义

命令 含义使用默认设置 axis equal 纵、横轴采用等长刻度使当前坐标范围不变 axis fill 在manual 满整个绘图区取消轴背景 axis image 纵、图5.5在同一窗口画出两条曲线

2. 分格线和坐标框

(1) 使用grid命令显示分格线

语法:

grid on %显示分格线

grid off %不显示分格线

grid%在以上两个命令间切换

说明:不显示分格线是MATLAB的默认设置。分格线的疏密取决于坐标刻度,如果要改变分格线的疏密,必须先定义坐标刻度。

(2) 使用box命令显示坐标框

语法:

box on %使当前坐标框呈封闭形式

box off %使当前坐标框呈开启形式

box %在以上两个命令间切换

说明:在默认情况下,所画的坐标框呈封闭形式。

【例5.6】在两个子图中使用坐标轴、分格线和坐标框控制,如图5.6所示。

>> x=0:0.1:2*pi;

>> subplot(2,1,1)

>> plot(sin(x),cos(x))

>> axis equal %纵、横轴采用等长刻度

>> grid on %加分格线

>> subplot(2,1,2)

>> plot(x,exp(-x))

>> axis([0,3,0,2]) %改变坐标轴范围

图5.6 用坐标轴、分格线和坐标框控制

3. 文字标注

(1) 添加图名

语法:

title(s) %书写图名

说明:s为图名,为字符串,可以是英文或中文。

(2) 添加坐标轴名

语法:

xlabel(s) %横坐标轴名

ylabel(s) %纵坐标轴名

(3) 添加图例

语法:

legend(s,pos) %在指定位置建立图例

legend off %擦除当前图中的图例

说明:参数s是图例中的文字注释,如果多个注释则可以用’s1’,’s2’,…的方式;参数pos 是图例在图上位置的指定符,它的取值如表5.4所示。

表5.4pos取值所对应的图例位置

用legend命令在图形窗口中产生图例后,还可以用鼠标对其进行拖拉操作,将图例拖到满意的位置。

(4) 添加文字注释

语法:

text(xt,yt,s) %在图形的(xt,yt)坐标处书写文字注释

【例5.7】在图形窗口中添加文字注释,如图5.7所示。

>> x=0:0.1:2*pi;

>> plot(x,sin(x))

>> hold on

>> plot(x,cos(x),'ro')

>> title('y1=sin(x),y2=cos(x)') %添加标题

>> xlabel('x') %添加横坐标名

>> legend('sin(x)','cos(x)',4) %在右下角添加图例

>> text(pi,sin(pi),'x=\pi') %在pi,sin(pi)处添加文字注释

上机练习1:

上机练习:例5.3~5.7,熟悉matlab 二维曲线的绘制

5.2 MATLAB 的三维图形绘制

5.2.1绘制三维曲线图命令plot3

plot3是用来绘制三维曲线的,它的使用格式与二维绘图的plot 命令很相似。 语法:

plot3(x,y,z,s) %绘制三维曲线 plot3(x1,y1,z1, s1,x2,y2,z2,s2,…) %绘制多条三维曲线

说明:当x 、y 、z 是同维向量时,则绘制以x 、y 、z 元素为坐标的三维曲线;当x 、y 、z 是同维矩阵时,则绘制三维曲线的条数等于矩阵的列数。s 是指定线型、色彩、数据点形的字符串。

【例5.8】三维曲线绘图,如图5.8所示。

绘制三维图形,y=sin(x),z=cos(x); 在(0,20*pi )之间的图形。

>>x=0:0.1:20*pi; >> y=sin(x); >> z=cos(x);

>> plot3(x,y,z);

%按系统默认设置绘图

5.2.2绘制三维网线图和曲面图

如果已知二元函数z=f(x,y),则可以绘制出该函数的三维曲面图。在绘制三维图之前应先调用meshgrid()函数生成网格矩阵数据x

和y,这样即可按函数公式用点运算的方式计算出z 矩阵,之后用mesh()或surf()等函数进行三维图形绘制,具体的函数调用格式为:

图5.8 三维曲线

[X,Y]=meshgrid(x,y);生成网格数据

Z=…,例如Z=X.*Y;计算二元函数Z的矩阵

Mesh(X,Y,Z);绘制网线图

Surf(X,Y,Z);绘制曲面图

1. meshgrid命令

为了绘制三维立体图形,MATLAB的方法是将x方向划分为m份,将y方向划分为n 份,meshgrid命令是以x、y向量为基准,来产生在x-y平面的各栅格点坐标值的矩阵。

语法:

[X,Y]=meshgrid(x,y)

说明:X、Y是栅格点的坐标,为矩阵;x、y为向量。

例如,将x(1×m)向量和y(1×n)向量转换为(n×m)的矩阵:

>> x=[1 2 3 4];

>> y=[5 6 7];

>> [X,Y]=meshgrid(x,y)

X =

1 2 3 4

1 2 3 4

1 2 3 4

Y =

5 5 5 5

6 6 6 6

7 7 7 7

【例5.9】使用peaks函数来测试meshgrid命令,并使用mesh命令来查看meshgrid的输出。

(MATLAB提供了peaks函数,peaks是Matlab内置的,常用于做演示使用的函数,特别是绘制三维图形的时候,peaks函数根据输入参数不同,返回一个山峰的三维坐标数据) 在下面的图5.9中可以看到。其x和y坐标分别为在[-3 3]范围内的49×49的矩阵,z 坐标与x、y的关系为:

Z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...

- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...

- 1/3*exp(-(x+1).^2 - y.^2)

>> x=linspace(-3,3,49);

>> y=linspace(-3,3,49);

>> [X,Y]=meshgrid(x,y) ; %产生49*49的栅格点坐标

>> mesh(X) %查看xx的网线图

>> mesh(Y)

X 和Y 分别为49×49的矩阵,如图5.9为X 和Y 的网状图。

>>Z=3*(1-xx).^2.*exp(-(xx.^2) - (yy+1).^2) ...

- 10*(xx/5 - xx.^3 - yy.^5).*exp(-xx.^2-yy.^2) ... - 1/3*exp(-(xx+1).^2 - yy.^2); %产生peaks 函数 >> plot3(X,Y,Z)

图5.9 (a) X 的网格图 (b) Y 的网格图

图5.9 peaks函数的三维线图

2. 三维网线图

语法:

mesh(z) %画三维网线图

mesh(x,y,z,c)

说明:当只有参数z时,以z矩阵的行下标作为x坐标轴,把z的列下标当作y坐标轴;x、y分别为x、y坐标轴的自变量;当有x、y、z参数时,c是指定各点的用色矩阵,当c 省略时默认用色矩阵是z的数据。如果x、y、z、c四个参数都有,则应该都是维数相同的矩阵。

【例5.9续】用mesh查看peaks函数的三维网线图,如图5.10所示。

>> mesh(X,Y,Z)

图5.10 peaks函数的三维网线图

3. 三维曲面图

语法:

surf (z) %画三维曲面图

surf (x,y, z,c)

说明:参数设置与mesh 命令相同,c 也可以省略。

4. 其它立体网线图和曲面图

meshc

命令为立体网状图加等高线;meshz 为立体网状图加“围裙”。

【例5.9续】用meshz 和meshc 查看peaks 函数的三维曲面图,如图5.12所示。

>> meshz(X,Y,Z) >> meshc(X,Y,Z)

【例5.10】用各种曲面图表现函数2

2y x z += 。-4

clf;

x= -4:4; y=x;

[X,Y]=meshgrid(x,y); %生成 x-y 坐标“格点”矩阵 Z=X.^2+Y.^2; %计算格点上的函数值 subplot(2,2,1)

mesh(X,Y,Z) %绘制三维网线图

图5.11 peaks 函数的三维曲面图

图5.12 (a) peaks 函数的曲面加“围裙”图 (b) peaks 函数的曲面图加等高线

hold on,

subplot(2,2,2)

surf(X,Y,Z); %绘制三维曲面图 hold on,

subplot(2,2,3)

meshz(X,Y,Z) %为立体网状图加“围裙” subplot(2,2,4)

meshc(X,Y,Z) % 为立体网状图加等高线

上机练习2

上机练习:【例5.10】,【练习1】熟悉matlab 三维曲线的绘制

【练习1】 在一个画面上作四个图,第一个显示曲线]2,2[,2^-∈=x x y ;第二个显示曲

线]6,0[sin cos 1.01.0π∈??

???===--t t z t e

y t e x t

t ;第三个显示]5,5[],5,5[,222-∈-∈--=y x y x z 的网格图,第四个显示上述曲面的有阴影着色的网格图.

m 文件程序如下:

subplot(2,2,1) x=-2:0.05:2; y=x.^2;

plot(x,y) %第一个图 subplot(2,2,2)

t=linspace(0,6*pi); x=exp(-0.1*t).*cos(t); y=exp(-0.1*t).*sin(t); z=t;

plot3(x,y,z) %第二个图 subplot(2,2,3)

x=linspace(-5,5,25); y=linspace(-5,5,25);

[X,Y]=meshgrid(x,y); %meshgrid 的用法前面有介绍 Z=2-X.^2-Y.^2;

mesh(X,Y,Z) %第三个图 subplot(2,2,4)

surf(X,Y,Z) %第四个图

结果如图5.13所示

5.2.3立体图形与图轴的控制

1.网格的隐藏

如果要使被遮盖的网格也能呈现出来,可用“hidden off ”命令。 语法:

hidden off %显示被遮盖的网格 hidden on %隐藏被遮盖的网格 【例5.11】显示被遮盖的网格,如图5.14所示。

>> [x,y,z]=peaks; %peaks 函数

>> mesh(x,y,z) %绘制曲面图 >> hidden off

%显示网格

2.改变视角

三维图形的观测角度不同则显示也不同,如果要改变观测角度,可用“view ”命令。 语法:

view([az,el]) %通过方位角和俯仰角改变视角 view([vx,vy,vz]) %通过直角坐标改变视角

图5.14 显示网线的peaks 函数

图5.13

说明:az 表示方位角,el 表示俯仰角;vx 、vy 、vz 表示直角坐标。 【例5.11续】改变peaks 函数的视角,如图5.15所示。

>> view(0,0) >> view(0,90)

>> view(-37.5,30)

%恢复原视角

程序分析:视角为(0,0),得到一个(x,z)的二维图形效果;视角为(0,90),得到一个(x,y)的二维图形效果。

3.曲面的镂空

【例5.11续】对peaks 函数曲面实现镂空效果,如图5.16所示。

>> z(10:20,10:20)=nan; %将一部分数值用nan 替换 >> surf(x,y,z) %画曲面图

4. 其它绘图命令

MATLAB 提供的较常用绘图命令还有如表3.3所示。

表3.3 符号表达式和字符串的绘图命令

含义 举例

画等高线

ezcontour('x*sin(t)',[-4,4]) 画带填充颜色等高线

ezcontourf('x*sin(t)',[-4,4])

图5.15 (a) 视角为(0,0)的peaks 函数 (b) 视角为(0,90)的peaks 函数

图5.16 peaks 函数

说明:这些命令的举例都是对字符串函数进行绘图,同样也可用于符号表达式绘图。

5.3 MATLAB的特殊图形绘制

5.3.1条形图

条形图常用于对统计的数据进行作图,特别适用于少量且离散的数据。绘制条形图的函数如表4.10所示。

表4.10 条形图函数

语法:

bar(x,y,width,'参数') %画条形图

bar3(y,z,width,'参数') %画三维条形图

说明:x是横坐标向量,省略时默认值是1:m,m为y的向量长度;y是纵坐标,可以是向量或矩阵,当是向量时每个元素对应一个竖条,当是m×n的矩阵时,将画出m组竖条每组包含n条;width是竖条的宽度,省略时默认宽度是0.8,如果宽度大于1,则条与条之间将重叠;'参数'有grouped(分组式)和stacked(累加式),省略时默认为grouped。bar3命令的格式也相同,y必须是单调增加或减小,省略时为1:m;'参数'除了grouped和stacked还有detached(分离式)。

【例5.12】用条形图表示某年一月份中3日~6日连续四天的温度数据,y矩阵的各列分别表示平均温度、最高温度和最低温度,如图5.17所示,用条形图和三维条形图分别表示。

>> x=3:6;

>> y=[5.3000 13.0000 0.4000

5.1000 11.8000 -1.7000

3.7000 8.1000 0.6000

1.5000 7.7000 -4.5000]

>> bar(x,y) %画条形图

>> bar3(x,y) %画三维条形图

程序分析:由上图看出条形图是按行分组的,每组为每天的平均温度、最高温度和最低温度。

5.3.2面积图和实心图

1. 面积图

面积图是在曲线与横轴之间填充颜色,用于绘制面积图的命令为“area ”,只能用于二维绘图。

语法:

area(y)

%画面积图 area(x,y)

说明:y 可以是向量或矩阵,如果y 是向量则绘制的曲线和plot 命令相同,只是曲线和横轴之间填充颜色,如果y 是矩阵则每列向量的数据构成面积叠加起来;x 是横坐标,当x 省略时则横坐标为1:size(y,1)。

2. 实心图

实心图是将数据的起点和终点连成多边形,并填充颜色,绘制实心图的命令为“fill ”。 语法:

fill(x,y,c) %画实心图

说明:c 为实心图的颜色,可以用'r'、'g'、'b'、 'c'、'm'、'y'、'w'、'k',或RGB 三元组行向量表示,也可以省略。

【例5.12续】绘制面积图和实心图,并比较其区别,如图5.18所示。

>> area(x,y) %面积图 >> fill(x,y,'r') %红色的实心图

图5.17 (a) 条形图 (b) 三维条形图

程序分析:由上图可知面积图是绘制曲线和横轴间的面积,y的各列叠加在一起的,而实心图是将起点和终点连接并填充颜色的多边形。

5.3.3直方图

语法:

hist(y,m) %统计每段的元素个数并画出直方图

hist(y,x)

说明:m是分段的个数,省略时则默认为10;x是向量,用于指定所分每个数据段的中间值;y可以是向量或矩阵,如果是矩阵则按列分段。

【例5.13】用直方图表示正态分布的随机数分布,如图5.19所示。

>> y=randn(10,2) %产生10*2的正态分布的随机数矩阵

y =

-1.1878 -1.1859

-2.2023 -1.0559

0.9863 1.4725

-0.5186 0.0557

0.3274 -1.2173

0.2341 -0.0412

0.0215 -1.1283

-1.0039 -1.3493

-0.9471 -0.2611

-0.3744 0.9535

图5.19 直方图

程序分析:直方图显示的是y在x附近的元素的个数,如-2附近有一个。产生的随机数不同则得出的直方图也不同。

5.3.4饼图

饼图是用于显示向量中的各元素占向量元素总和的百分比,可以用pie 和pie3命令分别绘制二维和三维饼图。

语法:

pie(x,explode,’label ’) %画二维饼图 pie3(x,explode,’label ’) %画三维饼图

说明:x 是向量;explode 是与x 同长度的向量,用来决定是否从饼图中分离对应的一部分块,非零元素表示该部分需要分离;’label ’是用来标注饼图的字符串数组。

【例5.14】绘制四个季度支出额的饼图,如图5.20所示。

>> y=[200 100 250 400]; %四个季度支出额 >> explode=[0 0 1 0];

>> pie(y,explode,{'第一季度','第二季度','第三季度','第四季度'})

5.3.5离散数据图

MATLAB 提供了多个绘制离散数据的命令,有stem 、stem3、stairs 和scatter 等。 【例5.15】使用几种绘制离散数据的命令来显示)sin(2x e y x

-=的离散数据,如图5.21

所示。

>> x=0:0.1:2*pi;

>> y=sin(x).*exp(-2*x); >> subplot(3,1,1)

>> stem(x,y,'filled') %画火柴杆图 >> subplot(3,1,2) >> stairs(x,y) %画阶梯图

>> subplot(3,1,3)

图5.20 饼图

>> scatter(x,y) %画点图

图5.21 离散数据图

程序分析:'filled'参数是来填充火柴杆图的点标记。

非常全非常详细的MATLAB数字图像处理技术

MATLAB数字图像处理 1 概述 BW=dither(I)灰度转成二值图; X=dither(RGB,map)RGB转成灰度图,用户需要提供一个Colormap; [X,map]=gray2ind(I,n)灰度到索引; [X,map]=gray2ind(BW,n)二值图到索引,map可由gray(n)产生。灰度图n默认64,二值图默认2; X=graylice(I,n)灰度图到索引图,门限1/n,2/n,…,(n-1)/n,X=graylice(I,v)给定门限向量v; BW=im2bw(I,level)灰度图I到二值图; BW=im2bw(X,map,level)索引图X到二值图;level是阈值门限,超过像素为1,其余置0,level在[0,1]之间。 BW=im2bw(RGB,level)RGB到二值图; I=ind2gray(X,map)索引图到灰度图; RGB=ind2rgb(X,map)索引图到RGB; I=rgb2gray(RGB)RGB到灰度图。 2 图像运算 2.1 图像的读写 MATLAB支持的图像格式有bmp,gif,ico,jpg,png,cur,pcx,xwd和tif。 读取(imread): [1] A=imread(filename,fmt) [2] [X,map]=imread(filename,fmt) [3] […]=imread(filename) [4] […]=imread(URL,…) 说明:filename是图像文件名,如果不在搜索路径下应是图像的全路径,fmt是图像文件扩展名字符串。前者可读入二值图、灰度图、彩图(主要是RGB);第二个读入索引图,map 为索引图对应的Colormap,即其相关联的颜色映射表,若不是索引图则map为空。URL表示引自Internet URL中的图像。 写入(imwrite): [1] R=imwrite(A,filename,fmt); [2] R=imwrite(X,map,filename,fmt); [3] R=imwrite(…,filename); [4] R=imwrite(…,Param1,V al1,Param2,Val2) 说明:针对第四个,该语句用于指定HDF,JPEG,PBM,PGM,PNG,PPM,TIFF等类型输出文件的不同参数。例如HDF的Quality,Compression,WriteMode;JPEG的BitDepth,Comment:Empty or not,Mode:lossy or lossless,Quality等。 2.2 图像的显示 方法1:使用Image Viewer(图像浏览器),即运用imview函数。 同时显示多帧图像的所有帧,可用到montage函数。

matlab 三维图形绘制实例

三维图形 一. 三维曲线 plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z 组成一组曲线的坐标参数,选项的定义和plot 函数相同。当x,y ,z 是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y ,z 是同维矩阵时,则以x,y,z 对应列元素绘制三维曲线,曲线条数等于矩阵列数。 Example1.绘制三维曲线。 程序如下: clf, t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); %向量的乘除幂运算前面要加点 plot3(x,y,z); title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); grid on; 所的图形如下: -1 1 X Line in 3-D Space Y Z 二. 三维曲面 1. 产生三维数据 在MATLAB 中,利用meshgrid 函数产生平面区域内的网格坐标矩阵。

语句执行后,矩阵X 的每一行都是向量x ,行数等于向量y 的元素的个数,矩阵Y 的每一列都是向量y ,列数等于向量x 的元素的个数。 2. 绘制三维曲面的函数 surf 函数和mesh 函数 example2. 绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: clf, [x,y]=meshgrid(0:0.25:4*pi); %产生平面坐标区域内的网格坐标矩阵 z=sin(x+sin(y))-x./10; surf(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]); title('surf 函数所产生的曲面'); figure; mesh(x,y ,z); axis([0 4*pi 0 4*pi -2.5 1]); title('mesh 函数所产生的曲面'); -2.5 -2-1.5-1-0.500.51surf 函数所产生的曲面

Matlab 特殊图形和高维可视化

Matlab 特殊图形和高维可视化 2009-10-20 01:06 7.4 特殊图形和高维可视化 7.4.1 特殊图形指令例示 7.4.1.1 面域图area 【* 例7.4.1 .1-1 】面域图指令area 。该指令的特点是:在图上绘制多条曲线时,每条曲线(除第一条外)都是把“前”条曲线作基线,再取值绘制而成。因此,该指令所画的图形,能醒目地反映各因素对最终结果的贡献份额。注意:( 1 )area 的第一输入宗量是单调变化的自变量。第二输入宗量是“各因素”的函数值矩阵,且每个“因素”的数据取列向量形式排放。第三输入宗量是绘图的基准线值,只能取标量。当基准值为0 (即以x 轴为基准线)时,第三输入宗量可以缺省。(2 )本例第<4> 条指令书写格式x' , Y' ,强调沿列方向画各条曲线的事实。 clf;x=-2:2 % 注意:自变量要单调变化 Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5] % 各因素的相对贡献份额 Cum_Sum=cumsum(Y) % 各曲线在图上的绝对坐标 area(x',Y',0) %<4> legend(' 因素A',' 因素B',' 因素C'),grid on,colormap(spring) x = -2 -1 0 1 2 Y = 3 5 2 4 1 3 4 5 2 1 5 4 3 2 5 Cum_Sum = 3 5 2 4 1 6 9 7 6 2 11 13 10 8 7

图 7.4.1 .1-1 面域图表现各分量的贡献 7.4.1.2 各种直方图bar, barh, bar3, bar3h 【 * 例 7.4.1 .2-1 】二维直方图有两种图型:垂直直方图和水平直方图。而每种图型又有两种表现模式:累计式:分组式。本例选其两种加以表现。 x=-2:2; % 注意:自变量要单调变化 Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5]; % 各因素的相对贡献份额 subplot(1,2,1),bar(x',Y','stacked') % “累计式”直方图 xlabel('x'),ylabel('\Sigma y'),colormap(cool)% 控制直方图的用色legend(' 因素 A',' 因素 B',' 因素 C') subplot(1,2,2),barh(x',Y','grouped') % “分组式”水平直方图 xlabel('y'),ylabel('x') 图 7.4.1 .2-1 二维直方图 clf;x=-2:2; % 注意:自变量要单调变化 Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5]; % 各因素的相对贡献份额 subplot(1,2,1),bar3(x',Y',1) % “队列式”直方图 xlabel(' 因素 ABC'),ylabel('x'),zlabel('y') colormap(summer) % 控制直方图的用色 subplot(1,2,2),bar3h(x',Y','grouped') % “分组式”水平直方图 ylabel('y'),zlabel('x')

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像 imread Syntax: A = imread(filename, fmt) filename:指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到filename所制定的文件,会尝试查找一个名为filename.fmt的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含 RGB真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(filename, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow(filename) himage = imshow(...) ●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图 像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像

MATLAB绘图功能大全

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为长度相同的向量,这是最常见、最基本的用法。实际应用中还有一些变化。

Matlab图形绘制经典案例

Matlab图形绘制经典案例 1、 三维曲线 >> t=0:pi/50:10*pi; >> plot3(sin(2*t),cos(2*t),t) >> axis square >> grid on

2、一窗口多图形>> t=-2*pi:0.01:2*pi; >> subplot(3,2,1)

>> plot(t,sin(t)) >> subplot(3,2,2) >> plot(t,cos(t)) >> subplot(3,2,3) >> plot(t,tan(t)) >> axis([-pi pi -100 100]) >> subplot(3,2,4) >> plot(t,cot(t)) >> axis([-pi pi -100 100]) >> subplot(3,2,5) >> plot(t,atan(t)) >> subplot(3,2,6) >> plot(t,acot(t))

3、图形样式、标注、题字(也可以利用菜单直接Insert) >> x=0:pi/20:2*pi;

>> plot(x,sin(x),'b-.') >> hold on >> plot(x,cos(x),'r--') >> hold on >> plot(x,sin(x)-1,'g:') >> hold on >> plot(x,cos(x)-1) >> xlabel('x'); >> xlabel('x轴'); >> ylabel('y轴'); >> title('图形样式、标注等'); >> text(pi,sin(pi),'x=\pi'); >> legend('sin(x)','cos(x)','sin(x)-1','cos(x)-1'); >> [x1,y1]=ginput(1) %利用鼠标定位查找线上某点的值x1 = 2.0893 y1 = -0.5000 >> gtext('x=2.5') %鼠标定位放置所需的值在线上

matlab作图

MATLAB受到了广大理工科学生和学者青睐,除了Matlab强大的矩阵计算功能和功能齐全的toolbox以外,一个重要原因是因为它提供了方便的绘图功能。下面我们将详细介绍2维图形对象的生成函数及图形控制函数的使用方法以及一些图形的修饰与标注函数及操作和控制MATLAB各种图形对象的方法. 一、图形窗口与坐标系; A.图形窗口 1.MATLAB在图形窗口中绘制或输出图形,因此图形窗口就像一张绘图纸. 2.在MATLAB下,每一个图形窗口有唯一的一个序号h,称为该图形窗口的句 柄.MATLAB通过管理图形窗口的句柄来管理图形窗口; 3.当前窗口句柄可以由MATLAB函数gcf获得; 4.在任何时刻,只有唯一的一个窗口是当前的图形窗口(活跃窗口); figure(h)----将句柄为h的窗口设置为当前窗口; 5.打开图形窗口的方法有三种: 1)调用绘图函数时自动打开; 2)用File---New---Figure新建; 3)figure命令打开,close命令关闭. 在运行绘图程序前若已打开图形窗口,则绘图函数不再打开,而直接利用已打开的图形窗口;若运行程序前已存在多个图形窗口,并且没有指定哪个窗口为当前窗口时,则以最后使用过的窗口为当前窗口输出图形. 6.窗口中的图形打印:用图形窗口的File菜单中的Print项. 7.可以在图形窗口中设置图形对象的参数.具体方法是在图形窗口的Edit菜单中选择Properties项,打开图形对象的参数设置窗口,可以设置对象的属性. B.坐标系; 1.一个图形必须有其定位系统,即坐标系; 2.在一个图形窗口中可以有多个坐标系,但只有一个当前的坐标系; 3.每个坐标系都有唯一的标识符,即句柄值; 4.当前坐标系句柄可以由MATLAB函数gca获得; 5.使某个句柄标识的坐标系成为当前坐标系,可用如下函数:axes(h) h为指定坐标系句柄值.

MATLAB图像处理相关函数

一、通用函数: colorbar显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar(...) \ colorbar(...,'peer',axes_handle) getimage 从坐标轴取得图像数据 语法:A=getimage(h) \ [x,y,A]=getimage(h) \ [...,A,flag]=getimage(h) \ [...]=getimage imshow 显示图像 语法:imshow(I,n) \ imshow(I,[low high]) \ imshow(BW) \ imshow(X,map) \ imshow(RGB)\ imshow(...,display_option) \ imshow(x,y,A,...) \ imshow filename \ h=imshow(...) montage 在矩形框中同时显示多幅图像 语法:montage(I) \ montage(BW) \ montage(X,map) \ montage(RGB) \ h=montage(...) immovie 创建多帧索引图的电影动画 语法:mov=immovie(X,map) \ mov=immovie(RGB) subimage 在一副图中显示多个图像 语法:subimage(X,map) \ subimage(I) \ subimage(BW) \ subimage(RGB) \ subimage(x,y,...) \ subimage(...) truesize 调整图像显示尺寸 语法:truesize(fig,[mrows mcols]) \ truesize(fig) warp 将图像显示到纹理映射表面 语法:warp(X,map) \ warp(I ,n) \ warp(z,...) warp(x,y,z,...) \ h=warp(...) zoom 缩放图像 语法:zoom on \ zoom off \ zoom out \ zoom reset \ zoom \ zoom xon \ zoom yon\ zoom(factor) \ zoom(fig,option) 二、图像文件I/O函数命令 imfinfo 返回图形图像文件信息 语法:info=imfinfo(filename,fmt) \ info=imfinfo(filename) imread 从图像文件中读取(载入)图像 语法:A=imread(filename,fmt) \ [X,map]=imread(filename,fmt) \

实验二 matlab图形绘制

实验二matlab图形绘制 一、实验目的 1、学习MATLAB图形绘制的基本方法; 2、熟悉和了解MATLAB图形绘制程序编辑的基本指令; 3、熟悉掌握利用MATLAB图形编辑窗口编辑和修改图形界面,并添加图形的各种标注; 二、实验原理 1.二维数据曲线图 (1)绘制单根二维曲线plot(x,y); (2)绘制多根二维曲线plot(x,y) 当x是向量,y是有一维与x同维的矩阵时,则绘制多根不同颜色的曲线。当x,y是同维矩阵时,则以x,y对应列 元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 (3)含有多个输入参数的plot函数plot(x1,y1,x2,y2,…,xn,yn) (4)具有两个纵坐标标度的图形plotyy(x1,y1,x2,y2) 2.图形标注与坐标控制 1)title (图形名称) 2)xlabel(x轴说明) 3)ylabel(y轴说明) 4)text(x,y图形说明) 5)legend(图例1,图例2,…) 6)axis ([xmin xmax ymin ymax zmin zmax]) 3.图形窗口的分割 subplot(m,n,p) 4.三维曲线 plot3(x1,y1,z1,选项1,x2,y2,选项2,…,xn,yn,zn,选项n)

5.三维曲面 mesh(x,y,z,c) 与surf(x,y,z,c)。一般情况下,x ,y ,z 是维数相同的矩阵。X ,y 是网格坐标矩阵,z 是网格点上的高度矩阵,c 用于指定在不同高度下的颜色范围。 三、实验内容及步骤 1.绘制下列曲线: (1) 2 1100 x y += x=0:0.02:10; y=100./(1+x.^2); plot(x,y) title('my first plot'); xlabel('x'); ylabel('y'); grid on 截图:

MATLAB中bode图绘制技巧(精)

Matlab中Bode图的绘制技巧学术收藏2010-06-04 21:21:48 阅读54 评论0 字号:大中小订阅我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。譬如我们要画出下面这个传递函数的伯德图: 1.576e010 s^2 H(s= ------------------------------------------------------------------------------------------ s^4 + 1.775e005 s^3 + 1.579e010 s^2 + 2.804e012 s + 2.494e014 (这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。我们可以用下面的语句:num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den; bode(H 这样,我们就可以得到以下的伯德图: 可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。下面,我们来看看如何定制我们自己的伯德图风格:在命令窗口中输入:bodeoptions 我们可以看到以下

内容:ans = Title: [1x1 struct] XLabel: [1x1 struct] YLabel: [1x1 struct]TickLabel: [1x1 struct]Grid: 'off' XLim: {[1 10]}XLimMode: {'auto'}YLim: {[1 10]} YLimMode: {'auto'}IOGrouping: 'none'InputLabels: [1x1 struct]OutputLabels: [1x1 struct]InputVisible: {'on'} OutputVisible: {'on'}FreqUnits: 'rad/sec'FreqScale: 'log' MagUnits: 'dB' MagScale: 'linear'MagVisible: 'on' MagLowerLimMode: 'auto'MagLowerLim: 0PhaseUnits: 'deg'PhaseVisible: 'on'PhaseWrapping: 'off' PhaseMatching: 'off'PhaseMatchingFreq: 0 PhaseMatchingValue: 0我们可以通过修改上面的每一 项修改伯德图的风格,比如我们使用下面的语句画我 们的伯德图:P=bodeoptions;P.Grid='on'; P.XLim={[10 40000]};P.XLimMode={'manual'};P.FreqUnits='HZ'; num=[1.576e010 0 0];den=[1 1.775e005 1.579e010 2.804e012 2.494e014];H=tf(num,den; bode(H,P 这时,我们将会看到以下的伯德图: 上面这张图相对就比较好了,它的横坐标单位 是HZ,范围是[10 40K]HZ,而且打开了网格,便于我 们观察-3DB处的频率值。当然,你也可以改变bodeoptions中的其它参数,做出符合你的风格的伯

基于MATLAB图像处理报告

基于M A T L A B图像处理报告一、设计题目 图片叠加。 二、设计要求 将一幅礼花图片和一幅夜景图片做叠加运算,使达到烟花夜景的美图效果。 三、设计方案 、设计思路 利用matlab强大的图像处理功能,通过编写程序,实现对两幅图片的像素进行线性运算,利用灰度变换的算法使图片达到预期的效果。 、软件介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB 也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载就可以用。

MATLAB画图入门篇--各种基本图形绘制的函数与实例

MATLAB画图入门篇--各种基本图形绘制的函数与实例【来自网络】 一.二维图形(Two dimensional plotting) 1.基本绘图函数(Basic plotting function):Plot,semilogx,semilogy,loglog,polar,plotyy (1).单矢量绘图(single vector plotting):plot(y),矢量y的元素与y元素下标之间在线性坐标下的关系曲线。 例1:单矢量绘图 y=[00.62.358.311.71517.719.420];plot(y) 可以在图形中加标注和网格, 例2:给例1的图形加网格和标注。 y=[00.62.358.311.71517.719.420];plot(y) title('简单绘图举例');xlabel('单元下标');ylabel('给定的矢量');grid (2).双矢量绘图(Double vector plotting):如x和y是同样长度的矢量,plot(x,y)命令将绘制y元素对应于x元素的xy曲线图。 例:双矢量绘图。 x=0:0.05:4*pi;y=sin(x);plot(x,y) (3).对数坐标绘图(ploting in logarithm coordinate):x轴对数semilogx,y轴对数semilogy,双对数loglog, 例:绘制数组y的线性坐标图和三种对数坐标图。 y=[00.62.358.311.71517.719.420]; subplot(2,2,1);plot(y);subplot(2,2,2);semilogx(y) subplot(2,2,3);semilogy(y);subplot(2,2,4);loglog(y) (4)极坐标绘图(Plotting in polar coordinate): polar(theta,rho)theta—角度,rho—半径 例:建立简单的极坐标图形。 t=0:.01:2*pi;polar(t,sin(2*t).*cos(2*t)) 2.多重曲线绘图(Multiple curve plotting) (1)一组变量绘图(A group variable plotting) plot(x,y) (a)x为矢量,y为矩阵时plot(x,y)用不同的颜色绘制y矩阵中各行或列对应于x的曲线。 例1: x=0:pi/50:2*pi;y(1,:)=sin(x);y(2,:)=0.6*sin(x);y(3,:)=0.3*sin(x);plot(x,y) (b)x为矩阵,y为矢量时绘图规则与(a)的类似,只是将x中的每一行或列对应于y进行绘图。。 例2: x(1,:)=0:pi/50:2*pi;x(2,:)=pi/4:pi/50:2*pi+pi/4;x(3,:)=pi/2:pi/50:2*pi+pi/2; y=sin(x(1,:));plot(x,y) (c)x和y是同样大小的矩阵时,plot(x,y)绘制y矩阵中各列对应于x各列的图形。 例3: x(:,1)=[0:pi/50:2*pi]';x(:,2)=[pi/4:pi/50:2*pi+pi/4]';x(:,3)=[pi/2:pi/50:2*pi+pi/2]'; y(:,1)=sin(x(:,1));y(:,2)=0.6*sin(x(:,1));y(:,3)=0.3*sin(x(:,1)); plot(x,y) 这里x和y的尺寸都是101×3,所以画出每条都是101点组成的三条曲线。如行列转置后就会画出101条曲线,每条线

用matlab数字图像处理四个实验

数字图像处理 实验指导书

目录 实验一MATLAB数字图像处理初步实验二图像的代数运算 实验三图像增强-空间滤波 实验四图像分割 3

实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。 二、实验原理及知识点 1、数字图像的表示和类别 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。 图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。 图1 图像的采样和量化 根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类: ?亮度图像(Intensity images)

用matlab绘制的漂亮图形

用matlab绘制的漂亮图形 1.不同坐标系下的图形对比 theta=0:pi/20:4*pi; phi= theta.^2- theta; [t,p]=meshgrid(theta,phi); r=t.*p; subplot(1,2,1);mesh(t,p,r); ylabel('x');xlabel('y');zlabel('z'); [x,y,z]=sph2cart(t,p,r); subplot(1,2,2);mesh(x,y,z); ylabel('x');xlabel('y');zlabel('z'); 2.球曲面的法线 [x,y,z]=sphere; Surfnorm(x,y,z)

3. x=rand(100,1)*16-8; y=rand(100,1)*16-8; r=sqrt(x.^2+y.^2)+eps; z=sin(r)./r; xlin=linspace(min(x),max(x),33); ylin=linspace(min(y),max(y),33); [X,Y]= meshgrid(xlin,ylin); Z=griddata(x,y,z,X,Y); mesh(X,Y,Z); axis tight;hold on; ylabel('x');xlabel('y');zlabel('z'); plot3(x,y,z,’r’,’MarkerSize’,15)

x=rand(1000,1)*16-8; y=rand(1000,1)*16-8; r=sqrt(x.^2+y.^2)+eps; z=sin(r)./r; xlin=linspace(min(x),max(x),99); ylin=linspace(min(y),max(y),99); [X,Y]= meshgrid(xlin,ylin); Z=griddata(x,y,z,X,Y); mesh(X,Y,Z); axis tight;hold on; ylabel('x');xlabel('y');zlabel('z'); plot3(x,y,z,'r','MarkerSize',30);

matlab中绘制多个图形

绘图功能是Matlab的一个强大的功能。 subplot是MATLAB中常用的的函数。在绘图过程中经常要在一个页面中绘制几张图 它的使用格式:subplot(m,n,p)或者subplot(m n p)。 函数subplot是将多个图画到一个平面上的工具。括号中的m表示是图排成m行,n 表示图排成n列,也就是整个figure中有n个图是排成一列的,一共m行,如果m=3就是表示3行图。p表示图所在的位置,p=3表示从左到右从上到下的第3个位置。 以下是对它的一些应用,还用到了其它的一些函数 程序的代码如下 x=0:0.01:10; y1=sin(x); subplot(3,3,1); plot(x,y1); xlabel('x'); ylabel('y1'); title('y1=sin(x)');axis([0 pi*2 -1 1]); y2=cos(x+2); subplot(3,3,2); plot(x,y2); xlabel('x'); ylabel('y2');title('y2=cos(x+2)');axis([0 pi*2 -1 1]); y3=sin(x)+y2;subplot(3,3,3); plot(x,y3); xlabel('x'); ylabel('y3');title('y3=sin(x)+y2'); y4=sin(x).^3+cos(x);subplot(3,3,4);axis([0 pi*2 -1 2]); plot(x,y4); xlabel('x'); ylabel('y4');title('y4=sin(x).^3+cos(x)');axis([0 pi*2 -1 2]); y5=9*x.^5+3*x.^4+x.^3+2*x.^2;

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像imread Syntax: A = imread(, fmt) :指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到所制定的文件,会尝试查找一个名为的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含RGB 真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow() himage = imshow(...)

●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像素在图像中出现的概率。 图像的灰度直方图:是一个离散函数,表示图像每一灰度级与该灰度级出现概率的对应关系。 图像的灰度直方图运算: imhist()函数,其横坐标表示像素的灰度级别,纵坐标为像素点的个数。 ●Imhist函数=Display histogram of image data显示灰度直方图的函数 ●Syntax: ①imhist(I) % I为要计算的灰度直方图图像 ②imhist(I, n) % n指定的灰度级的数目,表示所有灰度级均匀分布在n个小区间内。 ③imhist(X, map) ④[counts,x] = imhist(...) %counts直方图数据向量。counts(i)第i个灰度区间中的像素数目。x是保存了对应的灰度小区间的向量。 注意:若调用时不接受这个函数的返回值,则直接显示直方图;在得这些返回数据之后,也可以使用stem(x,counts)手绘直方图。 ●例1:显示某一图像的灰度直方图

实验2matlab绘图操作

实验2 Matlab 绘图操作 实验目的: 掌握绘制二维图形的常用函数; 掌握绘制三维图形的常用函数; 掌握绘制图形的辅助操作。 实验内容: 设sin .cos x y x x ?? =+??+? ?23051,在x=0~2π区间取101点,绘制函数的曲线。 已知: y x =2 1,cos()y x =22,y y y =?312,完成下列操作: 在同一坐标系下用不同的颜色和线性绘制三条曲线; 以子图形式绘制三条曲线; 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 3. 已知:ln(x x e y x x ?+≤??=??+>??2 0102 ,在x -≤≤55区间绘制函数曲线。 4. 绘制极坐标曲线sin()a b n ρθ=+,并分析参数a 、b 、n 对曲线形状的影响。 5.在xy 平面内选择区域[][],,-?-8888 ,绘制函数z = 6. 用plot 函数绘制下面分段函数的曲线。 ,(),,x x f x x x x ?++>? ==??+-> x=(0:2*pi/100:2*pi);

>> y=+3*sin(x)/(1+x.^2))*cos(x); >> plot(x,y) 2.已知: y x =2 1,cos()y x =22,y y y =?312,完成下列操作: (1)在同一坐标系下用不同的颜色和线性绘制三条曲线; >> x= linspace(0, 2*pi, 101); >> y1=x.*x; >> y2=cos(2x); >> y3=y1.*y2; plot(x,y1,'r:',x,y2,'b',x,y3, 'ko') (2)以子图形式绘制三条曲线; >> subplot(2,2,1),plot(x,y1) subplot(2,2,2),plot(x,y2) subplot(2,2,3),plot(x,y3)

Matlab图像处理函数汇总

1、图像的变换 ①fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif'); j=fft2(i); ②ifft2::ifft2函数用于数字图像的二维傅立叶反变换,如: i=imread('104_8.tif'); j=fft2(i); k=ifft2(j); 2、模拟噪声生成函数和预定义滤波器 ①imnoise:用于对图像生成模拟噪声,如: i=imread('104_8.tif'); j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声 ②fspecial:用于产生预定义滤波器,如: h=fspecial('sobel');%sobel水平边缘增强滤波器 h=fspecial('gaussian');%高斯低通滤波器 h=fspecial('laplacian');%拉普拉斯滤波器 h=fspecial('log');%高斯拉普拉斯(LoG)滤波器 h=fspecial('average');%均值滤波器 2、图像的增强 ①直方图:imhist函数用于数字图像的直方图显示,如: i=imread('104_8.tif'); imhist(i); ②直方图均化:histeq函数用于数字图像的直方图均化,如: i=imread('104_8.tif'); j=histeq(i); ③对比度调整:imadjust函数用于数字图像的对比度调整,如:i=imread('104_8.tif'); j=imadjust(i,[0.3,0.7],[]); ④对数变换:log函数用于数字图像的对数变换,如: i=imread('104_8.tif'); j=double(i);

相关文档