可能重复:
MATLAB: How To Efficiently Remove NaN Elements from Matrix
我有下面的代码,但它有点慢(矩阵很大)是否有更好的方法呢?
errorMat=isnan(rates);
errorRows=ind(errorMat);
for i=1:length(errorRows)
rates(:,errorRows(i)) = [];
end
答案 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)),:) = [];