2017-01-13 155 views
0

好吧,我用下面的代碼洗牌MxN矩陣稱爲data的行:Matlab的 - 獲取子矩陣

newData = data(randperm(size(data, 1)), :); 

到目前爲止好,我現在需要的是保持第一K行。當然,我可以這樣做:

newData = data(randperm(size(data, 1)), :); 
newData = newData(1:K, :); 

但我想在一行中這樣做(只是出於好奇)。我試過的是這樣的:

newData = data(randperm(size(data, 1)), :)(1:K, :); 

那麼,它顯然失敗了。我知道這不重要,可能是一個愚蠢的問題,但有誰知道一種方法來做到這一點?

回答

1

你是隨機排列矩陣,然後取頂部K行。相反,只需選擇K隨機行:

newData = data(randperm(size(data, 1), K), :); 

的第二個參數randperm說從1:size(data, 1)選擇K值。

+0

比我想象的容易。謝謝 !! – DimChtz

+0

這樣做也有優點,沒有中間變量,所以你節省內存。 – craigim