2016-04-30 4 views
0

この特定の問題を解決するポストが見つかりませんでした。ここでの設定である:フィナーレインデックスに基づいて行列に複数の列と行を挿入します。

A_iは、サイズNのX mのイニシャル行列であり、Iは、得られるマトリックスA_fこれらの行にNaN値と以前ベクターbに記憶された列インデックスを有するようNaN値を追加したいです。

単純な目的のために、小さなサイズの1Dベクトルに問題を単純化してみましょう。例えば:

A_i = [3 4 12 20 3]; 
b = [1 3 6 7 10]; 

結果の行列は希望します:私は最もクリーンな解決策だけではなく、反復の回避策を探しています

A_f = [NaN 3 NaN 4 12 NaN NaN 20 3 NaN]; 

このような

>> A_f(b) 
ans = 
    NaN NaN NaN NaN NaN 

こと...

答えて

0

私の最高の解決策は次のとおりです。

>> A_f = zeros(1,numel(A_i)+numel(b)); 
>> A_f(b) = NaN; 
>> A_f(~isnan(A_f)) = A_i 

A_f = 

    NaN 3 NaN  4 12 NaN NaN 20  3 NaN 

誰がよいでしょうか? 2D Aマトリックス

>> A_i = [3 4 12 ; 20 3 6]; 
>> b1 = [2]; 
>> b2 = [1 4]; 
>> 
>> A_f = zeros(size(A_i)+[numel(b1) numel(b2)]); 
>> A_f(b1,:) = NaN; 
>> A_f(:,b2) = NaN; 
>> A_f(~isnan(A_f)) = A_i 

A_f = 

    NaN  3  4 NaN 12 
    NaN NaN NaN NaN NaN 
    NaN 20  3 NaN  6 
について

(以下線は、... Aiに直接新しいAfマトリックスが、使用を避けます)

関連する問題