⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.txt

📁 这是一些关于学习matlab 的资料
💻 TXT
📖 第 1 页 / 共 5 页
字号:
      0     0      0      1       1       1         0    
      0     0      0      0       1       2         1    
      0     0      0      0       0       1         3    
1.2  矩阵运算
1.2.1  加、减运算
运算符:“+”和“-”分别为加、减运算符。
运算规则:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。
例1-22  
>>A=[1, 1, 1; 1, 2, 3; 1, 3, 6]
>>B=[8, 1, 6; 3, 5, 7; 4, 9, 2]
>>A+B=A+B
>>A-B=A-B
结果显示:A+B=
9   2   7
4   7  10
5  12   8
A-B=
-7    0   -5
-2    -3   -4
-3    -6    4
1.2.2  乘法
运算符:*
运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。
1.两个矩阵相乘
例1-23
>>X= [2  3  4  5;
      1  2  2  1];
>>Y=[0  1  1;
     1  1  0;
     0  0  1;
     1  0  0];
Z=X*Y
结果显示为:
Z=
   8  5  6
   3  3  3 
2.矩阵的数乘:数乘矩阵
上例中:a=2*X
则显示:a =
4  6  8  10
2  4  4  2
向量的点乘(内积):维数相同的两个向量的点乘。
数组乘法:
A.*B表示A与B对应元素相乘。
3.向量点积
函数  dot
格式  C = dot(A,B)       %若A、B为向量,则返回向量A与B的点积,A与B长度相同;若为矩阵,则A与B有相同的维数。
C = dot(A,B,dim)    %在dim维数中给出A与B的点积
例     	>>X=[-1  0  2];
>>Y=[-2  -1  1];
>>Z=dot(X, Y)
则显示:Z =
4
还可用另一种算法:
sum(X.*Y)
ans=
     4
4.向量叉乘
在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。在Matlab中,用函数cross实现。
函数  cross
格式  C = cross(A,B)   %若A、B为向量,则返回A与B的叉乘,即C=A×B,A、B必须是3个元素的向量;若A、B为矩阵,则返回一个3×n矩阵,其中的列是A与B对应列的叉积,A、B都是3×n矩阵。
C = cross(A,B,dim)   %在dim维数中给出向量A与B的叉积。A和B必须具有相同的维数,size(A,dim)和size(B,dim)必须是3。
例1-24  计算垂直于向量(1, 2, 3)和(4, 5, 6)的向量。
   >>a=[1  2  3];
   >>b=[4  5  6];
   >>c=cross(a,b)
结果显示:
    c=
       -3     6    -3
可得垂直于向量(1, 2, 3)和(4, 5, 6)的向量为±(-3, 6, -3)
5.混合积
混合积由以上两函数实现:
例1-25  计算向量a=(1, 2, 3)、b=(4, 5, 6)和c=(-3, 6, -3) 的混合积 
解:
>>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)定义为: 式中: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  展开多项式 
解:>> 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都是按降幂排列的多项式系数向量。
例1-27                                 ,则其卷积为
>>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
8.张量积
函数  kron
格式  C=kron (A,B)   %A为m×n矩阵,B为p×q矩阵,则C为mp×nq矩阵。
说明  A与B的张量积定义为: A B与B A均为mp×nq矩阵,但一般地A B B A。
例1-28          求A B。
>> 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)
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)中位置
例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
>> [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]
b=[4; 1; 2];
x=a\b
则显示:x=
-1.5000
           2.0000
0.5000
如果a为非奇异矩阵,则a\b和b/a可通过a的逆矩阵与b阵得到:
       a\b = inv(a)*b
       b/a = b*inv(a)
数组除法:
A./B表示A中元素与B中元素对应相除。
1.2.5  矩阵乘方
运算符:^
运算规则:
(1)当A为方阵,P为大于0的整数时,A^P表示A的P次方,即A自乘P次;P为小于0的整数时,A^P表示A-1的P次方。
(2)当A为方阵,p为非整数时,则 其中V为A的特征向量, 为特征值对角矩阵。如果有重根,以上指令不成立。
(3)标量的矩阵乘方PA,标量的矩阵乘方定义为 式中V,D取自特征值分解AV=AD。
(4)标量的数组乘方P.^A,标量的数组乘方定义为 数组乘方:A.^P:表示A的每个元素的P次乘方。
1.2.6  矩阵函数
命令  方阵指数
函数  expm
格式  Y = expm(A)   %使用Pade近似算法计算eA,这是一个内部函数,A为方阵。
      Y=expm1(A)   %使用一个M文件和内部函数相同的算法计算eA
      Y=expm2(A)   %使用泰勒级数计算eA
      Y=expm3(A)   %使用特征值和特征向量计算eA
命令  矩阵的对数
函数  logm
格式  Y = logm(X)         %计算矩阵X的对数,它是expm(X)的反函数。
[Y,esterr] = logm(X)   %esterr为相对残差的估计值:norm(expm(Y)-X)/norm(X)
例1-41
>> A=[1 1 0;0 0 2;0 0 -1];
>> Y=expm(A)
Y =
   2.7183    1.7183    1.0862
        0    1.0000    1.2642
        0         0    0.3679
>> A=logm(Y)
A =
   1.0000    1.0000    0.0000
       0         0    2.0000
         0         0   -1.0000
命令  方阵的函数
函数  funm
格式  F = funm(A,fun)        %A为方阵,计算由fun指定的A的矩阵函数,fun可以是任意基本函数,如sin、cos等等,例如:funm(A, ’exp’)=expm(A)。
[F,esterr] = funm(A,fun)   %esterr为结果所产生的相对误差的估计值。
命令  矩阵的方根
函数  sqrtm
格式  X = sqrtm(A)   %矩阵A的平方根A1/2,相当于X*X=A,求X。若A的特征值有非负实部,则X是唯一的;若A的特征值有负的实部,则X为复矩阵;若A为奇异矩阵,则X不存在。
[X,resnorm] = sqrtm(A)       % resnorm为结果产生的相对误差
[X,alpha,condest] = sqrtm(A)   % alpha为稳定因子,condest为结果的条件数的估计值。
命令  矩阵A的多项式
函数  polyvalm

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -