在matlab向量或矩阵中的特定点插入值

在matlab向量或矩阵中的特定点插入值,matlab,Matlab,我试图在另一个向量中指定的特定索引处向向量插入一个值,然后相应地替换其他值 例如 是否有一些简单的方法可以做到这一点,最好是避免循环 这里是一个通用函数。这个想法和@Mark说的一样: function arrOut = insertAt(arr,val,index) assert( index<= numel(arr)+1); assert( index>=1); if index == numel(arr)+1 arr

我试图在另一个向量中指定的特定索引处向向量插入一个值,然后相应地替换其他值

例如


是否有一些简单的方法可以做到这一点,最好是避免循环

这里是一个通用函数。这个想法和@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
函数arrOut=insertAt(arr、val、index)
断言(索引=1);
如果索引==numel(arr)+1
arrOut=[arr val];
其他的
arrOut=[arr(1:index-1)val-arr(index:end)];
结束
结束
我从来没有听说过这种内置函数

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;

在这个问题的版本中,新值位于
[2 5]
即使您指定了
[2 4]
实际上您是对的,位置是相对于最终向量的,而不是我认为的初始向量。
 c(Idx+(0:length(Idx)-1))=true;