我試圖在特定索引處插入一個值到另一個矢量中指定的矢量,然後相應地替換其他值。在matlab矢量或矩陣的特定點處插入值
E.g.
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]
有一些簡單的方法來做到這一點,最好避免循環?
我試圖在特定索引處插入一個值到另一個矢量中指定的矢量,然後相應地替換其他值。在matlab矢量或矩陣的特定點處插入值
E.g.
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;
非常感謝您的幫助! – CHP 2012-07-15 16:28:48
這是一個通用功能。這個想法是相同的@馬克說:
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
我從來沒有聽說過這個內置函數。
在這個版本的問題,新的值在'[2〜5]'即使你指定的'[2 4]' – tmpearce 2012-07-15 16:18:10
其實你是對的,位置是相對於最終矢量,而不是我想象的初始矢量。 – CHP 2012-07-15 16:23:53