I\'m trying to insert a value to a vector at specific indices, specified in another vector, and then displacing the other values accordingly.
E.g.
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
If you wanted the new values inserted as in your deleted comment, do this:
c(Idx+(0:length(Idx)-1))=true;
Here is a general function. The idea is the same as @Mark said:
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
I have never heard of a built-in function for this.