详解矩阵元素的引用

本文详细介绍了MATLAB中矩阵元素的引用方式,包括通过下标和序号引用,使用sub2ind和ind2sub函数进行转换,以及如何利用冒号表达式获取子矩阵。此外,还讲解了如何利用空矩阵删除元素,改变矩阵形状的方法,以及矩阵元素的堆叠技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.矩阵元素的引用方式:
(1)通过下标来引用矩阵的元素
A(3,2)表示矩阵第3行第2列的元素。

>> A(3,2)=200
>> 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

(2)通过序号来引用
1⃣️在matlab中,矩阵元素按列来存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。
2⃣️矩阵元素的序号就是矩阵元素在内存中的排列顺序。

>> A=[1,2,3;4,5,6]

A =

     1     2     3
     4     5     6

>> A(3)

ans =

     2

3⃣️序号与下标是一一对应的,以m*n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。
4⃣️矩阵元素的序号与下标可以利用sub2indind2sub函数实现相互转换。
5⃣️sub2ind函数:将矩阵中指定元素的行、列下标转换成存储的序号。
调用格式:D=sub2ind(S,I,J)
S:行数和列数组成的向量
I:转换矩阵元素的行下标
J:转换矩阵元素的列下标
D:序号

>> 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

6⃣️ind2sub函数:将把矩阵元素的序号转换成对应的下标。
调用格式:[I,J]=ind2sub(S,D)
S:行数和列数组成的向量
D:序号
I:行下标
J:列下标

>> [I,J]=ind2sub([3,3],[1,3,5])

I =

     1     3     2


J =

     1     1     2

7⃣️利用冒号表达式获得子矩阵
子矩阵是指由矩阵中的一部分元素构成的矩阵。

表示第i行的全部元素:

A(i,:)

表示第j列的全部元素:

A(:,j)

第i~i+m行内且在第k~k+m列中的所以元素:

A(i:i+m,k:k+m)

第i~i+m行的全部元素:

A(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

8⃣️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

2.利用空矩阵删除矩阵的元素
空矩阵是指没有任何元素的矩阵。

>> x=[]

x =

     []

>> A=[1,2,3,0,0;7,0,9,2,6;1,4,-1,1,8]

A =

     1     2     3     0     0
     7     0     9     2     6
     1     4    -1     1     8

>> A(:,[2,4])=[]

A =

     1     3     0
     7     9     6
     1    -1     8

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

>> x=[23,45,65,34,65,34,98,45,78,65,43,76];
>> y=reshape(x,3,4)

y =

    23    34    98    65
    45    65    45    43
    65    34    78    76

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

>> A=[-45,65,71;27,35,91]

A =

   -45    65    71
    27    35    91

>> B=A(:)

B =

   -45
    27
    65
    35
    71
    91
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值