MATLAB 矩阵

1.矩阵的创建

直接创建
创建特殊矩阵

函数 功能 函数 功能
compan 创建伴随矩阵 magic 创建魔方矩阵
diag 创建对角矩阵 ones 创建全1矩阵
eye 创建单位矩阵 rand 创建均匀分布随机矩阵
gallery 创建测试矩阵 randn 创建正态分布随机矩阵
hadamars 创建Hadamard矩阵 rosser 创建经典对称特征值测试矩阵
hilb 创建Hilbert矩阵 wilkinson 创建Wilkinson特征值测试矩阵
invhilb 创建Hilbert矩阵转置 zeros 创建全0矩阵

【例】创建二位特殊数组

>> clear all;
>> magic(3)                       %创建3*3维魔方矩阵

ans =

     8     1     6
     3     5     7
     4     9     2

>> rand(2,4)                      %创建2*4维均匀分布数组

ans =

    0.8147    0.1270    0.6324    0.2785
    0.9058    0.9134    0.0975    0.5469

>> randn(2,4)                    %创建2*4维高斯正态随机分布矩阵

ans =

    3.5784   -1.3499    0.7254    0.7147
    2.7694    3.0349   -0.0631   -0.2050

>> ones(3,2)                     %创建3*2维全1矩阵

ans =

     1     1
     1     1
     1     1

>> zeros(2,2)                    %创建2*2维全0矩阵

ans =

     0     0
     0     0

>> eye(3)                       %创建3*3阶单位矩阵

ans =

     1     0     0
     0     1     0
     0     0     1

>> hilb(4)                     %创建4*4阶Hilbert矩阵

ans =

    1.0000    0.5000    0.3333    0.2500
    0.5000    0.3333    0.2500    0.2000
    0.3333    0.2500    0.2000    0.1667
    0.2500    0.2000    0.1667    0.1429

>> hadamard(4)                %创建4*4阶Hadamard矩阵

ans =

     1     1     1     1
     1    -1     1    -1
     1     1    -1    -1
     1    -1    -1     1

2.矩阵的运算

1)矩阵的基本运算
操作符号 说明 操作符号 说明
+ 矩阵加法 / 矩阵左除
- 矩阵减法 . 矩阵的点乘运算
* 矩阵乘法 logm 矩阵的对数运算
^ 矩阵的幂 expm 矩阵的指数运算
\ 矩阵右除 sqrtm 矩阵的开方运算
2)矩阵的形变运算

变形函数

函数名 说明 函数名 说明
rot90 矩阵逆时针旋转90° flipdim 矩阵的某维元素翻转
flipud 矩阵上下翻转 shiftdim 矩阵的元素移位
fliplr 矩阵左右翻转 reshape 矩阵的合并

【例】改变矩阵的形状

>> A = [1 2 3; 4 5 6; 7 8 9;10 11 12]

A =

     1     2     3
     4     5     6
     7     8     9
    10    11    12

>> A3 = reshape(A,3,4)                    %矩阵的重排

A3 =

     1    10     8     6
     4     2    11     9
     7     5     3    12

>> A1 = reshape(A,2,6)                    %矩阵的重排

A1 =

     1     7     2     8     3     9
     4    10     5    11     6    12

>> A = magic(3)

A =

     8     1     6
     3     5     7
     4     9     2

>> flipud(A)                              %矩阵A的上下翻转

ans =

     4     9     2
     3     5     7
     8     1     6

>> fliplr(A)                              %矩阵A的左右翻转

ans =

     6     1     8
     7     5     3
     2     9     4

>> rot90(A)                              %矩阵A逆时针翻转90°

ans =

     6     7     2
     1     5     9
     8     3     4

>> rot90(A,3)                           %矩阵A逆时针翻转270°

ans =

     4     3     8
     9     5     1
     2     7     6

>> flipdim(A,2)                        %矩阵A每一行进行逆序排列

ans =

     6     1     8
     7     5     3
     2     9     4

3)矩阵的特殊计算

1.行列式的转置: 运算符“ ’ ”
2.方阵的行列式:det(A)函数
3.矩阵的逆和伪逆:inv(A)函数和pinv(A)函数
4.求矩阵和向量的范数:norm函数
5.矩阵的秩:rank函数
6.矩阵的迹:即矩阵对角线元素的和以及特征值的和,函数trace(A)

4)利用空矩阵删除矩阵元素

MATLAB中,定义[]为空矩阵。X= []给变量X赋空矩阵。
因此将某些元素从矩阵中删掉,采用将其置为空矩阵的方法就是一种有效方法。


>> A = [1 2 3 4 5 6;7 8 9 10 11 12;13 14 15 16 17 18]

A =

     1     2     3     4     5     6
     7     8     9    10    11    12
    13    14    15    16    17    18

>> A(:,[2,4]) = []                         % A(:,[2,4]) = []等同于A(:,2:2:4) = []

A =

     1     3     5     6
     7     9    11    12
    13    15    17    18

3.矩阵的分解

矩阵的分解运算是指将给定的矩阵分解成特殊矩阵乘积的过程。

1)cholesky分解

R = chol(A):返回cholesky分解(柯利分解)因子R
R = chol(A,‘lower’):把矩阵A分解为一个下三角矩阵

2)正交分解

矩阵的正交分解即将矩阵A分解成一个正交矩阵与一个上三角矩阵的乘积。
[Q,R] = qr(A):返回正交矩阵Q和上三角矩阵R,满足A = QR。

3)LU分解

又称矩阵的三角分解,是将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A= LU。
[L,U] = lu(A):L为单位下三角矩阵或其变换形式,U为上三角矩阵
[L,U,P] = lu(A):L为单位下三角矩阵,U为上三角矩阵,P为置换矩阵,满足LU = PA。

4)特征值分解

d = eig(A):求矩阵A的全部特征值,构成向量d。
d = eig(A,B):求矩阵A与矩阵B的特征值,且A、B为方阵。
[V,D] = eig(A):求矩阵A全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。
[V,D] = eig(A,‘nobalance’):直接求A的特征值与特征向量。
[V,D] = eig(A,B):求方阵A、B的特征值,构成对角阵D,并求特征向量构成V的列向量,并且A * V = B * V * D。

>> X = pascal(4)               %杨辉三角

X =

     1     1     1     1
     1     2     3     4
     1     3     6    10
     1     4    10    20

>> [V,D] = eig(X)

V =

    0.3087   -0.7873    0.5304    0.0602
   -0.7231    0.1632    0.6403    0.2012
    0.5946    0.5321    0.3918    0.4581
   -0.1684   -0.2654   -0.3939    0.8638


D =

    0.0380         0         0         0
         0    0.4538         0         0
         0         0    2.2034         0
         0         0         0   26.3047

你可能感兴趣的:(matlab)