我在Matlab中有一个固定大小的数组。当我想插入一个新元素时,我会执行以下操作:
index-1
---左移。我想在不使用任何循环的情况下这样做。
答案 0 :(得分:8)
我不确定我理解你的问题,但我认为你的意思是:
A = [ A(1:pos) newElem A((pos+1):end) ]
这将在数组newElem
中的位置pos
之后插入变量(或数组)A
。
请告诉我这是否适合您!
[编辑] 好的,看起来你实际上只是想将数组用作移位寄存器。你可以这样做:
A = [ A(2:end) newElem ]
这将从A
的第2个到最后一个元素中取出所有元素,并将newElem
变量(或数组)添加到结尾。
答案 1 :(得分:6)
circshift功能是另一种解决方案:
B = circshift(A,shiftsize)
通过A
元素循环移动数组shiftsize
中的值。shiftsize
是整数标量的向量,其中n
- th元素指定数组n
的第A
维的移位量。如果shiftsize
中的元素为正数,则A
的值向下(或向右)移动。如果为负,则A
的值向上(或向左)移动。如果为0,则不会移动该维度中的值。
示例:
将第一个维度值向下循环移1,将第二个维度值向左移动1个。
A = [ 1 2 3;4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 B = circshift(A,[1 -1]); B = 8 9 7 2 3 1 5 6 4
答案 2 :(得分:1)
简单地说,删除数组中的第一个值并在最后添加新值。
A(1) = []
A = [A newValue]
数字示例
A = [1 2 3 4];
A(1) = [];
A = [A 5];
结果是A具有值[2,3,4,5]