MATLAB语言运算符-matlab运算实例源码_第1页
MATLAB语言运算符-matlab运算实例源码_第2页
MATLAB语言运算符-matlab运算实例源码_第3页
MATLAB语言运算符-matlab运算实例源码_第4页
MATLAB语言运算符-matlab运算实例源码_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB语言运算符使用inputname可直接获得函数名称。

语法就是

inputname(argnum)

假如有函数x=f(arg1,arg2)

inputname(1)就是第一个名字,(2)就是第二个编程语言运算符主要为算术运算符、关系运算符和逻辑运算符,还包括一些特殊运算符。下面介绍MATLAB语言的各种运算符。1.算术运算符MATLAB算术运算符分为两类:矩阵运算和数组运算。矩阵运算是按线性代数的规则进行运算,而数运算是数组对应元素间的运算。算术运算符及相关运算方式、说明见下表:运算符运算方式说明运算符运算方式说明+,-矩阵运算加、减+,-数组运算加、减*,/矩阵运算乘、除.*数组运算数组乘\矩阵运算左除,左边为除数./数组运算数组左除^矩阵运算乘方.\数组运算数组右除’矩阵运算转置.^数组运算数组乘方:矩阵运算索引,用于增量操作.’数组运算数组转置MATLAB数组的算术运算,是两个同维数组对应元素之间的运算。一个标量与数组的运算,是标量与数组每个元素之间的运算。2.关系运算关系运算用于比较两个同维数组或同维向量的对应元素,结果为一个同维的逻辑数组。关系运算符及说明见下表:关系运算符说明<

小于<=小于等于>

大于>=大于等于==等于~=不等于3.逻辑运算MATLAB提供了两种类型的逻辑运算:一般逻辑运算和捷径运算,见下表:运算类型运算符与函数说明

一般逻辑运算

&(and)逻辑与|(or)逻辑或~(not)逻辑非xor逻辑异或

捷径运算

&&支标量值的捷径与||对标量值的捷径或捷径运算符只对标量值执行逻辑与和逻辑或运算。捷径运算首先判断第一个运算对象,如果可以知道结果,直接返回,而不继续判断第二个运算对象。捷径运算提高了程序运算效率,可以避免一些不必要的错误。例如:>>x=b&&(a/b>10)

%相当于x=(b&&(a/b>10))如果b=0,捷径运算符不会计算(a/b>10)的值了,也就避免了被0除的错误。4.特殊运算符除了以上运算符,MATLAB还经常使用一些特殊的运算符,见下表:运算符说明运算符说明[]生成向量和矩阵…续行符{}给单元数组赋值,分隔矩阵下标和函数参数()在算术运算中优先计算;封装函数参数;封装向量或矩阵下表;在括号内结束行;禁止表达式显示结果;隔开声明=用于赋值语句:创建矢量、数组下标;循环迭代’两个’之间的字符为字符串%注释;格式转换定义中的初始化字符.域访问@函数句柄,类似于C语言中的取址运算除了传统的数学运算,MATLAB支持关系和逻辑运算。如果你已经有了一些编程经验,就会对这些运算熟悉。这些操作符和函数的目的是提供求解真/假命题的答案。一个重要的应用是控制基于真/假命题的一系列MATLAB命令(通常在M文件中)的流程,或执行次序。

作为所有关系和逻辑表达式的输入,MATLAB把任何非零数值当作真,把零当作假。所有关系和逻辑表达式的输出,对于真,输出为1;对于假,输出为零。

5.1

关系操作符

MATLAB关系操作符包括所有常用的比较。

表5.1关系操作符说明<

小于<=小于或等于>

大于>=大于或等于==等于~=不等于

MATLAB关系操作符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量。在后一种情况,标量和数组中的每一个元素相比较,结果与数组大小一样。下面给出几个示例:

»A=1:9,B=9-A

A=

1

2

3

4

5

6

7

8

9

B=

8

7

6

5

4

3

2

1

0

»tf=A>4

tf=

0

0

0

0

1

1

1

1

1

找出A中大于4的元素。0出现在A<=4的地方,1出现在A>4的地方。

»tf=(A==B)

tf=

0

0

0

0

0

0

0

0

0

找出A中的元素等于B中的元素。注意,=和==意味着两种不同的事:==

比较两个变量,当它们相等时返回1,当它们不相等时返回0;在另一方面,

=

被用来将运算的结果赋给一个变量。

»tf=B-(A>2)

tf=

8

7

5

4

3

2

1

0

-1

找出A>2,并从B中减去所求得的结果向量。这个例子说明,由于逻辑运算的输出是1和0的数组,它们也能用在数学运算中。

»B=B+(B==0)*eps

B=

Columns1through7

8.0000

7.0000

6.0000

5.0000

4.0000

3.0000

2.0000

Columns8through9

1.0000

0.0000

这是一个演示,表明如何用特殊的MATLAB数eps来代替在一个数组中的零元素,eps近似为2.2e-16。这种特殊的表达式在避免被0除时是很有用的。

»x=(-3:3)/3

x=

-1.0000

-0.6667

-0.3333

0

0.3333

0.6667

1.0000

»sin(x)./x

Warning:Dividebyzero

ans=

0.8415

0.9276

0.9816

NaN

0.9816

0.9276

0.8415

由于第四个数据是0

,计算函数sin(x)/x时给出了一个警告。由于sin(0)/0是没定义的,在该处MATLAB结果返回NaN。用eps替代0以后,再试一次,

»x=x+(x==0)*eps;

»sin(x)./x

ans=

0.8415

0.9276

0.9816

1.0000

0.9816

0.9276

0.8415

现在sin(x)/x在x=0处给出了正确的极限。

5.2

逻辑操作符

逻辑操作符提供了一种组合或否定关系表达式。MATLAB逻辑操作符包括:

表5.2逻辑操作符说明&与|或~非

逻辑操作符用法的一些例子有:

»A=1:9;B=9-A;

»tf=A>4

tf=

0

0

0

0

1

1

1

1

1

找出A大于4。

»tf=~(A>4)

tf=

1

1

1

1

0

0

0

0

0

对上面的结果取非,也就是1替换0,0替换1。

»tf=(A>2)&(A<6)

tf=

0

0

1

1

1

0

0

0

0

在A大于2‘与’A小于6处返回1。

最后,上面的功能易于产生数组来表示不连续信号,或由多段其他信号所组成的信号。基本想法是,把数组中要保持的那些值与1相乘,所有其他值与0相乘。例如,

»x=linspace(0,10,100);

%

createdata

»y=sin(x);

%

compute

sine

»z=(y>=0).*y;

%

setnegativevaluesofsin(x)tozero

»z=z+0.5*(y<0);

%

wheresin(x)isnegativeadd1/2

»z=(x<=8).*z;

%

setvaluespastx=8tozero

»plot(x,z)

»xlabel('x'),

ylabel('z=f(x)'),

title('ADiscontinuousSignal')

图5.1

不连续信号

5.3

关系与逻辑函数

除了上面的关系与逻辑操作符,MATLAB提供了大量的其他关系与逻辑函数,包括:

表5.3其

数xor(x,y)异或运算。x或y非零(真)返回1,x和y都是零(假)或都是非零(真)返回0。any(x)如果在一个向量x中,任何元素是非零,返回1;矩阵x中的每一列有非零元素,返回1。all(x)如果在一个向量x中,所有元素非零,返回1;矩阵x中的每一列所有元素非零,返回1。

除了这些函数,MATLAB还提供了大量的函数,测试特殊值或条件的存在,返回逻辑值。

表5.4测

数finite元素有限,返回真值。isempty参量为空,返回真值。isglobal参量是一个全局变量,返回真值。ishold当前绘图保持状态是‘ON’,返回真值。isieee计算机执行IEEE算术运算,返回真值。isinf元素无穷大,返回真值。isletter元素为字母,返回真值。isnan元素为不定值,返回真值。isreal参量无虚部,返回真值。isspace元素为空格字符,返回真值。isstr参量为一个字符串,返回真值。isstudentMATLAB为学生版,返回真值。isunix计算机为UNIX系统,返回真值。isvms计算机为VMS系统,返回真值。

5.4

NaNs和空矩阵

NaNs和空矩阵([

])要求在MATLAB中作特殊处理,特别是用在逻辑或关系表达式里。根据IEEE数学标准,对NaNs的几乎所有运算都得出NaNs。例如,

»a=[1

2

nan

inf

nan]

%

note,inuse,NaNcanbelowercase

a=

1

2

NaN

Inf

NaN

»b=2*a

b=

2

4

NaN

Inf

NaN

»c=sqrt(a)

c=

1.0000

1.4142

NaN

Inf

NaN

»d=(a==nan)

d=

0

0

0

0

0

»f=(a~=nan)

f=

1

1

1

1

1

上面的第一和第二计算式对NaN输入给出NaN结果。然而,最后两个计算式产生有点令人惊讶的结果。当NaN与NaN相比较时,(a==nan)产生全部为0或假的结果,同时(a~=nan)产生全部1或真值。于是,单个NaNs相互不相等。由于NaNs的这种特性,MATLAB有一个内置逻辑函数寻找NaNs。

»g=isnan(a)

g=

0

0

1

0

1

这个函数用find命令能找出NaNs的下标值。例如,

»i=find(isnan(a))

%

findindicesofNaNs

i=

3

5

»a(i)=zeros(size(i))

%

changesNaNsinatozeros

a=

1

2

0

Inf

0

当NaNs数学上由IEEE标准充分定义时,空矩阵由MATLAB的生成器确定,并有它自己的特性。空矩阵是简单的,它们是MATLAB大小为零的变量。

»size([

])

ans=

0

0

当没有其它合适的结果时,在MATLAB中的许多函数返回空矩阵。或许最普通的例子是函数find:

»x=(1:5)-3

%

newdata

x=

-2

-1

0

1

2

»y=find(x>2)

y=

[

]

在这个例子里,x没有包含大于2的值,所以没有返回下标。为了测试空结果,MATLAB提供了逻辑函数isempty。

»isempty(y)

ans=

1

在MATLAB里,空矩阵不等于任何非零矩阵(或标量)。这个事实由下面例子给出:

»y=[

];

»a=(y==0)

a=

0

这说明一个空矩阵不等于一个标量,因此,

»find(y==0)

an

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论