1

行列のi個のランダムな行を選択する必要がありW_tot_miglます。今、私は次のようにしています:

[m, n] = size(W_tot_migl); % m data points, n dimensions
randomPoints = [];
for i=1:14250
     index = random('unid', m); % Pick the index at random.
     randomPoints(i,:) = W_tot_migl(index,:); % Add random point.
     W_tot_migl(index,:) = []; % Delete selected row.
     m = m-1;
end

おそらくループを回避するより速い方法はありますか?

4

1 に答える 1

1

これは、より多くの matlab の方法です。

nr = 5; %How many do you want to pick

n = size(W_tot_migl,1); 
idx = randperm(n,nr);

randomPoints = W_tot_migl(idx,:);
W_tot_migl(idx,:) = [];

一度にすべてを選択するため、重複を心配する必要はありません。それがオリジナルからそれらを削除する唯一の理由である場合、最後の行は現在廃止されています。

于 2013-10-08T12:46:37.243 に答える