Matlab矩阵操作实战指南

一、矩阵的建立

  • 直接输入法:
    将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或空格分隔,不同行的元素之间用分号分隔。
A=[1,2,3;4,5,6;7,8,9]

A =

 1     2     3
 4     5     6
 7     8     9
  • 套娃式建立:利用已建立好的矩阵建立更大的矩阵:一个大矩阵可以由已经建立好的小矩阵拼接而成。类似于分块
A=[1,2,3;4,5,6;7,8,9]; B=[-1,-2,-3;-4,-5,-6;-7,-8,-9]; C=[A,B;B,A]

C =

 1     2     3    -1    -2    -3
 4     5     6    -4    -5    -6
 7     8     9    -7    -8    -9
-1    -2    -3     1     2     3
-4    -5    -6     4     5     6
-7    -8    -9     7     8     9
  • 利用实部矩阵和虚部矩阵来构成复数矩阵。
B=[1,2,3;4,5,6]; C=[6,7,8;9,10,11]; A=B+i*C

A =

1.0000 + 6.0000i 2.0000 + 7.0000i 3.0000 + 8.0000i
4.0000 + 9.0000i 5.0000 +10.0000i 6.0000 +11.0000i


二、向量的产生

冒号表达式

  • 初始值:步长:终止值
t=0:1:5

t =

 0     1     2     3     4     5
  • linspace函数
    linspace(第一个元素,最后一个元素,元素总数) 当n省略时,自动产生100个元素
x=linspace(0,pi,6)

x =

     0    0.6283    1.2566    1.8850    2.5133    3.1416

结构矩阵和单元矩阵

结构矩阵

结构矩阵元素.成员名=表达式

a(1).x1=10;a(1).x2=‘liu’;a(1).x3=[11,21;34,78]; a(2).x1=12;a(2).x2=‘wang’;a(2).x3=[34,191;27,578]; a(3).x1=14;a(3).x2=‘cai’;a(3).x3=[13,890;67,231];

单元矩阵

建立单元矩阵也是直接输入,只是单位矩阵元素用大括号括起来。

b = {0,‘liu’,[11,21;34,78];12,‘wang’,[34,191;27,578];14,‘cai’,[13,890;67,231]}

b =

3×3 cell 数组

[ 0]    'liu'     [2×2 double]
[12]    'wang'    [2×2 double]
[14]    'cai'     [2×2 double]

三、矩阵的操作

矩阵元素的引用

  • 通过下标来引用
    A(3,2)表示A矩阵第三行第二列的元素。
A = [1,2,3;4,5,6]; A(4,5)=10

A =

 1     2     3     0     0
 4     5     6     0     0
 0     0     0     0     0
 0     0     0     0    10
  • 通过序号来引用
    在matlab中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存第二列元素,一直到最后一列元素。
    矩阵元素的序号就是矩阵元素在内存中的排列顺序。
A = [1,2,3;4,5,6]

A =

 1     2     3
 4     5     6
A(3)

ans =

 2

序号与下标是一一对应的,以m×n矩阵A为例,矩阵元素A(i,j)的序号(j-1)×m+i。
矩阵元素的序号与下标可以利用sub2ind和ind2sub函数相互转换。

  • sub2ind函数:将矩阵中指定元素的行、列下标转换成存储的序号。调用格式为:
    D = sub2ind(S,I,J)
    D — 序号
    S — 行数和列数组成的向量
    I — 转换矩阵元素的行下标
    J — 转换矩阵元素的列下标
A=[1:3;4:6]

A =

 1     2     3
 4     5     6
D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])

D =

 1     2
 6     4

ind2sub函数:将把矩阵元素的序号转换对应的下标,其调用格式为:
[I,J]=ind2sub(S,D)

D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])

D =

 1     2
 6     4
[I,J]=ind2sub([3,3],[1,3,5])

I =

 1     3     2

J =

 1     1     2

利用冒号表达式获得一部分子矩阵

A(i,:)第i行的全部元素
A(:,j)第j列的全部元素
A(i:i+m,k:k+m)第i-i+m行内且在第k-k+m列中的所有元素
A(i:i+m,:)第i-i+m行的全部元素

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

A =

 1     2     3     4     5
 6     7     8     9    10
11    12    13    14    15
A(1:2,:)

ans =

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

ans =

 6     8    10
11    13    15

end运算符:表示某一维的末尾元素下标。

A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20]; A(end,:)

ans =

16    17    18    19    20
A([1,4],3:end)

ans =

 3     4     5
18    19    20

删除矩阵

-用空矩阵删除矩阵的元素

A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20]; A(:,[2,4])=[]

A =

 1     3     5
 6     8    10
11    13    15
16    18    20

改变矩阵的形状

reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。
【注】reshape函数只改变原矩阵的行数和列数,但并不改变原矩阵元素个数及存储顺序。

A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20]; y=reshape(A,5,4)

y =

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

A(:) 将矩阵A的每一列元素堆叠起来,成为一个列向量。

A=[1,2,3,4,5;6,7,8,9,10]

A =

 1     2     3     4     5
 6     7     8     9    10
B=A(:)

B =

 1
 6
 2
 7
 3
 8
 4
 9
 5
10

A(:)等价于reshape(A,10,1)。

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空