Datasample将更好地服务,只要您使用非替换形式(我猜你不想重复输出。如果你确定这一说法,则忽略该“替换”标志)。该指数的输出也将是未排序的,这样你就可以完美地将它用于数据2:
data1 = [a b c d e];
data2 = [f g h i j]
[out1,idx] = datasample(data1,k,'Replace',false);
out2=data2(idx);
我看你也是“只需要以随机抽取更多1500的第三剩余的2760,然后,剩余的1260 。矢量“,你可以使用IDX信息不理那一套:
idx_notused=setdiff(1:size(data1,1),idx); %finds all positions not selected previously
[out1_v2,idx2] = datasample(data1(idx_notused),k,'Replace',false); %k=1500
idx2=idx_notused(idx2); %so it maps with the original data
out2_v2=data2(idx2);
%and again for the remaining 1260:
idx_remaining=setdiff(1:size(data1,1),[idx idx2]);
out1_v3=data1(idx_remaining);
out2_v3=data2(idx_remaining);
来源
2017-02-17 21:25:47
ana
用于与第二输出数据1使用datasample还捕获。使用数据采样的第二个输出来索引data2和其他数据。 – Navan
您是否选择**并带**或**而不带**替换? – rayryeng
我在没有但没有成功的情况下使用,但@TonyTannous提供的解决方案工作。但是,如果可能的话,我需要做一些更复杂的事情。我正确地提取了可以说的8760个数字中的6000个,但我需要随机提取更多1500 ** **其余2760个,然后剩下的1260个第三个向量。他想要独特的@rayryeng – Paulos