我试图将一个值插入到特定索引处的向量中,在另一个向量中指定,然后相应地替换其他值。
例如
Vector=[1 2 3 4 5] %vector of data
Idx=[2 4] %Indices at which to insert a value
Value to insert is X
NewVector=[1 X 2 X 3 4 5]
有没有一些直接的方法可以做到这一点,最好避免循环?
我试图将一个值插入到特定索引处的向量中,在另一个向量中指定,然后相应地替换其他值。
例如
Vector=[1 2 3 4 5] %vector of data
Idx=[2 4] %Indices at which to insert a value
Value to insert is X
NewVector=[1 X 2 X 3 4 5]
有没有一些直接的方法可以做到这一点,最好避免循环?
Vector=1:5;
Idx=[2 4];
c=false(1,length(Vector)+length(Idx));
c(Idx)=true;
result=nan(size(c));
result(~c)=Vector;
result(c)=42
result =
1 42 2 42 3 4 5
如果您希望在已删除的评论中插入新值,请执行以下操作:
c(Idx+(0:length(Idx)-1))=true;
这是一个通用功能。这个想法和@Mark说的一样:
function arrOut = insertAt(arr,val,index)
assert( index<= numel(arr)+1);
assert( index>=1);
if index == numel(arr)+1
arrOut = [arr val];
else
arrOut = [arr(1:index-1) val arr(index:end)];
end
end
我从未听说过为此的内置函数。