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

📄 1.txt

📁 这是一些关于学习matlab 的资料
💻 TXT
📖 第 1 页 / 共 5 页
字号:
(1)矩阵的与运算
格式  A&B或and(A, B)
说明  A与B对应元素进行与运算,若两个数均非0,则结果元素的值为1,否则为0。
(2)或运算
格式  A|B或or(A, B) 
说明  A与B对应元素进行或运算,若两个数均为0,则结果元素的值为0,否则为1。
(3)非运算
格式  ~A或not (A)
说明  若A的元素为0,则结果元素为1,否则为0。
(4)异或运算
格式  xor (A,B)
说明  A与B对应元素进行异或运算,若相应的两个数中一个为0,一个非0,则结果为0,否则为1。
例1-57
>> A=[0 2 3 4;1 3 5 0],B=[1 0 5 3;1 5 0 5]
A =
   0     2     3     4
     1     3     5     0
B =
     1     0     5     3
     1     5     0     5
>> C1=A&B,C2=A|B,C3=~A,C4=xor(A,B)
C1 =
    0     0     1     1
    1     1     0     0
C2 =
    1     1     1     1
    1     1     1     1
C3 =
    1     0     0     0
    0     0     0     1
C4 =
    1     1     0     0
    0     0     1     1
1.2.15  符号矩阵运算
1.符号矩阵的四则运算
Matlab 6.x 抛弃了在4.2版中为符号矩阵设计的复杂函数形式,把符号矩阵的四则运算简化为与数值矩阵完全相同的运算方式,其运算符为:加(+)、减(-)、乘(×)、除(/、\)等或:符号矩阵的和(symadd)、差(symsub)、乘 (symmul)。
例1-58  >> 
>> ;
>>C=B-A
>>D=a\b
则显示:
C=
x-1/x  1-1/(x+1)
x+2-1/(x+2)   -1/(x+3)
D=
-6*x-2*x^3-7*x^2     1/2*x^3+x+3/2*x^2
6+2*x^3+10*x^2+14*x   -2*x^2-3/2*x-1/2*x^3
2.其他基本运算
符号矩阵的其他一些基本运算包括转置(')、行列式(det)、逆(inv)、秩(rank)、幂(^)和指数(exp和expm)等都与数值矩阵相同
3.将数值矩阵转化为符号矩阵
函数  sym
格式  B=sym(A)   %将A转化为符号矩阵B
例1-59  
>> A=[2/3,sqrt(2),0.222;1.4,1/0.23,log(3)]
A =
   0.6667    1.4142    0.2220
   1.4000    4.3478    1.0986
>> B=sym(A)
B =
[  2/3,      sqrt(2),                     111/500]
[   7/5,     100/23,    4947709893870346*2^(-52)]
4.符号矩阵的索引与修改
符号矩阵的索引与修改同数值矩阵的索引与修改完全相同,即用矩阵的坐标括号表达式实现。
例1-60  对上例中的矩阵B
>> B(2,3)      %矩阵的索引
ans =
4947709893870346*2^(-52)
>> B(2,3)='log(7)'     %矩阵的修改
B =
[     2/3, sqrt(2), 111/500]
[     7/5,  100/23,  log(7)]
5.符号矩阵的简化
符号工具箱中提供了符号矩阵因式分解、展开、合并、简化及通分等符号操作函数。
(1)因式分解
函数  factor
格式  factor(s)    %符号表达式s的因式分解函数
说明  S为符号矩阵或符号表达式,常用于多项式的因式分解。
例1-61  将x 9-1分解因式
在Matlab命令窗口键入:
syms x 
factor(x^9-1)
则显示:ans = 
(x-1)*(x^2+x+1)*(x6+x^3+1)
例1-62  问“入”取何值时,齐次方程组 有非0解?
解:在Matlab编辑器中建立M文件:
syms k
A=[1-k -2 4;2 3-k 1;1 1 1-k];
D=det(A)
factor(D)
其结果显示如下:
D =
-6*k+5*k^2-k^3
ans =
-k*(k-2)*(-3+k)
从而得到:当k=0、k=2或k=3时,原方程组有非0解。
(2)符号矩阵的展开
函数  expand  
格式:expand(s)   %符号表达式s的展开函数
说明:s为符号矩阵或表达式。常用在多项式的因式分解中,也常用于三角函数,指数函数和对数函数的展开中。
例1-63  将(x+1)3、sin(x+y)展开
在Matlab编辑器中建立M文件:
syms  x  y
p=expand((x+1)^3)
q=expand(sin(x+y))
则结果显示为
p =
    x^3+3*x^2+3*x+1
q = 
sin(x)*cos(y)+cos(x)*sin(y)
(3)同类式合并
函数  Collect
格式  Collect(s,v)   %将s中的变量v的同幂项系数合并
Collect(s)    % s是矩阵或表达式,此命令对由命令findsym函数返回的默认变量进行同类项合并。
(4)符号简化
函数  simple或simplify   %寻找符号矩阵或符号表达式的最简型
格式  simple (s)          % s是矩阵或表达式
      [R,how]=simple (s)  %R为返回的最简形,how为简化过程中使用的主要方法。
说明  Simple(s)将表达式s的长度化到最短。若还想让表达式更加精美,可使用函数Pretty。
格式  Pretty(s)     %使表达式s更加精美
例1-64  计算行列式 的值。
在Matlab编辑器中建立M文件:
syms  a  b  c  d 
A=[1 1 1 1;a b c d;a^2 b^2 c^2 d^2;a^4 b^4 c^4 d^4];
d1=det(A)
d2=simple(d1)     %化简表达式d1
pretty(d2)      %让表达式d2符合人们的书写习惯
则显示结果如下: 
d1 =
b*c^2*d^4-b*d^2*c^4-b^2*c*d^4+b^2*d*c^4+b^4*c*d^2-b^4*d*c^2-a*c^2*d^4+a*d^2*c^4+a*b^2*d^4-a*b^2*c^4-a*b^4*d^2+a*b^4*c^2+a^2*c*d^4-a^2*d*c^4-a^2*b*d^4+a^2*b*c^4+a^2*b^4*d-a^2*b^4*c-a^4*c*d^2+a^4*d*c^2+a^4*b*d^2-a^4*b*c^2-a^4*b^2*d+a^4*b^2*c
d2 =
(-d+c)*(b-d)*(b-c)*(-d+a)*(a-c)*(a-b)*(a+c+d+b)
(-d+c)(b-d)(b-c)(-d+a)(a-c)(a-b)(a+c+d+b)
1.2.16  矩阵元素个数的确定
函数  numel
格式  n = numel(a)    %计算矩阵A中元素的个数
例1-65
>> A=[1 2 3 4;5 6 7 8];
>> n=numel(A)
n =
     8
1.3  矩阵分解
1.3.1  Cholesky分解
函数  chol
格式  R = chol(X)      %如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R = X;若X非正定,则产生错误信息。
[R,p] = chol(X)   %不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。
例1-66  
>> X=pascal(4)    %产生4阶pascal矩阵
X =
     1     1     1     1
     1     2     3     4
     1     3     6    10
     1     4    10    20
>> [R,p]=chol(X)
R =
     1     1     1     1
     0     1     2     3
     0     0     1     3
     0     0     0     1
p =
     0
1.3.2  LU分解
矩阵的三角分解又称LU分解,它的目的是将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。
函数  lu
格式  [L,U] = lu(X)     %U为上三角阵,L为下三角阵或其变换形式,满足LU=X。
[L,U,P] = lu(X)   %U为上三角阵,L为下三角阵,P为单位矩阵的行变换矩阵,满足LU=PX。
例1-67
>> A=[1 2 3;4 5 6;7 8 9];
>> [L,U]=lu(A)
L =
   0.1429    1.0000         0
   0.5714    0.5000    1.0000
   1.0000         0         0
U =
   7.0000    8.0000    9.0000
        0    0.8571    1.7143
        0         0    0.0000
>> [L,U,P]=lu(A)
L =
   1.0000         0         0
   0.1429    1.0000         0
   0.5714    0.5000    1.0000
U =
   7.0000    8.0000    9.0000
        0    0.8571    1.7143
        0         0    0.0000
P =
    0     0     1
    1     0     0
    0     1     0
1.3.3  QR分解
将矩阵A分解成一个正交矩阵与一个上三角矩阵的乘积。
函数  qr
格式  [Q,R] = qr(A)     %求得正交矩阵Q和上三角阵R,Q和R满足A=QR。
[Q,R,E] = qr(A)   %求得正交矩阵Q和上三角阵R,E为单位矩阵的变换形式,R的对角线元素按大小降序排列,满足AE=QR。
[Q,R] = qr(A,0)    %产生矩阵A的“经济大小”分解
[Q,R,E] = qr(A,0)  %E的作用是使得R的对角线元素降序,且Q*R=A(:, E)。
R = qr(A)         %稀疏矩阵A的分解,只产生一个上三角阵R,满足R'*R = A'*A,这种方法计算A'*A时减少了内在数字信息的损耗。
[C,R] = qr(A,b)    %用于稀疏最小二乘问题:minimize||Ax-b||的两步解:[C,R] = qr(A,b),x = R\c。
R = qr(A,0)       %针对稀疏矩阵A的经济型分解
[C,R] = qr(A,b,0)   %针对稀疏最小二乘问题的经济型分解
例1-68  
>>A =[ 1  2  3;4  5  6; 7  8  9; 10  11  12];
>>[Q,R] = qr(A)
Q =
   -0.0776    -0.8331     0.5444     0.0605
   -0.3105    -0.4512    -0.7709     0.3251
   -0.5433    -0.0694    -0.0913    -0.8317
   -0.7762     0.3124     0.3178     0.4461
R =
   -12.8841    -14.5916    -16.2992
          0     -1.0413     -2.0826
          0           0      0.0000
          0           0           0
函数  qrdelete
格式  [Q,R] = qrdelete(Q,R,j)   %返回将矩阵A的第j列移去后的新矩阵的qr分解
例1-69
>> A=[-149 -50 -154;537 180 546;-27 -9 -25];
>> [Q,R]=qr(A)
Q =
   -0.2671   -0.7088    0.6529
    0.9625   -0.1621    0.2176
   -0.0484    0.6865    0.7255
R =
  557.9418  187.0321  567.8424
         0    0.0741    3.4577
         0         0    0.1451
>> [Q,R]=qrdelete(Q,R,3)    %将A的第3列去掉后进行qr分解。
Q =
 -0.2671   -0.7088    0.6529
    0.9625   -0.1621    0.2176
   -0.0484    0.6865    0.7255
R =
  557.9418  187.0321
         0    0.0741
         0         0
函数  qrinsert
格式  [Q,R] = qrinsert(Q,R,j,x)   %在矩阵A中第j列插入向量x后的新矩阵进行qr分解。若j大于A的列数,表示在A的最后插入列x。
例1-70
>> A=[-149 -50 -154;537 180 546;-27 -9 -25];
>> x=[35 10 7]';
>> [Q,R]=qrinsert(Q,R,4,x)
Q =
   -0.2671   -0.7088    0.6529
    0.9625   -0.1621    0.2176
   -0.0484    0.6865    0.7255
R =
  557.9418  187.0321  567.8424   -0.0609
         0    0.0741    3.4577  -21.6229
         0         0    0.1451   30.1073
1.3.4  Schur分解
函数  schur
格式  T = schur(A)      %产生schur矩阵T,即T的主对角线元素为特征值的三角阵。
T = schur(A,flag)   %若A有复特征根,则flag='complex',否则flag='real'。
[U,T] = schur(A,…)   %返回正交矩阵U和schur矩阵T,满足A = U*T*U'。
例1-71  
>> H = [ -149  -50  -154; 537  180  546; -27  -9  -25 ];
>> [U,T]=schur(H)
U =
    0.3162   -0.6529    0.6882
   -0.9487   -0.2176    0.2294
    0.0000    0.7255    0.6882
T =
    1.0000   -7.1119 -815.8706
         0    2.0000  -55.0236
         0         0    3.0000
1.3.5  实Schur分解转化成复Schur分解
函数  rsf2csf
格式  [U,T] = rsf2csf (U,T)   %将实舒尔形式转化成复舒尔形式
例1-72  
>> A=[1 1 1 3;1 2 1 1;1 1 3 1;-2 1 1 4];
>> [u,t]=schur (A)
u =
   -0.4916   -0.4900   -0.6331   -0.3428
   -0.4980    0.2403   -0.2325    0.8001
   -0.6751    0.4288    0.4230   -0.4260
   -0.2337   -0.7200    0.6052    0.2466
t =
    4.8121    1.1972   -2.2273   -1.0067
         0    1.9202   -3.0485   -1.8381
         0    0.7129    1.9202    0.2566
         0         0         0    1.3474
>> [U,T]=rsf2csf (u,t)
U =
  -0.4916            -0.2756 - 0.4411i   0.2133 + 0.5699i  -0.3428          
  -0.4980            -0.1012 + 0.2163i  -0.1046 + 0.2093i   0.8001          
  -0.6751             0.1842 + 0.3860i  -0.1867 - 0.3808i  -0.4260          
  -0.2337             0.2635 - 0.6481i   0.3134 - 0.5448i   0.2466          
T =
   4.8121            -0.9697 + 1.0778i  -0.5212 + 2.0051i  -1.0067          
        0             1.9202 + 1.4742i   2.3355             0.1117 + 1.6547i
        0                  0             1.9202 - 1.4742i   0.8002 + 0.2310i
        0                  0                  0             1.3474          
1.3.6  特征值分解
函数  eig
格式  d = eig(A)         %求矩阵A的特征值d,以向量形式存放d。
d = eig(A,B)       %A、B为方阵,求广义特征值d,以向量形式存放d。
[V,D] = eig(A)      %计算A的特征值对角阵D和特征向量V,使AV=VD成立。
[V,D] = eig(A,'nobalance')   %当矩阵A中有与截断误差数量级相差不远的值时,该指令可能更精确。'nobalance'起误差调节作用。
[V,D] = eig(A,B)    %计算广义特征值向量阵V和广义特征值阵D,满足AV=BVD。
[V,D] = eig(A,B,flag)   % 由flag指定算法计算特征值D和特征向量V,flag的可能值为:'chol' 表示对B使用Cholesky分解算法,这里A为对称Hermitian矩阵,B为正定阵。'qz' 表示使用QZ算法,这里A、B为非对称或非Hermitian矩阵。
说明  一般特征值问题是求解方程: 解的问题。广义特征值问题是求方程: 解的问题。
1.3.7  奇异值分解
函数  svd
格式  s = svd (X)          %返回矩阵X的奇异值向量
[U,S,V] = svd (X)    %返回一个与X同大小的对角矩阵S,两个酉矩阵U和V,且满足= U*S*V'。若A为m×n阵,则U为m×m阵,V为n×n阵。奇异值在S的对角线上,非负且按降序排列。
[U,S,V] = svd (X,0)   %得到一个“有效大小”的分解,只计算出矩阵U的前n列,矩阵S的大小为n×n。
例1-73
>> A=[1 2;3 4;5 6;7 8];
>> [U,S,V]=svd(A)
U =
   -0.1525   -0.8226   -0.3945   -0.3800
   -0.3499   -0.4214    0.2428    0.8007
   -0.5474   -0.0201    0.6979   -0.4614
   -0.7448    0.3812   -0.5462    0.0407
S =
   14.2691         0
         0    0.6268
         0         0
         0         0
V =
   -0.6414    0.7672
   -0.7672   -0.6414
>> [U,S,V]=svd(A,0)
U =
   -0.1525   -0.8226
   -0.3499   -0.4214
   -0.5474   -0.0201
   -0.7448    0.3812
S =
   14.2691         0
         0    0.6268
V =
   -0.6414    0.7672
   -0.7672   -0.6414
1.3.8  广义奇异值分解
函数  gsvd
格式  [U,V,X,C,S] = gsvd(A,B)   %返回酉矩阵U和V、一个普通方阵X、非负对角矩阵C和S,满足A = U*C*X',B = V*S*X',C'*C + S'*S = I (I为单位矩阵);A和B的列数必须相同,行数可以不同。
[U,V,X,C,S] = gsvd(A,B,0)   %含义与前面相似
sigma = gsvd (A,B)         %返回广义奇异值sigma
例1-74
>> A=reshape(1:12,3,4)    %产生3行4列矩阵,元素由1,2,…,12构成。
A =
  1     4     7    10
    2     5     8    11
    3     6     9    12
>> B=magic(4)   %产生4阶魔方阵

⌨️ 快捷键说明

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