0

次の問題に対して、より簡単なコードを作成したいと思います。 と という 2 つの行列がAありBます。

A=
   [ 1     7    12    24    36    48    51    63    68    73    77    82;
     2     7    12    24    36    48    60    66    70    74    79    83]
B=
   [ 0     2     1     1     1     1     1     1     1     1     0     1;
     1     1     1     1     1     1     1     2     0     0     1     0]

次を適用して、マトリックスを取得しますRes

Res = zeros(2,12);
     for x = 1:2;
        for t = 1:12;
            if B(x,t)~=0
               Res(x,t) = A(x,t) - B(x,t);
            else
               Res(x,t) = B(x,t);
            end
        end
    end


Res=
   [ 0     5    11    23    35    47    50    62    67    72    0    81;
     1     6    11    23    35    47    59    64    0     0    78    0]

コードを単純化して取得するにはどうすればよいResですか?

4

2 に答える 2

4

まあ、私はワンライナーが好きなので、ここにマークと競争するための別の解決策があります::)

Res = (A - B) .* (B ~= 0)
于 2012-09-01T17:29:20.747 に答える
2

うーん、これまでのところ、これを 1 行で完全に実行できませんでした。2行で:

Res = A - B;
Res(B==0) = 0;
于 2012-09-01T17:22:25.633 に答える