5

別のベクトルで指定された特定のインデックスでベクトルに値を挿入し、それに応じて他の値を置き換えようとしています。

例えば

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]

できればループを回避する簡単な方法はありますか?

4

2 に答える 2

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;
于 2012-07-15T16:17:20.270 に答える
2

一般的な機能は次のとおりです。アイデアは@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

このための組み込み関数について聞いたことがありません。

于 2012-07-15T09:49:36.443 に答える