在MATLAB中避免矩阵之间被零除
我正在使用matlab,我有两个矩阵:在MATLAB中避免矩阵之间被零除,matlab,matrix,division,Matlab,Matrix,Division,我正在使用matlab,我有两个矩阵: G = 1 1 1 1 1 1 1 1 和scond: 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
G =
1 1 1 1
1 1 1 1
和scond:
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”来避免零除法?您可以将NAN转换回零:
x = G ./ m;
x(isnan(x))=0; % thanks to comment by @nkjt
或者,如果矩阵m
中还有要保存的NAN,可以执行以下操作:
x(m==0)=0;
一种选择是预先分配
x
,然后只在m
不为零的部分使用除法
x = zeros(size(m)); % output is same size as m
n = m~=0; % find indexes
x(n)=G(n)./m(n);
注意-您无法以正常方式定位
NaN
s(请在命令行中尝试NaN==NaN
)。您应该改用isnan
(或者您的第二个建议可以正常工作)。