0

いくつかの x、y 値に対応する nx2 マトリックスがあり、1x2 行のサブセットをいくつかの値に置き換えたいと考えています。現在、find() を使用してそのサブセットを取得しています。たとえば、次のマトリックスがあるとします。

 k=    [1 2
        3 4
        5 6
        7 8
        9 0]

そして、他の関連する 5x1 配列で find() を使用して、インデックスを取得しました

indices = [1 3 5]

次に、k の行 1、3、および 5 を、たとえば [-2 -6] のように同じ所定の行にすばやく変更したいと思います。すると結果は・・・

 k=     [-2 -6
          3  4
         -2 -6
          7  8
         -2 -6]

個々の行に対して k(1,:) = [-2 -6] を実行できることはわかっていますが、行のリストに対して一般的にこれを行うための構文が見つからないようです。k(indices,:) = [-2 -6] は有効な構文ではありません。もちろん、列 1 と列 2 に対してそれを行う 2 行の解決策がありますが、これを行うコンパクトな方法があると思います。ありがとう。

4

2 に答える 2

1

古いマトリックスに配置するマトリックスのサイズが、置き換えられる要素のサイズと同じであることを確認する必要があります。この場合、size(k(indices,:)) = [3 2]。を使用repmatして適切なサイズの行列を生成すると、割り当てが成功します。

replacement = [-2 -6];

k(indices,:) = repmat(replacement,length(indices),1)

k =

-2    -6
 3     4
-2    -6
 7     8
-2    -6
于 2012-06-07T20:50:12.277 に答える
0

1 つのインデックスを使用して行を繰り返すこともできます。

row = [-2 -6];
k(indices,:) = row(ones(size(indices)),:);
于 2012-06-07T21:16:00.407 に答える