我在Matlab中有一个固定大小的数组.当我想插入一个新元素时,我会执行以下操作:
index-1
---左移.我想这样做而不使用任何循环.
我不确定我理解你的问题,但我认为你的意思是:
A = [ A(1:pos) newElem A((pos+1):end) ]
Run Code Online (Sandbox Code Playgroud)
这将在数组中的newElem
位置之后插入变量(或数组).pos
A
如果这对您有用,请告诉我!
[编辑]好吧,看起来你实际上只是想将数组用作移位寄存器.你可以这样做:
A = [ A(2:end) newElem ]
Run Code Online (Sandbox Code Playgroud)
这将从第2个到最后的所有元素A
,并将您的newElem
变量(或数组)添加到结尾.
该circshift功能是另一种解决方案:
B = circshift(A,shiftsize)
A
按shiftsize
元素循环移动数组中的值.shiftsize
是整数标量的向量,其中n
-th元素指定n
数组的-th维度的移位量A
.如果元素shiftsize
为正,则值A
向下(或向右)移动.如果是负数,则值A
向上(或向左)移动.如果为0,则不移动该维度中的值.
例:
将第一个维度值向下循环移1,将第二个维度值向左移动1.
Run Code Online (Sandbox Code Playgroud)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