我得到了下面的代码,但它有点慢(矩阵很大)有没有更好的方法来做到这一点?
errorMat=isnan(rates);
errorRows=ind(errorMat);
for i=1:length(errorRows)
rates(:,errorRows(i)) = [];
end
我得到了下面的代码,但它有点慢(矩阵很大)有没有更好的方法来做到这一点?
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,并且 Octave 抱怨该unique
功能。
另一个变体 - sum with NaN
s 返回 a NaN
,所以
rates(isnan(sum(rates,2)),:) = [];