2

データを行列形式に戻そうとしたときに、MATLAB に不満を感じています。しかし、毎回、単一の列形式でしか答えが返されません。私の質問を説明します:

例えば、

A = [1 -3 2;5 4 7;-8 1 3];

L = logical(mod(A,2))

L =

     1     1     0
     1     0     1
     0     1     1

と呼ばれるマトリックスサンプルの別のセットがあります。これはBC私が見たい出力です

B = [100 300 200;500 400 700;800 100 300];

C = B(L)

C =

     100
     500
     300
     100
     700
     300

単一の列のままにしたくありません。Cこのマトリックス形式で返されるようにするには、どうすればよいでしょうか?

C =

     100     300     0
     500     0       700
     0       100     300

どうもありがとう、みんな!!!

4

2 に答える 2

3

または、空の行列から始めて、目的の要素を設定することもできます。

C = NaN(size(B),'like',B);  % or zeros(size(B),'like',B)
C(L) = B(L);
于 2014-11-05T05:06:46.617 に答える
3

論理インデックスは、論理マトリックスが真であるマトリックスから要素のみを選択します。明らかに、要素の数が変わるため、元の形状を保持できないことを意味します。やりたいことを実行するにはいくつかの方法があります。最も効率的なのはおそらく次のとおりです。

C = B;
C(~L) = 0;

これは に設定Cされ、次にfalseBである行列のすべての要素が0 に設定されます。L

于 2014-11-05T03:39:11.563 に答える