在matlab中如何把NaN和Inf这种不是实值的数赋值为0

比如需要赋值的数组如下所示:

NaN Inf Inf NaN NaN
NaN Inf Inf NaN NaN
NaN Inf Inf NaN NaN
NaN 0.1 NaN NaN NaN
NaN Inf Inf NaN NaN
NaN NaN NaN NaN 0.97
NaN NaN NaN NaN NaN
NaN Inf Inf NaN NaN
我知道的方法是

x(find(isnan(x)==1)) = 0;
x(x==inf)=0;
但好像如果x这个矩阵很大的话,并不是所有的Inf会变成0,这是怎么回事

第1个回答  2014-08-08
你可以试试x(x>=inf&x<=inf)=0;matlab一个重要的bug就是“==”,尤其是实际数据处理中,尽量不要使用。本回答被提问者采纳
第2个回答  2014-08-08
这样即可!
x(isinf(x))=0;

x(isnan(x))=0;
相似回答