第1章 矩阵及其基本运算
混合积由以上两函数实现:
例1-25 计算向量a=(1, 2, 3)、b=(4, 5, 6)和c=(-3, 6, -3) 的混合积a?(b?c) 解:
>>a=[1 2 3]; b=[4 5 6]; c=[-3 6 -3]; >>x=dot(a, cross(b, c)) 结果显示:x = 54
注意:先叉乘后点乘,顺序不可颠倒。 6.矩阵的卷积和多项式乘法
函数 conv
格式 w = conv(u,v) %u、v为向量,其长度可不相同。
说明 长度为m的向量序列u和长度为n的向量序列v的卷积(Convolution)定义为:
kw(k)??u(j)v(kj?1?1?j)式中:w向量序列的长度为(m+n-1),当m=n时,
w(1) = u(1)*v(1)
w(2) = u(1)*v(2)+u(2)*v(1)
w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1) ?
w(n) = u(1)*v(n)+u(2)*v(n-1)+ ? +u(n)*v(1) ?
w(2*n-1) = u(n)*v(n)
例1-26 展开多项式(s2?2s?2)(s?4)(s?1) 解:>> w=conv([1,2,2],conv([1,4],[1,1]))
w =
1 7 16 18 8
>> P=poly2str(w,'s') %将w表示成多项式
P =
s^4 + 7 s^3 + 16 s^2 + 18 s + 8
7.反褶积(解卷)和多项式除法运算
函数 deconv
格式 [q,r] = deconv(v,u) %多项式v除以多项式u,返回商多项式q和余多项式r。 注意:v、u、q、r都是按降幂排列的多项式系数向量。
3 x ?? 20),则其卷积为 例1-27 ( x ? 2 x ? 4 )( 10 x x ? 30
>>u = [1 2 3 4]
>>v = [10 20 30] >>c = conv(u,v)
c =
10 40 100 160 170 120 则反褶积为
>>[q,r] = deconv(c,u)
q =
10 20 30 r =
0 0 0 0 0 0
3228.张量积
11 MATLAB6.0数学手册 函数 kron
格式 C=kron (A,B) %A为m×n矩阵,B为p×q矩阵,则C为mp×nq矩阵。
?a11B?a21B说明 A与B的张量积定义为:C?A?B??????am1Ba12Ba22B?am2B????a1nB??a2nB?A?B与B?A???amnB?均为mp×nq矩阵,但一般地A?B?B?A。
?1例1-28 A???3?12??B?4 ??4???72583??6 求A?B。 ?9??>> A=[1 2;3 4];B=[1 2 3;4 5 6;7 8 9];
>> C=kron(A,B)
C =
1 2 3 2 4 6 4 5 6 8 10 12 7 8 9 14 16 18 3 6 9 4 8 12 12 15 18 16 20 24 21 24 27 28 32 36
1.2.3 集合运算
1.两个集合的交集
函数 intersect
格式 c = intersect(a,b) %返回向量a、b的公共部分,即c= a∩b。
c = intersect(A,B,'rows') %A、B为相同列数的矩阵,返回元素相同的行。
[c,ia,ib] = intersect(a,b) %c为a、b的公共元素,ia表示公共元素在a中的位置,
ib表示公共元素在b中位置。
例1-29
>> A=[1 2 3 4;1 2 4 6;6 7 1 4]
A =
1 2 3 4 1 2 4 6 6 7 1 4 >> B=[1 2 3 8;1 1 4 6;6 7 1 4]
B =
1 2 3 8 1 1 4 6 6 7 1 4 >> C=intersect(A,B,'rows')
C =
6 7 1 4
例1-30
>> A = [1 9 6 20]; B = [1 2 3 4 6 10 20]; >> [c,ia,ib] = intersect(A,B)
12 第1章 矩阵及其基本运算
c =
1 6 20 ia =
1 3 4 ib =
1 5 7
2.检测集合中的元素
函数 ismember
格式 k = ismember(a,S) %当a中元素属于S时,k取1,否则,k取0。
k = ismember(A,S,'rows') %A、S有相同的列,返回行相同k取1,不相同取0
的列向量。
例1-31
>> S=[0 2 4 6 8 10 12 14 16 18 20]; >> a=[1 2 3 4 5 6]; >> k=ismember(a,S)
k =
0 1 0 1 0 1 %1表示相同元素的位置
例1-32
>> A=[1 2 3 4;1 2 4 6;6 7 1 4] >> B=[1 2 3 8;1 1 4 6;6 7 1 4] >> k=ismember(A,B,'rows')
k = 0 0
1 %1表示元素相同的行
3.两集合的差
函数 setdiff
格式 c = setdiff(a,b) %返回属于a但不属于b的不同元素的集合,C = a-b。
c = setdiff(A,B,'rows') %返回属于A但不属于B的不同行
[c,i] = setdiff(?) %c与前面一致,i表示c中元素在A中的位置。 例1-33
>> A = [1 7 9 6 20]; B = [1 2 3 4 6 10 20]; >> c=setdiff(A,B)
c =
7 9
例1-34
>> A=[1 2 3 4;1 2 4 6;6 7 1 4] >> B=[1 2 3 8;1 1 4 6;6 7 1 4] >> c=setdiff(A,B,'rows')
c =
1 2 3 4 1 2 4 6
4.两个集合交集的非(异或)
函数 setxor
格式 c = setxor(a,b) %返回集合a、b交集的非
c = setxor(A,B,'rows') %返回矩阵A、B交集的非,A、B有相同列数。
[c,ia,ib] = setxor(?) %ia、ib表示c中元素分别在a (或A)、b(或B)中位置
13 MATLAB6.0数学手册 例1-35
>> A=[1 2 3 4]; >> B=[2 4 5 8]; >> C=setxor(A,B)
C =
1 3 5 8
例1-36
>> A=[1 2 3 4;1 2 4 6;6 7 1 4]
A =
1 2 3 4 1 2 4 6 6 7 1 4 >> B=[1 2 3 8;1 1 4 6;6 7 1 4]
B =
1 2 3 8 1 1 4 6 6 7 1 4 >> [C,ia,ib]=setxor(A,B,'rows')
C =
1 1 4 6 1 2 3 4 1 2 3 8 1 2 4 6 ia = 1 2 ib = 2 1
5.两集合的并集
函数 union
格式 c = union(a,b) %返回a、b的并集,即c = a∪b。
c = union(A,B,'rows') %返回矩阵A、B不同行向量构成的大矩阵,其中相同行
向量只取其一。
[c,ia,ib] = union(?) %ia、ib分别表示c中行向量在原矩阵(向量)中的位置
例1-37
>> A=[1 2 3 4]; >> B=[2 4 5 8]; >> c=union(A,B) 则结果为
c =
1 2 3 4 5 8
例1-38
>> A=[1 2 3 4;1 2 4 6]
A =
1 2 3 4 1 2 4 6 >> B=[1 2 3 8;1 1 4 6]
B =
1 2 3 8 1 1 4 6
14 第1章 矩阵及其基本运算
>> [c,ia,ib]=union(A,B,'rows')
c =
1 1 4 6 1 2 3 4 1 2 3 8 1 2 4 6 ia = 1 2 ib = 2 1
6.取集合的单值元素
函数
格式 b = unique (a) %取集合a的不重复元素构成的向量
b = unique (A,'rows') %返回A、B不同行元素组成的矩阵
[b,i,j] = unique (?) %i、j体现b中元素在原向量(矩阵)中的位置
例1-39
>> A=[1 1 2 2 4 4 6 4 6]
A =
1 1 2 2 4 4 6 4 6 >> [c,i,j]=unique(A)
c =
1 2 4 6 i =
2 4 8 9 j =
1 1 2 2 3 3 4 3 4
例1-40
>> A=[1 2 2 4;1 1 4 6;1 1 4 6]
A =
1 2 2 4 1 1 4 6 1 1 4 6 >> [c,i,j]=unique(A,'rows')
c =
1 1 4 6 1 2 2 4 i = 3 1 j = 2 1 1
1.2.4 除法运算
Matlab提供了两种除法运算:左除(\\)和右除(/)。一般情况下,x=a\\b是方程a*x =b的解,而x=b/a是方程x*a=b的解。
例:a=[1 2 3; 4 2 6; 7 4 9]
15