matlab基本知识点2



矩阵的乘方运算与开方运算

在matlab7.0中,可以使用A^p来计算A的p次方,使用sqrtm()来对矩阵开方运算,如果有X*X=A,则有sqrtm(A)=X;

矩阵的开方运算与乘方运算互为逆运算。


矩阵的指数运算用expm函数来实现,expm(X)=V*diag(exp(diag(D)))/V,其中X为已知矩阵,[V,D]=eig(X);对数运算用logm函数实现,L=logm(A),与矩阵的指数运算互为逆运算。


矩阵的逆运算

矩阵的逆运算充分必要条件为其行列式不为0,使用inv函数

>> A=[1 0 0 0;1 2 0 0;2 1 3 0;1 2 1 4]

A =

     1     0     0     0
     1     2     0     0
     2     1     3     0
     1     2     1     4

>> B = inv(A)

B =

    1.0000         0         0         0
   -0.5000    0.5000         0         0
   -0.5000   -0.1667    0.3333         0
    0.1250   -0.2083   -0.0833    0.2500

计算矩阵的行列式函数,det()函数


使用eig或eigs可以进行矩阵的特征值计算。

E = eig(X),命令生成由矩阵X的特征值所组成的列向量

[V,D]=eig(X)命令生成两个矩阵X和D,其中V 是以矩阵X的特征向量作为列向量组成的矩阵,D是由X的特征值作为主对角线元素构成的对角矩阵。


norm函数

norm(X)计算矩阵X的2-范数

norm(X,2)计算矩阵的2-范数

norm(X,1)计算矩阵的1-范数

norm(X,inf)计算矩阵的无穷范数

norm(X,'fro')计算矩阵X的Frobenius范数


normest只能计算矩阵的2-范数,并且为估计值,使用于计算norm(X)比较费时的情况。


矩阵的条件数计算:(衡量矩阵是“病态”,还是“良态”)

cond(X)返回关于矩阵X的2-范数的条件数

cond(X,P)返回关于矩阵X的P-范数的条件数


recond(X)用来计算矩阵X条件数的倒数值

condest(X)用于计算X的的1-范数的条件数的估计值


矩阵X的条件数越大,表明A越“病态”,反之,越“良态”。



矩阵的秩

函数rank();

>> T = rand(6)

T =

    0.8147    0.2785    0.9572    0.7922    0.6787    0.7060
    0.9058    0.5469    0.4854    0.9595    0.7577    0.0318
    0.1270    0.9575    0.8003    0.6557    0.7431    0.2769
    0.9134    0.9649    0.1419    0.0357    0.3922    0.0462
    0.6324    0.1576    0.4218    0.8491    0.6555    0.0971
    0.0975    0.9706    0.9157    0.9340    0.1712    0.8235

>> r = rank(T)

r =

     6
矩阵的迹(矩阵主对角线所有元素的和)

trace()函数求得



三角分解

lu函数实现

[L,U] = lu(X),将矩阵X分解成一个上三角矩阵L和一个下三角矩阵U,使用X=L*U

正交分解

qr函数实现

[Q,R] = qr(A),产生一个与A维数相同的上三角矩阵R和一个正交矩阵Q,使得A = Q*R

特征值分解

eig()函数实现

[V,D] = eig(X)命令生成一个矩阵V和D,其中V是由矩阵X的特征向量作为列向量组成的矩阵,D由矩阵X的特征值作为主对角线元素构成的对角矩阵。



矩阵的变维

使用reshape函数来对矩阵进行变维操作

reshape(X,M,N)将矩阵X的所有元素分配到一个MxN的矩阵中,当矩阵X的元素不是MxN时,将返回一个错误。

reshape(X,M,N,P...)将矩阵X的所有元素分配到MxNxP的多维矩阵上去。

>> A = rand(4,2)

A =

    0.6948    0.4387
    0.3171    0.3816
    0.9502    0.7655
    0.0344    0.7952

>> reshape(A,2,4)

ans =

    0.6948    0.9502    0.4387    0.7655
    0.3171    0.0344    0.3816    0.7952


矩阵的变向包括对矩阵进行旋转,上下翻转,左右翻转,以及对指定的维进行翻转,分别由rot90,flipud,fliplr,和flipdim函数来实现。

例子省略



特殊矩阵生成函数:

zeros(),ones(),diag(V,k)V表示向量,k表示V向量偏离主对角线的个数,k>0往上偏离,k<0往下偏离,k=0就在主对角线。

rand()随机矩阵(生成的矩阵元素在0-1之间)

randn()生成的矩阵服从正态分布N(0,1)

范德蒙矩阵A=vander(v)

>> v=[1 3 5 7 9];
>> A = vander(v)

A =

           1           1           1           1           1
          81          27           9           3           1
         625         125          25           5           1
        2401         343          49           7           1
        6561         729          81           9           1

magic()魔术矩阵,生成的矩阵每一行,每一列以及每条主对角线的元素和都相等。(二阶矩阵除外)

Hilbert矩阵,病态矩阵

hilb()



数组寻址和排序

>> A = randn(1,10)

A =

   -0.8649   -0.0301   -0.1649    0.6277    1.0933    1.1093   -0.8637    0.0774   -1.2141   -1.1135

>> A(4)

ans =

    0.6277

>> A(2:6)

ans =

   -0.0301   -0.1649    0.6277    1.0933    1.1093

>> A([1 3 7 4])

ans =

   -0.8649   -0.1649   -0.8637    0.6277

>> A(4:end)

ans =

    0.6277    1.0933    1.1093   -0.8637    0.0774   -1.2141   -1.1135


数组排序

sort(A)若A为矩阵,默认对A各列进行升序排序

sort(A,dim)

如果dim=1

sort(A,1)等同于sort(A)

如果dim=2

将矩阵A的各行进行升序排序


数组的基本数值运算

数组运算符由矩阵运算符前面增加 "  . "来表示

加减运算

>> X=[1,4,7]

X =

     1     4     7

>> Y = [2,5,8]

Y =

     2     5     8

>> X-Y

ans =

    -1    -1    -1

>> X+Y

ans =

     3     9    15

数组的 乘除运算

>> X=[10 52 96 12 56]

X =

    10    52    96    12    56

>> Y = [2 26 3 4 8]

Y =

     2    26     3     4     8

>> Z = [10 52 96 12 56 42]

Z =

    10    52    96    12    56    42

>> Z1 = X.*Y

Z1 =

          20        1352         288          48         448

>> Z2 = X.*Z
??? Error using ==> times
Matrix dimensions must agree.
 
>> Z3 = X./Y

Z3 =

     5     2    32     3     7

>> Z4 = X.\Y

Z4 =

    0.2000    0.5000    0.0313    0.3333    0.1429

数组的乘方.^

>> X = [3 6 9]

X =

     3     6     9

>> Z = X.^3

Z =

    27   216   729

1个数组为指数,底数为标量的情况

>> X = [4,5,6,7,8]

X =

     4     5     6     7     8


>> Z = 3.^X

Z =

          81         243         729        2187        6561


rem(X,n)为求余函数,X为被除数,n为除数


逻辑运算符:

&与   |或  ~非


稀疏矩阵的生成

speye函数

>> A = eye(10)

A =

     1     0     0     0     0     0     0     0     0     0
     0     1     0     0     0     0     0     0     0     0
     0     0     1     0     0     0     0     0     0     0
     0     0     0     1     0     0     0     0     0     0
     0     0     0     0     1     0     0     0     0     0
     0     0     0     0     0     1     0     0     0     0
     0     0     0     0     0     0     1     0     0     0
     0     0     0     0     0     0     0     1     0     0
     0     0     0     0     0     0     0     0     1     0
     0     0     0     0     0     0     0     0     0     1

>> speye(A)
??? Error using ==> speye
Please use SPEYE(N), SPEYE(M,N) or SPEYE([M,N]).
 
>> speye(size(A))

ans =

   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1
   (5,5)        1
   (6,6)        1
   (7,7)        1
   (8,8)        1
   (9,9)        1
  (10,10)       1

>> speye(2)

ans =

   (1,1)        1
   (2,2)        1

>> speye(7,6)

ans =

   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1
   (5,5)        1
   (6,6)        1


sprand函数用于生成随机稀疏矩阵函数(其元素服从0-1分布)


将稀疏矩阵与满矩阵进行相互转换的函数有sparse,full,和find函数。

sparse函数将满矩阵变为稀疏矩阵

full函数将稀疏矩阵变为满矩阵

find函数查找矩阵的非0函数位置


对稀疏矩阵的操作

nz = nnz(S)返回矩阵S中非零元素的个数

D = nnz(S)/prod(size(S))表示稀疏矩阵S中非零元素的密度


(S)生成一个与稀疏矩阵S结构相同的稀疏矩阵R,但是在矩阵S中的非零元素的位置上用元素1代替

R = spones

>> S = sprandsym(10,0.05)

S =

   (9,3)      -1.4057
  (10,3)      -0.7423
   (3,9)      -1.4057
   (3,10)     -0.7423

 
>> R = spones(S)

R =

   (9,3)        1
  (10,3)        1
   (3,9)        1
   (3,10)       1

spalloc用来为稀疏矩阵分配空间

issparse用来判断矩阵是否为稀疏矩阵


矩阵的乘方运算与开方运算

在matlab7.0中,可以使用A^p来计算A的p次方,使用sqrtm()来对矩阵开方运算,如果有X*X=A,则有sqrtm(A)=X;

矩阵的开方运算与乘方运算互为逆运算。


矩阵的指数运算用expm函数来实现,expm(X)=V*diag(exp(diag(D)))/V,其中X为已知矩阵,[V,D]=eig(X);对数运算用logm函数实现,L=logm(A),与矩阵的指数运算互为逆运算。


矩阵的逆运算

矩阵的逆运算充分必要条件为其行列式不为0,使用inv函数

>> A=[1 0 0 0;1 2 0 0;2 1 3 0;1 2 1 4]

A =

     1     0     0     0
     1     2     0     0
     2     1     3     0
     1     2     1     4

>> B = inv(A)

B =

    1.0000         0         0         0
   -0.5000    0.5000         0         0
   -0.5000   -0.1667    0.3333         0
    0.1250   -0.2083   -0.0833    0.2500

计算矩阵的行列式函数,det()函数


使用eig或eigs可以进行矩阵的特征值计算。

E = eig(X),命令生成由矩阵X的特征值所组成的列向量

[V,D]=eig(X)命令生成两个矩阵X和D,其中V 是以矩阵X的特征向量作为列向量组成的矩阵,D是由X的特征值作为主对角线元素构成的对角矩阵。


norm函数

norm(X)计算矩阵X的2-范数

norm(X,2)计算矩阵的2-范数

norm(X,1)计算矩阵的1-范数

norm(X,inf)计算矩阵的无穷范数

norm(X,'fro')计算矩阵X的Frobenius范数


normest只能计算矩阵的2-范数,并且为估计值,使用于计算norm(X)比较费时的情况。


矩阵的条件数计算:(衡量矩阵是“病态”,还是“良态”)

cond(X)返回关于矩阵X的2-范数的条件数

cond(X,P)返回关于矩阵X的P-范数的条件数


recond(X)用来计算矩阵X条件数的倒数值

condest(X)用于计算X的的1-范数的条件数的估计值


矩阵X的条件数越大,表明A越“病态”,反之,越“良态”。



矩阵的秩

函数rank();

>> T = rand(6)

T =

    0.8147    0.2785    0.9572    0.7922    0.6787    0.7060
    0.9058    0.5469    0.4854    0.9595    0.7577    0.0318
    0.1270    0.9575    0.8003    0.6557    0.7431    0.2769
    0.9134    0.9649    0.1419    0.0357    0.3922    0.0462
    0.6324    0.1576    0.4218    0.8491    0.6555    0.0971
    0.0975    0.9706    0.9157    0.9340    0.1712    0.8235

>> r = rank(T)

r =

     6
矩阵的迹(矩阵主对角线所有元素的和)

trace()函数求得



三角分解

lu函数实现

[L,U] = lu(X),将矩阵X分解成一个上三角矩阵L和一个下三角矩阵U,使用X=L*U

正交分解

qr函数实现

[Q,R] = qr(A),产生一个与A维数相同的上三角矩阵R和一个正交矩阵Q,使得A = Q*R

特征值分解

eig()函数实现

[V,D] = eig(X)命令生成一个矩阵V和D,其中V是由矩阵X的特征向量作为列向量组成的矩阵,D由矩阵X的特征值作为主对角线元素构成的对角矩阵。



矩阵的变维

使用reshape函数来对矩阵进行变维操作

reshape(X,M,N)将矩阵X的所有元素分配到一个MxN的矩阵中,当矩阵X的元素不是MxN时,将返回一个错误。

reshape(X,M,N,P...)将矩阵X的所有元素分配到MxNxP的多维矩阵上去。

>> A = rand(4,2)

A =

    0.6948    0.4387
    0.3171    0.3816
    0.9502    0.7655
    0.0344    0.7952

>> reshape(A,2,4)

ans =

    0.6948    0.9502    0.4387    0.7655
    0.3171    0.0344    0.3816    0.7952


矩阵的变向包括对矩阵进行旋转,上下翻转,左右翻转,以及对指定的维进行翻转,分别由rot90,flipud,fliplr,和flipdim函数来实现。

例子省略



特殊矩阵生成函数:

zeros(),ones(),diag(V,k)V表示向量,k表示V向量偏离主对角线的个数,k>0往上偏离,k<0往下偏离,k=0就在主对角线。

rand()随机矩阵(生成的矩阵元素在0-1之间)

randn()生成的矩阵服从正态分布N(0,1)

范德蒙矩阵A=vander(v)

>> v=[1 3 5 7 9];
>> A = vander(v)

A =

           1           1           1           1           1
          81          27           9           3           1
         625         125          25           5           1
        2401         343          49           7           1
        6561         729          81           9           1

magic()魔术矩阵,生成的矩阵每一行,每一列以及每条主对角线的元素和都相等。(二阶矩阵除外)

Hilbert矩阵,病态矩阵

hilb()



数组寻址和排序

>> A = randn(1,10)

A =

   -0.8649   -0.0301   -0.1649    0.6277    1.0933    1.1093   -0.8637    0.0774   -1.2141   -1.1135

>> A(4)

ans =

    0.6277

>> A(2:6)

ans =

   -0.0301   -0.1649    0.6277    1.0933    1.1093

>> A([1 3 7 4])

ans =

   -0.8649   -0.1649   -0.8637    0.6277

>> A(4:end)

ans =

    0.6277    1.0933    1.1093   -0.8637    0.0774   -1.2141   -1.1135


数组排序

sort(A)若A为矩阵,默认对A各列进行升序排序

sort(A,dim)

如果dim=1

sort(A,1)等同于sort(A)

如果dim=2

将矩阵A的各行进行升序排序


数组的基本数值运算

数组运算符由矩阵运算符前面增加 "  . "来表示

加减运算

>> X=[1,4,7]

X =

     1     4     7

>> Y = [2,5,8]

Y =

     2     5     8

>> X-Y

ans =

    -1    -1    -1

>> X+Y

ans =

     3     9    15

数组的 乘除运算

>> X=[10 52 96 12 56]

X =

    10    52    96    12    56

>> Y = [2 26 3 4 8]

Y =

     2    26     3     4     8

>> Z = [10 52 96 12 56 42]

Z =

    10    52    96    12    56    42

>> Z1 = X.*Y

Z1 =

          20        1352         288          48         448

>> Z2 = X.*Z
??? Error using ==> times
Matrix dimensions must agree.
 
>> Z3 = X./Y

Z3 =

     5     2    32     3     7

>> Z4 = X.\Y

Z4 =

    0.2000    0.5000    0.0313    0.3333    0.1429

数组的乘方.^

>> X = [3 6 9]

X =

     3     6     9

>> Z = X.^3

Z =

    27   216   729

1个数组为指数,底数为标量的情况

>> X = [4,5,6,7,8]

X =

     4     5     6     7     8


>> Z = 3.^X

Z =

          81         243         729        2187        6561


rem(X,n)为求余函数,X为被除数,n为除数


逻辑运算符:

&与   |或  ~非


稀疏矩阵的生成

speye函数

>> A = eye(10)

A =

     1     0     0     0     0     0     0     0     0     0
     0     1     0     0     0     0     0     0     0     0
     0     0     1     0     0     0     0     0     0     0
     0     0     0     1     0     0     0     0     0     0
     0     0     0     0     1     0     0     0     0     0
     0     0     0     0     0     1     0     0     0     0
     0     0     0     0     0     0     1     0     0     0
     0     0     0     0     0     0     0     1     0     0
     0     0     0     0     0     0     0     0     1     0
     0     0     0     0     0     0     0     0     0     1

>> speye(A)
??? Error using ==> speye
Please use SPEYE(N), SPEYE(M,N) or SPEYE([M,N]).
 
>> speye(size(A))

ans =

   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1
   (5,5)        1
   (6,6)        1
   (7,7)        1
   (8,8)        1
   (9,9)        1
  (10,10)       1

>> speye(2)

ans =

   (1,1)        1
   (2,2)        1

>> speye(7,6)

ans =

   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1
   (5,5)        1
   (6,6)        1


sprand函数用于生成随机稀疏矩阵函数(其元素服从0-1分布)


将稀疏矩阵与满矩阵进行相互转换的函数有sparse,full,和find函数。

sparse函数将满矩阵变为稀疏矩阵

full函数将稀疏矩阵变为满矩阵

find函数查找矩阵的非0函数位置


对稀疏矩阵的操作

nz = nnz(S)返回矩阵S中非零元素的个数

D = nnz(S)/prod(size(S))表示稀疏矩阵S中非零元素的密度


(S)生成一个与稀疏矩阵S结构相同的稀疏矩阵R,但是在矩阵S中的非零元素的位置上用元素1代替

R = spones

>> S = sprandsym(10,0.05)

S =

   (9,3)      -1.4057
  (10,3)      -0.7423
   (3,9)      -1.4057
   (3,10)     -0.7423

 
>> R = spones(S)

R =

   (9,3)        1
  (10,3)        1
   (3,9)        1
   (3,10)       1

spalloc用来为稀疏矩阵分配空间

issparse用来判断矩阵是否为稀疏矩阵


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB是一种高级计算软件,广泛应用于科学、工程和金融等领域。以下是MATLAB的一些基本知识点: 1. MATLAB的环境:MATLAB提供了一个交互式的开发环境,可以通过命令窗口输入和执行命令。还有MATLAB编辑器,用于编写和编辑代码。另外,MATLAB还有许多内置函数和工具箱,可以方便地进行数值计算和数据分析。 2. 变量和数据类型:在MATLAB,可以使用变量来存储数据。MATLAB支持各种数据类型,包括数值型、字符型、逻辑型、结构型和单元格型等。可以使用赋值语句将数据存储在变量,并可以进行各种数学和逻辑运算。 3. 向量和矩阵MATLAB内置了向量和矩阵运算的功能。向量是一维数组,而矩阵是二维数组。可以使用向量和矩阵进行数学运算,如加法、减法、乘法和除法等。此外,还可以使用MATLAB提供的函数进行矩阵的转置、求逆、求特征值和特征向量等操作。 4. 控制流程:MATLAB提供了多种控制流程语句,如if语句、for循环和while循环等。通过这些语句,可以根据条件执行不同的代码块,或者多次执行同一代码块,实现复杂的算法和程序逻辑。 5. 绘图与可视化:MATLAB强大的绘图功能使得用户可以将数据可视化。用户可以使用MATLAB内置的函数绘制二维和三维图形,如曲线图、散点图、柱状图和表面图等。可以自定义图形的样式、标题、轴标签等,并可以导出图形为常见的图像格式。 6. 文件IO:MATLAB可以读取和写入文件,包括文本文件、Excel文件和图像文件等。用户可以使用内置的函数来读取和处理文件的数据,也可以将MATLAB的数据写入到文件,方便数据的存储和共享。 以上是MATLAB的一些基本知识点,掌握这些知识可以帮助用户进行基本的计算和数据处理操作。当然,MATLAB还有更多的功能和应用,需要进一步学习和实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值