如何在Matlab数组中的特定索引处输入元素而没有循环?

时间:2019-07-02 04:54:37

标签: matlab vectorization

我在某些索引处删除数组x的元素。

x=rand(10,1);
delInd=[8 5];   
delInd=sort(delInd); %delInd must be sorted for this to work
x(delInd)=[];

接下来,我使用x计算另一个数组。

y=x+1;

现在,我想在inf中放置新元素,例如y,以使新元素对应于原始x中已删除元素的位置。我使用以下代码执行此操作:

for ii=delInd'
   y=[y(1:ii-1);inf;y(ii:end)];
end

是否可以对上述行进行矢量化处理,而无需进行for循环或排序?

1 个答案:

答案 0 :(得分:0)

您只需使用要替换的索引,就可以直接用另一个数组中的值替换数组中的值。

例如,您可以只替换以下元素:

originalArr = 1:10;
replaceInd = [3 4 7 10];
replaceArr = [100 101 102 103];

originalArr(replaceInd) = replaceArr;

现在originalArr将包含

1 2 100 101 5 6 102 8 9 103