MATLAB函数.docx

上传人:b****5 文档编号:12328274 上传时间:2023-04-18 格式:DOCX 页数:42 大小:61.25KB
下载 相关 举报
MATLAB函数.docx_第1页
第1页 / 共42页
MATLAB函数.docx_第2页
第2页 / 共42页
MATLAB函数.docx_第3页
第3页 / 共42页
MATLAB函数.docx_第4页
第4页 / 共42页
MATLAB函数.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

MATLAB函数.docx

《MATLAB函数.docx》由会员分享,可在线阅读,更多相关《MATLAB函数.docx(42页珍藏版)》请在冰豆网上搜索。

MATLAB函数.docx

MATLAB函数

 

MATLAB

基础

第二章MATLAB数据

在一般情况下,矩阵元素必须具有相同的数据类型。

对于数值数据,MATLAB中最常用的类型为双精度型,占64位(8个字节),用double函数实现转换。

此外,还有单精度,占32位(4个字节),用single函数实现转换。

还有带符号整数和无符号整数,其转换函数有int8、int16、int32,每一个函数名后面的数字表示相应数据类型所占位数。

MATLAB赋值语句有两种格式:

(1)变量=表达式

(2)表达式

在一般情况下,MATLAB内部每一个数据元素都是用双精度数来表示和存储的。

数据输出是可以用format命令设置或改变数据输出格式。

format命令的格式:

format格式符

注意,format命令只影响数据输出格式,而不影响数据的计算和存储。

控制数据输出格式的格式符:

P20。

常用的预定义变量

预定义变量

含义

预定义变量

含义

ans

计算结果的缺省赋值变量

nargin

函数输入参数个数

eps

机器零阈值

nargout

函数输出参数个数

pi

圆周率的近似值

realmax

最大正实数

i,j

虚数单位

realmin

最小正实数

Inf,inf

无穷大。

如1/0的结果

lasterr

存放最新的错误信息

NaN,nan

非数。

如0/0、inf/inf的结果

lastwarn

存放最新的警告信息

who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单。

但whos在给出驻留变量名的同时,还给出他们的维数、所占字节数及性质。

clear命令用于删除MATLAB工作空间中的变量。

注意,预定义变量不能被删除。

利用MATLAB函数建立矩阵

zeros产生全0矩阵(零矩阵)

ones产生全1矩阵(幺矩阵)

eye产生单位矩阵

rand产生0~1间均匀分布的随机矩阵

randn产生0~1间正态分布的随机矩阵

调用格式是:

zeros(m)产生m×m零矩阵

zeros(m,n)产生m×n零矩阵。

当m=n时,等同于zeros(m)

zeros(size(A))产生与矩阵A同样大小的零矩阵

其中,size(A)函数返回包含两个元素的向量,分别是矩阵A的行数和列数。

相关的函数有:

length(A)给出A的行数和列数中的较大者,即length(A)=max(size(A));ndim(A)给出A的维数。

冒号表达式

一般形式:

e1:

e2:

e3

其中e1为初始值,e2为步长,e3为终止值。

在MATLAB中,还可以用linspace函数产生行向量。

其调用格式为:

linspace(a,b,n)

其中a和b是生成向量的第一个和最后一个元素,n是元素总数。

当n省略时,自动产生100个元素。

linspace(a,b,n)与a:

(b-a)/(n-1):

b等价

MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。

如果给出的行下标或列下标大于原来矩阵的行数和列数,则MATLAB将自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为零。

在MATLAB中,也可以采用矩阵元素的序号来引用矩阵元素。

矩阵元素按列编号,先第一列,在第二列,依次类推。

显然,序号(Index)与下标(Subscript)是一一对应的,以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)×m+i。

其相互转换关系也可利用sub2ind和ind2sub函数求得。

矩阵拆分

(1)利用冒号表达式获得子矩阵

A(:

,j)表示取A矩阵的第j列全部元素;A(i,:

)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。

A(i:

i+m,:

)表示取A矩阵第i~i+m行的全部元素;A(:

,k:

k+m)表示取A矩阵第k~k+m列的全部元素,A(i:

i+m,k:

k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的元素。

可利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。

End表示矩阵某一维的末尾元素下标。

(2)利用空矩阵删除矩阵的元素

在MATLAB中,定义[]为空矩阵。

给变量X赋空矩阵的语句为X=[]。

注意,X=[]与clearX不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。

MATLAB常用数学函数

函数名

含义

函数名

含义

sin

正弦函数

exp

自然指数函数

cos

余弦函数

pow2

2的幂

tan

正切函数

abs

绝对值函数

asin

反正弦函数

angle

复数的幅角

acos

反余弦函数

real

复数的实部

atan

反正切函数

imag

复数的虚部

sinh

双曲正弦函数

conj

复数共轭运算

cosh

双曲余弦函数

rem

求余数或模运算

tanh

双曲正切函数

mod

模除求余

asinh

反双曲正弦函数

fix

向零方向取整

acosh

反双曲余弦函数

floor

不大于自变量的最大整数

atanh

反双曲正切函数

ceil

不小于自变量的最小整数

sqrt

平方根函数

round

四舍五入到最邻近的整数

log

自然对数函数

sign

符号函数

log10

常用对数函数

gcd

最大公因子

log2

以2为底的对数函数

lcm

最小公倍数

函数使用户说明:

见书本P33。

2.4.2关系运算

6种关系运算符:

<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)。

2.4.3逻辑运算

3种逻辑运算符:

&(与)、|(或)、~(非)。

若参与逻辑运算的是两个同为矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。

最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。

若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。

最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。

在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。

2.5字符串

在MATLAB语言中,字符串是用单撇号括起来的字符序列。

字符串是以ASCII码形式存储的。

abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。

相反,char函数可以把ASCII码矩阵转换为字符串矩阵。

字符串处理函数

函数名

含义

函数名

含义

setstr

将ASCII码值转换成字符

str2num

将字符串转换成数值

mat2str

将矩阵转换成字符串

strcat

用于字符串的连接

num2str

将数值转换成字符串

strcmp

用于字符串的比较

int2str

将整数转换成字符串

若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。

对于较长的字符串可以用字符串向量表示,即用[]括起来。

2.6结构和单元

2.6.1结构数据(Structure)

结构矩阵名.成员名=表达式

结构矩阵元素的成员也可以是结构数据。

对于结构数据的引用,可以引用其成员,也可以引用结构矩阵的元素或结构变量。

引用结构矩阵元素的成员时,显示其值。

引用结构矩阵元素时,显示成员名和它的值,但成员是矩阵时,不显示其具体内容,只显示成员矩阵大小参数。

引用结构矩阵时,只显示结构矩阵的大小参数和成员名。

关于结构的函数

函数名

含义

函数名

含义

struct

建立或转换为结构矩阵

fieldnames

获取结构成员名

getfield

获取结构成员的内容

setfield

设定结构成员的内容

rmfield

删除结构成员

isfield

成员在结构中时,值为真

isstruct

是结构时,值为真

2.6.2单元数据

结构变量的各个元素下有成员,每个成员有自己的名字,对成员的引用是:

结构变量名.成员名。

而单元矩阵的各个元素就是不同类型的数据,用带有大括号下标的形式引用单元矩阵元素。

建立单元矩阵,将矩阵元素用大括号括起来。

可以用带有大括号下标的形式引用单元矩阵元素。

单元矩阵的元素可以是结构或单元数据。

关于单元的函数

函数名

作用

函数名

作用

celldisp

显示单元矩阵内容

cellplot

显示单元矩阵的图形描述

num2cell

把数据矩阵转换为单元矩阵

deal

把输入分配给输出

cell2struct

把单元矩阵转换为结构矩阵

struct2cell

把结构矩阵转换为单元矩阵

iscell

是单元矩阵时,值为真

第三章MATLAB程序设计

MATLAB命令有两种执行方式:

一种是交互式的命令执行方式,另一种是M文件的程序执行方式。

M文件的分类

M文件有两类:

命令文件(ScriptFile)和函数文件(FunctionFile)。

主要区别在于:

(1)命令文件没有输入参数,也不返回输出函数,而函数文件可以带输入参数,也可返回输出参数。

(2)命令文件对MATLAB工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。

(3)命令文件可以直接运行,在MATLAB命令窗口输入命令文件的名字,就会顺利执行命令文件中的命令,而函数文件不能直接运行,而要以函数调用的方式来调用它。

3.2数据的输入输出

input函数的调用格式为:

A=input(提示信息,选项);

其中提示信息为一个字符串,用于提示用户输入什么样的数据。

如果在input函数调用时采用‘s’选项,则允许用户输入一个字符串。

disp函数

disp(输出项)

其中输出项既可以为字符串,也可以为矩阵。

显示矩阵时将不显示矩阵的名字,而且其格式更紧密,且不留任何没有意义的空行。

pause函数

当程序运行时,为了查看程序的中间结果或者观看输出的图形,有时需要暂停程序的执行。

这时可以使用pause函数,其调用格式为:

pause(延迟秒数)

如果省略延迟时间,直接使用pause,则将暂停程序,知道用户按任一键后程序继续执行。

若要强行中止程序的运行可使用Ctrl+C命令。

3.3选择结构

3.3.1if语句

1.单分支if语句

if条件

语句组

end

2.双分支if语句

if条件

语句组1

else

语句组2

end

3.多分支if语句

if条件1

语句组1

elseif条件2

语句组2

...

elseif条件m

语句组m

else

语句m+1

End

3.3.2switch语句

switch表达式

case表达式1

语句组1

case表达式2

语句组2

case表达式m

语句组m

otherwise

语句组m+1

end

Switch子句后面的表达式应为一个标量或一个字符串,case子句后面的表达式不仅可以为一个标量或一个字符串,而且还可以为一个单元矩阵。

如果case子句后面的表达式为一个单元矩阵。

则表达式的值等于该单元矩阵中的某个元素时,执行相应的语句组。

3.3.3try语句

一种试探性执行语句。

try

语句组1

catch

语句组2

end

try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋值给保留的lasterr变量,并转去执行语句组2。

3.4循环语句

3.4.1for语句

for循环变量=表达式1:

表达式2:

表达式3

循环体语句

end

for语句的循环变量可以是一个列向量。

for语句更一般的格式为:

for循环变量=矩阵表达式

循环体语句

end

执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。

3.4.2while语句

while(t条件)

循环体语句

end

与循环结构相关的还有一个break语句,当在循环体内执行到该语句时,程序将跳出循环。

一般与if语句配合使用。

3.5函数文件

函数文件由function语句引导,其基本结构为:

Function[输出形参表]=函数名(输入形参表)

注释说明部分

函数体语句

Return语句,如果在函数文件中插入return语句,则执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。

通常,在函数文件中也可以不使用return语句,这事在被调函数执行完成后自动返回。

3.5.2函数调用

函数调用的一般格式是:

[输出实参表]=函数名(输入实参表)

函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。

函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后在执行函数的功能。

3.5.3函数所传递参数的可调性

两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。

只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数,从而决定函数如何进行处理。

3.6全局变量和局部变量

全局变量用global定义。

第四章MATLAB绘图

4.1二维图形

plot函数

plot(x,y)

(1)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

(2)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同色彩的曲线。

曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。

(3)plot函数最简单的调用格式是只包含一个输入参数plot(x)。

在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线。

当x是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于x阵的列数。

当x是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。

含多个输入参数的plot函数

plot函数可以包含若干组向量对,每一个向量对可以绘制出一条曲线。

含多个输入参数的plot函数调用格式为:

plot(x1,y1,x2,y2,...,xn,yn)

每一组向量对的长度可以不同。

可以在同一坐标内绘制出多条曲线。

含选项的plot函数

调用格式为:

plot(x1,y1,选项1,x2,y2,选项2,...,xn,yn,选项n)

线型、颜色和标记符号选项

(a)线型选项

线型

说明

颜色

说明

标记符号

说明

标记符号

说明

实线

b

蓝色

.

s

方块符

虚线

g

绿色

o

圆圈

d

菱形符

—.

点划线

r

红色

x

叉号

V

朝下三角符号

——

双划线

c

青色

+

加号

^

朝上三角符号

m

品红色

*

星号

<

朝左三角符号

y

黄色

>

朝右三角符号

k

黑色

p

五角星符

w

白色

h

六角星符

双纵坐标函数plotyy

把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。

调用格式为:

plotyy(x1,y1,x2,y2)

其中x1—y1对应一条曲线,x2—y2对应另一条曲线。

横坐标的标度相同,纵坐标有2个,左纵坐标用于x1—y1数据对,右纵坐标用于x2—y2数据对。

4.1.2绘制图形的辅助操作

1.图形标注

有关图形标注函数的调用格式为:

title(图形名称)

xlabel(x轴说明)

ylabel(y轴说明)

text(x,y,图形说明)

legend(图例1,图例2……)

其中title和xlabel、ylabel函数分别用于说明图形和坐标轴的名称。

text函数是在(x,y)坐标处添加图形说明。

添加文本说明也可用于gtext命令,执行该命令时,十字坐标光标自动跟随鼠标移动,单击鼠标即可将文本放置在十字光标处。

Legend函数用于绘制曲线所用线型、颜色或数据点标记图例,,图例放置在图形空白处,用户还可以通过鼠标移动图例,将其放在所希望的位置。

2.坐标控制

如果用户对坐标系不满意,可利用axis函数对其重新设定。

该函数的调用格式为:

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

axis函数功能丰富,常用的用法还有:

axisequal纵、横坐标轴采用等长刻度

axissquare产生正方形坐标系(缺省为矩形)

axisauto使用缺省设置

axisoff取消坐标轴

axison显示坐标轴

一般情况下,绘图命令每执行一次就刷新当前图形窗口,图形窗口原有图形将不复存在。

若希望在已存在的图形上在继续添加新的图形,可使用图形保持命令hold。

holdon/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。

给坐标加网格线用grid命令来控制。

gridon/off命令控制室画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。

给坐标加边框用box命令。

boxon/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。

3.图形窗口的分割

MATLAB系统提供了subplot函数,用来将当前图形窗口分割成若干个绘图区。

每个区域代表一个独立的子图,也是一个独立的坐标系,可以通过subplot函数激活某一区,该区为活动区,所发出的绘图命令都是作用于活动区域。

Subplot函数的调用格式为:

Subplot(m,n,p)

该函数将当前图形窗口分成m×n个绘图区,即每行n个、共m行,区号按行优先编号,且选定第p个区为当前活动区。

在每一个绘图区允许以不同的坐标系单独绘制图形。

4.1.3绘制二维图形的其他函数

1.其他形式的线性直角坐标图

条形图:

bar(x,y,选项)

阶梯图:

stairs(x,y,选项)

杆图:

stem(x,y,选项)

填充图:

fill(x1,y1,选项1,x2,y2,选项2,…)

前3个函数的用法与plot函数相似,只是没有多输入变量形式。

fill函数按向量元素下标渐增次序依次用直线段连接x,y对应元素定义的数据点。

假若这样;连接所得折线不封闭,那么MATLAB将自动把该折线的首尾连接起来,构成封闭四边形,然后将多边形内部涂满指定的颜色。

2.极坐标图

polar函数用来绘制极坐标图,其调用格式为:

polar(theta,rho,选项)

其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。

3.对数坐标形式

MATLAB提供了绘制对数和半对数坐标轴曲线的函数,调用格式为:

semilogx(x1,y1,选项1,x2,y2,选项2,…)

semilogy(x1,y1,选项1,x2,y2,选项2,…)

loglog(x1,y1,选项1,x2,y2,选项2,…)

其中选项的定义与plot函数完全一致,所不同的是坐标轴的选取。

Semilogx函数使用半对数坐标,x轴为常用对数刻度,而y轴仍保持线性刻度。

semilogy函数也使用半对数坐标,y轴为常用对数刻度,而x轴仍保持线性刻度。

loglog函数使用全对数坐标,x,y轴均采用常用对数刻度。

函数logspace可以按对数等间距地分布来产生一个向量。

调用格式为:

Logspace(a,b,n)

其中a和b是生成向量的第一个和最后一个元素,n是元素总数。

当n省略时,自动产生50个元素。

4.对函数自适应采样的绘图函数

对绘制高频率变化的函数,为提高精度,绘制出比较真实的函数曲线,不能采用等间隔取样,而必须在变化率大的区段密集采样,以充分反应函数的实际变化规律,进而提高图形的真实度。

fplot函数可自适应地对函数进行采样,能更好地反应函数的变化规律。

其调用格式为:

fplot(fname,lims,tol,选项)

其中fname为函数名,以字符串形式出现。

它可以是由多个分量函数构成的行向量,分量函数可以是函数的直接字符串,也可以是内部函数名或函数文件名,但自变量都必须为x。

lims为x,y的取值范围,以行向量形式出现,取二元向量[xmin,xmax]时,x轴的范围被认为确定,取四元向量[xmin,xmax,ymin,ymax]时,x,y轴的范围被认为确定。

tol为相对允许误差,其系统默认值为2e-3。

选项定义与plot函数相同。

5.其他形式的图形

用来表示各元素占总和的百分比的饼图:

pie([行矩阵])

复数的向量图:

compass([复数])

4.2三维图形

最基本的三维图形函数为plot3,其调用格式为:

plot(x1,y1,z1,选项1,x2,y2,z2,选项2,...,xn,yn,zn,选项n)

其中每一组x,y,z组成一组曲线的坐标参数。

当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。

当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。

4.2.2三维曲面

1.平面网格坐标矩阵的生成

(1)利用矩阵运算生成,命令如下。

x=a:

dx:

b;y=(c:

dy:

d)';

X=ones(size(y))*x;

Y=y*ones(size(x));

(2)利用meshgrid函数生成,命令如下。

x=a:

dx:

b;y=c:

dy:

d;

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

语句执行后,所得到的网格坐标矩阵X,Y与方法

(1)得到的相同。

当x=y时,meshgrid函数可写成meshgrid(x)。

2.绘制三维曲面的函数

MATLAB提供了mesh函数和surf函数来绘制三维曲面图。

mesh函数用于绘制三维网格图。

在不需要绘制特别精细的三维曲面图时,可以通过三维网格图来表示三维曲面。

surf用于绘制三维曲面图,各条线之间的补面用颜色填充。

函数的调用格式为:

mesh(x,y,z,c)

surf(x,y,z,c)

一般情况下,x,y,z是维数相同的矩阵。

x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下得颜色范围。

C省略时,MATLAB认为c=z,即颜色的设定是正比于图形的高度的,这样就可以得出层次分明的三维图形。

当x,y省略时,把z矩阵的列下标当做x轴坐标,行下标当做y轴坐标,然后绘制三维曲面图。

当x,y是向量时,必须要求x的长度等于z矩阵的列,y的长度等于z矩阵的行,x,y向量元素的组合构成网格点的x-y坐标,z坐标则取自z矩阵,然后绘制三维曲面图。

3.标准三维曲面

sphere函数用于绘制三维球面,调用格式为:

[x,y,z]=sphere(n)

该函数将产生(n+1)×(n+1)矩阵x,y,z,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。

若在调用该甘肃时不带输出参数,则直接绘制所需球面。

N决定了球面的圆滑程度,其缺省值为20.若n值取得较小,则将绘制出多面体表面图。

cylinder函数绘制柱面,调用格式为:

[x,y,z]=cylinder(R,n)

其中R是一个向量,存放柱面各个层次上的半径。

多峰函数peaks,常用于三维曲面的演示。

4.2.3其他三维图形

条形图、饼图和填充图使用的

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

当前位置:首页 > 自然科学 > 物理

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

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