zep*_*hyr 2 arrays matlab vectorization indices
我有一个数组,我想在一个已知的索引集合中替换其前面的值.举个例子,我的数组可能是
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
Run Code Online (Sandbox Code Playgroud)
并且要被先前值替换的值的索引可能是
y = [2, 3, 8];
Run Code Online (Sandbox Code Playgroud)
我希望这个替换从左到右发生,或者从头到尾发生.也就是说,索引2处的值应该被索引1处的值替换,之后索引3处的值将被索引2处的值替换.使用上面的数组的结果应该是
[1, 1, 1, 4, 5, 6, 7, 7, 9, 0]
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用明显的方法在Matlab中实现这一点,我的结果是
>> x(y) = x(y-1)
x =
1 1 2 4 5 6 7 7 9 0
Run Code Online (Sandbox Code Playgroud)
希望您可以看到此操作从右到左执行,索引3处的值替换为索引2处的值,然后将2替换为1.
我的问题是:有没有办法以一种简单的方式实现我想要的结果,没有蛮力循环阵列或做一些耗时的事情,比如反转阵列?
嗯,实际上这是一个循环,但顺序是连续索引元素的数量
while ~isequal(x(y),x(y-1))
x(y)=x(y-1)
end
Run Code Online (Sandbox Code Playgroud)