可能重复:
MATLAB: How To Efficiently Remove NaN Elements from Matrix查找矩阵具有NAN值的行和删除它们
我有代码,不会低于它,但它有点慢(矩阵大)有没有更好的方法来做到这一点?
errorMat=isnan(rates);
errorRows=ind(errorMat);
for i=1:length(errorRows)
rates(:,errorRows(i)) = [];
end
可能重复:
MATLAB: How To Efficiently Remove NaN Elements from Matrix查找矩阵具有NAN值的行和删除它们
我有代码,不会低于它,但它有点慢(矩阵大)有没有更好的方法来做到这一点?
errorMat=isnan(rates);
errorRows=ind(errorMat);
for i=1:length(errorRows)
rates(:,errorRows(i)) = [];
end
rates(any(isnan(rates), 2), :) = [];
或者:
rates = rates(~any(isnan(rates), 2), :);
我认为第二种方法是更快。
试试这个:
[rows, cols] = find(isnan(rates));
rates(unique(rows),:) = []
免责声明:未经检验的我不是用Matlab在本机和八度的抱怨unique
功能。
另一个变化 - 总和与NaN
小号回报NaN
,所以
rates(isnan(sum(rates,2)),:) = [];
似乎是一个tic toc分析是为了在这里:p –
我做了一个测试,它在这里工作。 – Yamaneko