MATLAB图形显示和GUI设计.docx

上传人:b****5 文档编号:6715809 上传时间:2023-01-09 格式:DOCX 页数:47 大小:176.77KB
下载 相关 举报
MATLAB图形显示和GUI设计.docx_第1页
第1页 / 共47页
MATLAB图形显示和GUI设计.docx_第2页
第2页 / 共47页
MATLAB图形显示和GUI设计.docx_第3页
第3页 / 共47页
MATLAB图形显示和GUI设计.docx_第4页
第4页 / 共47页
MATLAB图形显示和GUI设计.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

MATLAB图形显示和GUI设计.docx

《MATLAB图形显示和GUI设计.docx》由会员分享,可在线阅读,更多相关《MATLAB图形显示和GUI设计.docx(47页珍藏版)》请在冰豆网上搜索。

MATLAB图形显示和GUI设计.docx

MATLAB图形显示和GUI设计

MATLAB图形显示和GUI设计

第4章MATLAB计算的可视化和GUI设计

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

4.1二维曲线的绘制

4.1.1基本绘图命令plot

1.plot(x)绘制x向量曲线

plot命令是MATLAB中最简单而且使用最广泛的一个绘图命令,用来绘制二维曲线。

语法:

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

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

说明:

x和y可以是向量或矩阵。

【例4.1】用plot(x)命令画直线,如图4.1所示。

当plot(x,y)命令中的参数x和y是向量或矩阵时,分别有以下几种情况:

▪如果x是向量,而y是矩阵,则x的长度与矩阵y的行数或列数必须相等,如果x的长度与y的行数相等,则向量x与矩阵y的每列向量对应画一条曲线;如果x的长度与y的列数相等,向量x与y的每行向量画一条曲线,如果y是方阵,则x和y的行数和列数都相等,将向量x与矩阵y的每列向量画一条曲线;

▪如果x是矩阵,而y是向量,则y的长度必须等于x的行数或列数,绘制的方法与前一种相似;

▪如果x和y都是矩阵,则大小必须相同,矩阵x的每列和y的每列画一条曲线。

【例4.4】混合式图形的绘制,如图4.4所示。

x1=[123];

y1=[123;456]

y1=

123

456

plot(x1,y1)%每行一条曲线

y2=[12;34;56]

y2=

12

34

56

plot(x1,y2)%每列一条曲线

plot(y1,x1)

plot(y2,x1)

x2=[111;222]

图4.4(a)(x1,y1)曲线(b)(x2,y1)曲线

图4.4(c)(y1,x1)曲线(d)(y2,x1)曲线

x2=

111

图4.4(e)(x2,y1)曲线

222

plot(x2,y1)%按列与列对应的方式

5.plot(z)绘制复向量曲线

【例4.4续】下面的程序画出的曲线和图4.4(e)中的相同。

z1=x2+i*y1

z1=

1.0000+1.0000i1.0000+2.0000i1.0000+3.0000i

2.0000+4.0000i2.0000+5.0000i2.0000+6.0000i

plot(z1)%以实部为横坐标,虚部为纵坐标

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

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

每一对矩阵(xi,yi)均按照前面的方式解释,不同的矩阵对之间,其维数可以不同。

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

图4.5三条曲线

x=0:

0.1:

2*pi;

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

4.1.2绘制曲线的一般步骤

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

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

步骤

内容

1

曲线数据准备:

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

对于三维曲面,矩阵参变量和对应的函数值。

  

2 

指定图形窗口和子图位置:

默认时,打开FigureNo.1窗口或当前窗口、当前子图;

也可以打开指定的图形窗口和子图。

3

设置曲线的绘制方式:

线型、色彩、数据点形。

4 

设置坐标轴:

坐标的范围、刻度和坐标分格线

5 

图形注释:

图名、坐标名、图例、文字说明

6 

着色、明暗、灯光、材质处理(仅对三维图形使用)

7

视点、三度(横、纵、高)比(仅对三维图形使用)

8

图形的精细修饰(图形句柄操作):

利用对象属性值设置;

利用图形窗工具条进行设置。

说明:

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

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

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

4.1.3多个图形绘制的方法

1.指定图形窗口

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

语法:

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

说明:

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

2.同一窗口多个子图

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

语法:

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

说明:

将图形窗口划分为m×n幅子图,k是当前子图的编号,“,”可以省略。

子图的序号编排原则是:

左上方为第1幅,先向右后向下依次排列,子图彼此之间独立。

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

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))

图4.6四个子图

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

clf%清除子图

3.同一窗口多次叠绘

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

语法:

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

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

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

说明:

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

【例4.7】在同一窗口画出函数sinx在区间[02π]的曲线和cosx在区间[-ππ]的曲线,如图4.7(a)所示。

x1=0:

0.1:

2*pi;

plot(x1,sin(x1))

holdon

x2=-pi:

.1:

pi;

plot(x2,cos(x2))

程序分析:

坐标系的范围由0~2π转变为-π~2π。

4.双纵坐标图

语法:

plotyy(x1,y1,x2,y2)%以左、右不同纵轴绘制两条曲线

说明:

左纵轴用于(x1,y1)数据,右纵轴用于(x2,y2)数据来绘制两条曲线。

坐标轴的范围、刻度都自动产生。

【例4.7续】用plotyy函数实现在同一图形窗口绘制两条曲线,如图4.7(b)所示。

plotyy(x1,sin(x1),x2,cos(x2))

图4.7(a)用holdon在同一窗口画出两条曲线(b)用plotyy在同一窗口画出两条曲线

程序分析:

plotyy函数用不同颜色绘制两条曲线,左右两边使用两个纵坐标轴,横坐标从-π~2π。

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

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

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

颜色

数据点间连线

数据点形

类型

符号

类型

符号

类型

符号

黄色

品红色(紫色)

青色

红色

绿色

蓝色

白色

黑色

y(Yellow)

m(Magenta)

c(Cyan)

r(Red)

g(Green)

b(Blue)

w(White)

k(Black)

实线(默认)

点线

点划线

虚线

-

:

-.

--

实点标记

圆圈标记

叉号形×

十字形+

星号标记*

方块标记□

钻石形标记◇

向下的三角形标记

向上的三角形标记

向左的三角形标记

向右的三角形标记

五角星标记☆

六连形标记

.

o

x

+

*

s

d

v

^

<

>

p

h

语法:

plot(x,y,s)

说明:

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

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

x=0:

0.1:

2*pi;

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

holdon

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

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

图4.8在同一窗口画出两条曲线

4.1.5设置坐标轴和文字标注

1.坐标轴的控制

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

表4.3 常用的坐标控制命令

命令

含义

命令

含义

axisauto

使用默认设置

axisequal

纵、横轴采用等长刻度

axismanual

使当前坐标范围不变

axisfill

在manual方式下起作用,使坐标充满整个绘图区

axisoff

取消轴背景

axisimage

纵、横轴采用等长刻度,且坐标框紧贴数据范围

axison

使用轴背景

axisnormal

默认矩形坐标系

axisij

矩阵式坐标,原点在左上方

axissquare

产生正方形坐标系

axisxy

普通直角坐标,原点在左下方

axistight

把数据范围直接设为坐标范围

axis([xmin,xmax,ymin,ymax])

设定坐标范围,必须满足xmin

axisvis3d

保持高宽比不变,用于三维旋转时避免图形大小变化

2.分格线和坐标框

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

语法:

gridon%显示分格线

gridoff%不显示分格线

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

说明:

不显示分格线是MATLAB的默认设置。

分格线的疏密取决于坐标刻度,如果要改变分格线的疏密,必须先定义坐标刻度。

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

语法:

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

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

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

说明:

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

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

x=0:

0.1:

2*pi;

subplot(2,1,1)

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

axisequal%纵、横轴采用等长刻度

gridon%加分格线

subplot(2,1,2)

plot(x,exp(-x))

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

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

3.文字标注

(1)添加图名

语法:

title(s)%书写图名

说明:

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

(2)添加坐标轴名

语法:

xlabel(s)%横坐标轴名

ylabel(s)%纵坐标轴名

(3)添加图例

语法:

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

legendoff%擦除当前图中的图例

说明:

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

 

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

pos取值

0

1

2

3

4

-1

图例位置

自动取最佳位置

右上角(默认)

左上角

左下角

右下角

图右侧

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

(4)添加文字注释

语法:

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

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

x=0:

0.1:

2*pi;

plot(x,sin(x))

holdon

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

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

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

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

图4.10添加图形标注

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

4.特殊符号

表4.5 图形标识用的希腊字母、数学符号和特殊字符

类别

命令

字符

命令

字符

命令

字符

命令

字符

\alpha

α

\eta

η

\nu

ν

\upsilon

υ

\beta

β

\theta

θ

\xi

ξ

\Upsilon

Υ

\epsilon

ε

\Theta

Θ

\Xi

Ε

\phi

φ

\gamma

γ

\iota

ι

\pi

π

\Phi

Φ

\Gamma

Γ

\zeta

ζ

\Pi

Π

\chi

χ

\delta

δ

\kappa

κ

\rho

ρ

\psi

ψ

\Delta

Δ

\mu

μ

\tau

τ

\Psi

Ψ

\omega

ω

\lambda

λ

\sigma

σ

\Omega

Ω

\Lambda

Λ

\Sigma

Σ

\approx

\oplus

\neq

\leq

\geq

\pm

±

\times

×

\div

÷

\int

\exists

\infty

\in

\sim

\forall

\angle

\perp

\cup

\cap

\vee

\wedge

\surd

\otimes

\oplus

\uparrow

\downarrow

\rightarrow

\leftarrow

\leftrightarrow

\updownarrow

如果需要对文字进行上下标设置,或设置字体大小,则必须在文字标识前先使用表4.6中所示的设置值。

表4.6 文字设置

命令

含义

\fontname{s}

字体的名称,s为TimesNewRoman、Courier、宋体等。

\fontsize{n}

字号大小,n为正整数,默认为10(points)。

\s

字体风格,s可以为bf(黑体)、it(斜体一)、sl(斜体二)、rm(正体)等。

^{s}

将s变为上标

_{s}

将s变为下标

【例4.11】在MATLAB的图形窗口中写出标题为表达式

,字体大小为16号,如图4.11所示。

figure

(1)

title('\fontsize{16}y(\omega)=\int^{\infty}_{0}y(t)e^{-j\omegat}dt')

图4.11特殊字符

4.1.6交互式图形命令

1.ginput命令

ginput命令是从图上获取数据。

语法:

[x,y]=ginput(n)%用鼠标从图形上获取n个点的坐标(x,y)

说明:

参数n应为正整数,是通过鼠标从图上获得数据点的个数;x、y用来存放所取点的坐标。

2.gtext命令

gtext命令是把字符串放置到图形中鼠标所指定的位置上。

语法:

gtext(‘s’)%用鼠标把字符串放置到图形上

说明:

如果参数s是单个字符串或单行字符串矩阵,那么一次鼠标操作就可把全部字符以单行形式放置在图上;如果参数s是多行字符串矩阵,那么每操作一次鼠标,只能放置一行字符串,需要通过多次鼠标操作,把一行一行字符串放在图形的不同位置。

【例4.12】在y=sin(x)的图形中将(π,0)和(2π,0)点的坐标取出,并在(2π,0)点写“2π”字符串。

x=0:

0.1:

2*pi;

plot(x,sin(x))

[m,n]=ginput

(2)%取两点坐标

m=

3.1532

6.2984

n=

-0.0029

-0.0088

gtext('2\pi')%写2π

程序分析:

由于鼠标所取点的位置有些偏差,因此ginput命令获取的坐标并不是精确在(π,0)和(2π,0)点上;gtext命令在图中鼠标单击处写了“2π”字符串。

4.2MATLAB的三维图形绘制

4.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是指定线型、色彩、数据点形的字符串。

图4.12三维曲线

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

x=0:

0.1:

20*pi;

plot3(x,sin(x),cos(x))%按系统默认设置绘图

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

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=[1234];

y=[567];

[xx,yy]=meshgrid(x,y)

xx=

1234

1234

1234

yy=

5555

6666

7777

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

MATLAB提供了peaks函数,在下面的图4.13中可以看到。

其x和y坐标分别为在[-33]范围内的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);

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

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

mesh(yy)

图4.13(a)xx的网格图(b)yy的网格图

xx和yy分别为49×49的矩阵,如图4.13为xx和yy的网状图。

zz=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(xx,yy,zz)

图4.14peaks函数的三维线图

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四个参数都有,则应该都是维数相同的矩阵。

图4.15peaks函数的三维网线图

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

mesh(xx,yy,zz)

3.三维曲面图

语法:

surf(z)%画三维曲面图

surf(x,y,z,c)

说明:

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

【例4.14续】用surf查看peaks函数的三维曲面图,如图4.16所示。

surf(xx,yy,zz)

图4.16peaks函数的三维曲面图

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

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

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

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

meshz(xx,yy,zz)

meshc(xx,yy,zz)

4.2.3立体图形与图轴的控制

1.网格的隐藏

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

语法:

hiddenoff%显示被遮盖的网格

hiddenon%隐藏被遮盖的网格

【例4.15】显示被遮盖的网格,如图4.18所示。

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

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

hiddenoff%显示网格

图4.18显示网线的peaks函数

2.改变视角

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

语法:

view([az,el])%通过方位角和俯仰角改变视角

view([vx,vy,vz])%通过直角坐标改变视角

说明:

az表示方位角,el表示俯仰角;vx、vy、vz表示直角坐标。

【例4.15续】改变peaks函数的视角,如图4.19所示。

view(0,0)

view(0,90)

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1