2

重複の可能性:
MATLAB:マトリックスからNaN要素を効率的に削除する方法

私は以下でそれを行うコードを手に入れましたが、それは少し遅いです(マトリックスが大きい)それを行うためのより良い方法はありますか?

errorMat=isnan(rates);
errorRows=ind(errorMat);
for i=1:length(errorRows)
   rates(:,errorRows(i)) = [];
end
4

3 に答える 3

8
rates(any(isnan(rates), 2), :) = [];

または:

rates = rates(~any(isnan(rates), 2), :);

2番目のアプローチの方が速いと思います。

于 2012-10-11T19:03:51.420 に答える
1

これを試して:

[rows, cols] = find(isnan(rates)); 
rates(unique(rows),:) = []

免責事項:私はこのマシンでMatlabを使用しておらず、Octaveがunique機能について不平を言っているため、テストされていません。

于 2012-10-11T19:03:46.987 に答える
0

別のバリエーションNaN-sとの合計はaを返すNaNので、

rates(isnan(sum(rates,2)),:) = [];
于 2012-10-11T19:21:40.960 に答える