第六课 矩阵元素的引用

第六课 矩阵元素的引用

一、 矩阵元素的引用方式

通过下标引用矩阵元素

矩阵的引用下标必须为正整数,且要用 ()括起来

例如:A(3,2) 表示 A 矩阵第三行第二列的元素。

例子
>> A=[1,2,3;4,5,6;7,8,9]

A =

     1     2     3
     4     5     6
     7     8     9

>> A(3,2)

ans =

     8

改变元素的值

>> A(3,2)=10

A =

     1     2     3
     4     5     6
     7    10     9
// 扩展矩阵
>> A(4,5)=10

A =

     1     2     3     0     0
     4     5     6     0     0
     7    10     9     0     0
     0     0     0     0    10

通过矩阵序号引用

在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。

矩阵元素的序号就是矩阵元素在内存中的排列顺序。

序号与下标是一一对应的,以m×n矩阵A为例,矩阵元素A(i.j)的序号为(j-1) × (m+i) 。

例子

在上面代码的基础上,输入命令

>> A(1)

ans =

     1

>> A(2)

ans =

     4

>> A(5)

ans =

     2

矩阵元素的序号与下标可以利用 sub2indind2sub 函数实现相互转换。

sub2ind函数

将矩阵中指定元素的行、列下标转换成存储的序号。调用格式为 ‘D=sub2ind(S,I,J)’ 。

S:表示行数和列数,是由行数和列数组成的向量

I:转换矩阵元素的行下标

J:转换矩阵元素的列下标

D:对应下标元素的序号,它的行列数与 I、J 相同

如果 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)

S:行数和列数组成的向量

D:序号

I:对应行数的行下标

J:对应行数的列下标

例子
>> [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:5;6:10;11: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:5;6:10;11:15;16:20]

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=[]

A =

     []
     
 >> A=[1:5;6:10;11:15;16: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函数

reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排列成 m * n 的二维矩阵。

例子
>> A=[1:5;6:10;11:15;16:20]

A =

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

>> B=reshape(A,5,4)

B =

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

特殊矩阵

A(: )

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

例子
>> A=[1:5;6:10;11:15;16:20]

A =

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

>> A(:)

ans =

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

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

A(: )

ans =

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值