重複の可能性:
MATLAB:マトリックスからNaN要素を効率的に削除する方法
私は以下でそれを行うコードを手に入れましたが、それは少し遅いです(マトリックスが大きい)それを行うためのより良い方法はありますか?
errorMat=isnan(rates);
errorRows=ind(errorMat);
for i=1:length(errorRows)
rates(:,errorRows(i)) = [];
end
重複の可能性:
MATLAB:マトリックスから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), :);
2番目のアプローチの方が速いと思います。
これを試して:
[rows, cols] = find(isnan(rates));
rates(unique(rows),:) = []
免責事項:私はこのマシンでMatlabを使用しておらず、Octaveがunique
機能について不平を言っているため、テストされていません。
別のバリエーションNaN
-sとの合計はaを返すNaN
ので、
rates(isnan(sum(rates,2)),:) = [];