2015-07-10 105 views
0

我想使用randsample來從矩陣中採樣值,但我希望採樣值在矩陣中被替換爲零。我該怎麼做/是否有這個功能?MATLAB - 採樣隨機值

+0

用'0'代替數字後,是否要允許採樣器再次選擇'0'?請提供一些示例輸入和輸出數據 – Dan

+0

我已經知道了,Matt的答案有用,謝謝。 –

回答

2

我想你不想使用randsample,因爲你有一個給定的矩陣(這裏是M)。您可以使用datasample來隨機抽樣現有數據。然後,您可以使用datasample(此處爲ind)的第二個輸出來尋址原始矩陣M中的條目並輕鬆覆蓋它們。

在下面的示例中操作第二個維度並選擇列。如果你想要選擇行,把第三個參數datasample更改爲1(這是Matlab沒有給出第三個參數時的默認行爲)。

% create random data 
M = randi(20,4,10) 

% randomly sample data 
[Y,ind] = datasample(M,4,2) 

% write 0 for the sampled data in original matrix 
M(:,ind) = 0 

這是結果:

M = 
    20 14  6 18  1  9  4 15 11 11 
    11  5  9 20  8 19  2  9  3 13 
    20 20 16  4  1 16 13 11  4  9 
    15  1  4 12 20 18  4 19 11 13 
Y = 
    18  4 15 14 
    20  2  9  5 
    4 13 11 20 
    12  4 19  1 
ind = 
    4  7  8  2 
M = 
    20  0  6  0  1  9  0  0 11 11 
    11  0  9  0  8 19  0  0  3 13 
    20  0 16  0  1 16  0  0  4  9 
    15  0  4  0 20 18  0  0 11 13 

初始化rng(4)