可能重複:
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