2012-07-15 67 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 

我从来没有听说过这个内置函数。