2012-07-15 96 views
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] 

有一些簡單的方法來做到這一點,最好避免循環?

+0

在這個版本的問題,新的值在'[2〜5]'即使你指定的'[2 4]' – tmpearce 2012-07-15 16:18:10

+0

其實你是對的,位置是相對於最終矢量,而不是我想象的初始矢量。 – CHP 2012-07-15 16:23:53

回答

4
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; 
+0

非常感謝您的幫助! – CHP 2012-07-15 16:28:48

1

這是一個通用功能。這個想法是相同的@馬克說:

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 

我從來沒有聽說過這個內置函數。