MATLAB中的运算包括算术运算、关系运算和逻辑运算。其中关系运算和逻辑运算应用的最广泛。
运算符
运算符是一个符号,它能够执行一些特定数学运算和逻辑运算,因为在MATLAB中数据类型变量都是数组,因此在MATLAB中主要是对于数组的操作。
MATLAB中的运算符主要有算术运算符、关系运算符、逻辑运算符、按位运算符、集合运算符。
算术运算
MATLAB中的算术运算符
|
运算符 |
定义 |
|
.’; ’; .^; ^ |
转置;共轭转置;点次方运算;算术次方运算 |
|
+; - |
正号; 负号 |
|
.*; *; ./; /; .\; \ |
点乘; 乘法;点左除;除法;点右除;除法 |
|
+; -; |
加法; 减法; |
|
:; |
冒号; |
在算术运算中的加、减、乘和次方运算和传统上的运算相似,但是点乘和点次方运算指的是运算间的运算。
但MATLAB中的除法非常特殊,它有左右之分,右除和传统的除法一样,但是左除是和传统的相反的。
实例:算术运算的操作
计算145*66
>> 145*66
ans =
9570
计算25^5。
>> 25^5
ans =
9765625
计算√24^3+11.
>> a=24^3+11
a =
13835
>> b=sqrt(a)
b =
117.6223
关系运算
MATLAB中的关系运算符
|
运算符 |
定义 |
|
== |
等于 |
|
~= |
不等于 |
|
> |
大于 |
|
>= |
大于等于 |
|
< |
小于 |
|
<= |
小于等于 |
实例:关系运算符的使用
>> x=0;
>> y=9;
>> x>=y
ans =
logical
0
逻辑运算
MATLAB在进行逻辑运算时,所有的非零值为真,零为假。在判断时,如果为真输出“1”,为假输出“0”。
MATLAB中主要的逻辑运算符
|
运算符 |
定义 |
|
And |
逻辑与,同时为“1”时,结果为“1”,反之为“0” |
|
Or |
逻辑或,同时位“0”时,结果为“0”反之为“1” |
|
~ |
逻辑非,同时为“0”时,结果为“1”,反之为“0” |
|
Xor |
逻辑异或,相同为“0”,反之为“1” |
|
Any |
有非零元素就为真 |
|
all |
所有元素均为非零则为真 |
实例:逻辑运算符的使用
>> and(5,1)
ans =
logical
1
>> or(0,0)
ans =
logical
0
>> xor(0,1)
ans =
logical
1
>> any(12)
ans =
logical
1
>> all(11)
ans =
logical
1
在算术,关系,逻辑三种运算符中,算术运算符的优先级最高,关系运算符次之,逻辑运算符最低。在逻辑运算符中,“非”运算符最高,“与”和“或”相同
位运算
位运算值执行按位运算,&,|和^的真值表
|
p |
q |
P&q |
P|q |
P^q |
|
0 |
0 |
0 |
0 |
0 |
|
0 |
1 |
0 |
1 |
1 |
|
1 |
0 |
0 |
1 |
1 |
|
1 |
1 |
1 |
1 |
1 |
数组运算
MATLAB中最基本的数组运算就是数组的加(+)、减(-)、乘(*)、次方(^)等运算。但是要注意的是在进行加减运算时参加运算的数组的尺寸要一致,而在进行数组的乘法运算时要去前一个数组的列数要等于后一个数组的行数,而在进行次方运算时要求就有相同的行数和列数。
实例:数组最基本的运算,
>> a=magic(6)
a =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
>> b=eye(6)
b =
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
>> c=ones(6,6)
c =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
>> a+b
ans =
36 1 6 26 19 24
3 33 7 21 23 25
31 9 3 22 27 20
8 28 33 18 10 15
30 5 34 12 15 16
4 36 29 13 18 12
>> b-c
ans =
0 -1 -1 -1 -1 -1
-1 0 -1 -1 -1 -1
-1 -1 0 -1 -1 -1
-1 -1 -1 0 -1 -1
-1 -1 -1 -1 0 -1
-1 -1 -1 -1 -1 0
>> a*c
ans =
111 111 111 111 111 111
111 111 111 111 111 111
111 111 111 111 111 111
111 111 111 111 111 111
111 111 111 111 111 111
111 111 111 111 111 111
>> c*c
ans =
6 6 6 6 6 6
6 6 6 6 6 6
6 6 6 6 6 6
6 6 6 6 6 6
6 6 6 6 6 6
6 6 6 6 6 6
数组的除法运算:除法运算就相当于乘法的逆运算,在MATLAB中的数组的除法运算有分左除(/)和右除(\)之分。
·A/B相当于A*inv(B)
·A\B相当于inv(A)*B
Inv是数组求逆函数,但仅仅适用于行列相同的方形数组(线性代数称方阵),相关知识可以参考线性代数有关资料。
实例:数组的除法
>> a=magic(6)
a =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
>> b=eye(6)
b =
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
>> c=ones(6,6)
c =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
>> a+b
ans =
36 1 6 26 19 24
3 33 7 21 23 25
31 9 3 22 27 20
8 28 33 18 10 15
30 5 34 12 15 16
4 36 29 13 18 12
>> b-c
ans =
0 -1 -1 -1 -1 -1
-1 0 -1 -1 -1 -1
-1 -1 0 -1 -1 -1
-1 -1 -1 0 -1 -1
-1 -1 -1 -1 0 -1
-1 -1 -1 -1 -1 0
>> a*c
ans =
111 111 111 111 111 111
111 111 111 111 111 111
111 111 111 111 111 111
111 111 111 111 111 111
111 111 111 111 111 111
111 111 111 111 111 111
>> c*c
ans =
6 6 6 6 6 6
6 6 6 6 6 6
6 6 6 6 6 6
6 6 6 6 6 6
6 6 6 6 6 6
6 6 6 6 6 6
>> a=[9 8 5;2 1 1;2 4 6];
>> b=[0.9 0.8 0.5;0.2 0.1 0.1;0.2 0.4 0.6];
>> a/b
ans =
10.0000 0 0
0.0000 10.0000 -0.0000
-0.0000 0 10.0000
>> a*inv(b)
ans =
10.0000 0.0000 0.0000
0.0000 10.0000 -0.0000
-0.0000 0.0000 10.0000
>> a\b
ans =
0.1000 -0.0000 0.0000
-0.0000 0.1000 -0.0000
0.0000 -0.0000 0.1000
>> inv(a)*b
ans =
0.1000 0.0000 0.0000
0.0000 0.1000 -0.0000
0.0000 0 0.1000
点运算
上文中讲到的数组的加减乘除等运算都是专门为数组定义的,但是在用户的实际使用时对尺寸相同的数组的各个元素进行运算,因此,MATLAB为用户提供了点运算可以实现这一功能。
A.*B就能完成相应的两个尺寸相同的数组的对应数组的乘法,同理,A.^B,A./B,A.\B都能完成相应的元素运算。
实例:点运算的使用
>> a=magic(6)
a =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
>> b=eye(6)
b =
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
>> c=ones(6,6)
c =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
>> d=b+c
d =
2 1 1 1 1 1
1 2 1 1 1 1
1 1 2 1 1 1
1 1 1 2 1 1
1 1 1 1 2 1
1 1 1 1 1 2
>> a.*d
ans =
70 1 6 26 19 24
3 64 7 21 23 25
31 9 4 22 27 20
8 28 33 34 10 15
30 5 34 12 28 16
4 36 29 13 18 22
>> a.^b
ans =
35 1 1 1 1 1
1 32 1 1 1 1
1 1 2 1 1 1
1 1 1 17 1 1
1 1 1 1 14 1
1 1 1 1 1 11
>> a./d
ans =
17.5000 1.0000 6.0000 26.0000 19.0000 24.0000
3.0000 16.0000 7.0000 21.0000 23.0000 25.0000
31.0000 9.0000 1.0000 22.0000 27.0000 20.0000
8.0000 28.0000 33.0000 8.5000 10.0000 15.0000
30.0000 5.0000 34.0000 12.0000 7.0000 16.0000
4.0000 36.0000 29.0000 13.0000 18.0000 5.5000
复数运算
MATLAB提供了九中复数运算函数:如下表
|
函数 |
功能 |
|
Abs |
模 |
|
Angle |
复数的相角 |
|
Complex |
用实部和虚部构造一个复数 |
|
Conj |
复数的共轭 |
|
Image |
复数的虚部 |
|
Real |
复数的实部 |
|
Unwrap |
调整矩阵元素的相位 |
|
Isreal |
是否为实数矩阵 |
|
Cplxair |
复数矩阵排列复成共轭对 |
复数的四则运算
运算的定义:
设:m1=a1+b1i;m2=a2+b2i;
则:m1+m2=(a1+a2)+(b1+b2)i;
m1-m2=(a1-a2)+(b1-b2)i;
m1*m2=(a1*a2-b1*b2)+(a1*a2+b1*b2)i;
m1/m2=(a1*a2+b1*b2)/(a1^2+a^2)+(b1*a2-a1*b2)i/(a2^2+b2^2)
实例:复数运算操作
>> m=1+2i;
>> n=2+4i;
>> m+n
ans =
3.0000 + 6.0000i
>> m-n
ans =
-1.0000 - 2.0000i
>> m*n
ans =
-6.0000 + 8.0000i
>> m/n
ans =
0.5000
复数的模
复数除了四则运算之外,还有模运算,用极坐标可以表示为:
Z∠Θ=a+bi;z代表向量的模,∠Θ代表夹角;
实例:
>> a=1+2i;
>> b=angle(a)
b =
1.1071
%用abs可以求出模长
>> c=abs(a)
c =
2.2361
共轭复数:
如果存在复数m=a+bi;则一定存在共轭复数n=a-bi;
实例:求解共轭复数:
>> a=1+4i;
>> b=real(a)
b =
1
>> c=imag(a)
c =
4
>> d=conj(a)
d =
1.0000 - 4.0000i
1万+

被折叠的 条评论
为什么被折叠?



