我怎样才能使这段代码更简单

时间:2012-09-01 17:13:00

标签: matlab

我想为以下问题制作一个更简单的代码:我有2个名为AB的矩阵:

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

2 个答案:

答案 0 :(得分:4)

嗯,我喜欢单行,所以这是与Mark's竞争的另一种解决方案::)

Res = (A - B) .* (B ~= 0)

答案 1 :(得分:2)

Hmmph,到目前为止,我完全没有在一行中做到这一点。分为两行:

Res = A - B;
Res(B==0) = 0;