避免在MATLAB中的矩阵之间除零

时间:2014-11-25 09:03:03

标签: matlab matrix division

我使用matlab,我有两个矩阵:

G =

 1     1     1     1
 1     1     1     1

和第二:

m =

 4     4     4     4
 0     0     0     0

我想要这个结果:

x =

 1/4     1/4     1/4     1/4
  0       0       0       0

到目前为止我做的是:

x = G ./ m

但它返回:

x =

 1/4     1/4     1/4     1/4
 NaN     NaN     NaN     NaN

如何通过设置默认值" 0"来避免将div除零。如果有除零值?

2 个答案:

答案 0 :(得分:5)

您可以将NaNs转换回零:

x = G ./ m;
x(isnan(x))=0;      % thanks to comment by @nkjt

或者,如果您还要保存矩阵m中的NaN,则可以执行以下操作:

x(m==0)=0;

答案 1 :(得分:2)

一种选择是预先分配x,然后仅对m不为零的部分使用除法。

x = zeros(size(m)); % output is same size as m
n = m~=0;  % find indexes
x(n)=G(n)./m(n);