在MAtrix中查找具有NAN值的行并删除它们

时间:2012-10-11 18:50:32

标签: matlab

  

可能重复:
  MATLAB: How To Efficiently Remove NaN Elements from Matrix

我有下面的代码,但它有点慢(矩阵很大)是否有更好的方法呢?

errorMat=isnan(rates);
errorRows=ind(errorMat);
for i=1:length(errorRows)
   rates(:,errorRows(i)) = [];
end

3 个答案:

答案 0 :(得分:8)

rates(any(isnan(rates), 2), :) = [];

或者:

rates = rates(~any(isnan(rates), 2), :);

我认为第二种方法更快。

答案 1 :(得分:1)

试试这个:

[rows, cols] = find(isnan(rates)); 
rates(unique(rows),:) = []

免责声明:未经测试,因为我在这台机器上没有使用Matlab,Octave正在抱怨unique功能。

答案 2 :(得分:0)

另一个变体 - 与NaN的总和返回NaN,所以

rates(isnan(sum(rates,2)),:) = [];