Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB中避免矩阵之间被零除_Matlab_Matrix_Division - Fatal编程技术网

在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

我正在使用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     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
(或者您的第二个建议可以正常工作)。