matlab矩阵操作


前言

矩阵是matlab中最基本的数据对象,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)。


总结

本节主要介绍了在matlab中对矩阵的基本操作。

  • 6
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值