0

私は118800x6のマトリックスを持っています。最初の列には 1 から 99 までの値が含まれます (値ごとに 1200 行あります)。ここで、99 個の値ごとに 900 個のランダムな行 (前の列のすべて。行は元のマトリックスから抽出されます) を含む新しいマトリックスを作成する必要があります。for ループを試してみましたが、99 行のコードを書かなければならないということです...もっと速い方法はありますか? 前もって感謝します。

4

1 に答える 1

0

あなたの行列が呼ばれると仮定しますM

for num = 1:99
    %Extract only rows that have the correct number in column one
    subsample = M(M(1, :) == num, :);
    %Randomly change the order of the rows of this subsample
    shuffledsubsample = subsample(randperm(1200), :);
    %Only keep the first 900 rows
    final(:,:,num) = shuffledsubsample(1:900, :);
end
于 2013-02-20T06:20:48.170 に答える