Matlab教程1_矩阵(数组) _ 元素的标识与寻访

数组元素的标识与寻访

(作者:lcc) 

数组元素的标识

n  “全下标(index)”标识

经典数学教科书采用“全下标”标识法:每一维对应一个下标。

Ø  如对于二维数组,用“行下标和列下标”标识数组的元素,a(2,3)就表示二维数组a的“第2行第3列”的元素。

Ø  对于一维数组,用一个下标即可,b(2)表示一维数组b的第2个元素,无论b是行向量还是列向量。

n  “单下标”(linear index)标识

所谓“单下标”标识就是用一个下标来表明元素在数组的位置。

Ø  对于二维数组, “单下标”编号:设想把二维数组的所有列,按先后顺序首尾相接排成“一维长列”,然后自上往下对元素位置执行编号。

n  两种“下标”标识的变换:sub2ind、ind2sub

【例4-1】单下标的使用

>>a=zeros(2, 5);

>>a(:)=-4:5

a =

    -4    -2     0     2     4

    -3    -1     1     3     5

%  注意数组的排列顺序。

 

【例4-5】 sub2ind函数-双下标转换为单下标

>>A = [17 24 1 8; 2 22 7 14; 4 6 13 20];

>>A(:,:,2) = A - 10

>>A(2,1,2)

>>sub2ind(size(A),2,1,2)

>>A(14)

 

【例4-6】 ind2sub函数-双下标转换为单下标

>>b = zeros(3);

>>b(:) = 1:9

>>IND = [3 4 5 6]

>>[I,J] = ind2sub(size(b),IND)

 

 

size、length函数

Ø    size函数返回变量的大小,即变量数组的行列数

Ø    length函数返回变量数组的最大维数

 

>>a=ones(4,6)*6

>>m=size(a)

>>len=length(a)

 

 

元素与子数组的寻访与赋值

【例4-3】一维数组元素与子数组的寻访与赋值

>>a=linspace(1,10,5)

a =

    1.0000    3.2500    5.5000    7.7500   10.0000

>>a(3)       %寻访a的第3个元素

ans =

    5.5000

>>a([1 2 5])   %寻访a的第1、2、5个元素组成的子数组

ans =

    1.0000    3.2500   10.0000

>>a(1:3)   %寻访前3个元素组成的子数组

ans =

    1.0000    3.2500    5.5000

>>a(3:-1:1)  %由前3个元素倒序构成的子数组

ans =

    5.5000    3.2500    1.0000

>>a(3:end)

ans =

    5.5000    7.7500   10.0000

>>a(3:end-1)

ans =

    5.5000    7.7500

>>a([1 2 3 5 5 3 2 1]) 

ans =

    1.0000    3.2500    5.5000   10.0000   10.0000    5.5000    3.2500    1.0000

%  数组元素可以被任意重复访问,构成长度大于原数组的新数组。

 

>>a(6)

??? Index exceeds matrix dimensions.

M 下标值超出了数组的维数,导致错误

 

>>a(2.1)

??? Subscript indices must either be real positive integers or logicals.

M 下标值只能取正整数或逻辑值

 

>>a(3)=0           %修改数组a的第3元素值为0

a =

    1.0000    3.2500    0    7.7500   10.0000

>>a([2 5])=[1 1]

a =

    1.0000    1.0000    0    7.7500   1.0000

Ø  可以修改指定数组元素的值

Ø  一次可以修改多个数组元素的值

Ø  要修改的数组元素的个数应与送入数组的元素个数相同

 

【例4-3】二维数组元素与子数组的寻访与赋值

>>a_2=zeros(2, 4) %创建2x4的全0数组

a_2 =

     0     0     0     0

     0     0     0     0

>>a_2(:)=1:8

a_2 =

     1     3     5     7

     2     4     6     8           

>>a_2([2 5 8])    %单下标方式寻访多个元素

ans =

     2     5     8

>> a_2([2 5 8]) =[10 20 30]

a_2 =

     1     3    20     7

    10     4     6    30

>>a_2(:,[2 3])=ones(2)  %双下标方式寻访并修改

a_2 =

     1      1     1    7

    10     1     1    30

%  二维数组可以“单下标”方式或“全下标”方式访问、赋值;

%  “单下标”方式赋值时,等号两边涉及的元素个数必须相等;

%  “全下标”方式赋值时,等号右边数组的大小必须等于原数组中涉及元素构成的子数组的大小。

 

>>a_2(:,end)

ans =

     7

    30

>>a_2(:,end-1)

ans =

     1

     1

>>a_2(:, end:-1:3)

ans =

     7     1

    30     1

>>a_2(end,:)

ans =

    10     1     1    30

>>a_2(end,[2:4])

ans =

     1     1    30

>>a_2 ([4 6])=6:7

a_2 =

     1     1     1     7

    10     6     7    30

>>a_2(end,[2:end-1])

 What is the result?

 

 

转载于:https://my.oschina.net/u/1180521/blog/144043

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值