matlab矩阵⾓标,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
matlab数组赋值>>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?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论