假设我在单个列向量中有一个包含10,000个样本的信号,如[10000x1]
矩阵
sig = -0.1272
-0.1124
-0.1126
.
.
.
并且,我想重新采样/分段所有可能数量的集合,每个集合包含1,000个样本。当我尝试使用以下代码对连续底层缓冲区应用随机缓冲区功能时:
new_sam = buffer(sig, 1000);
到目前为止生成的结果是[1000x10]
矩阵,只有10个随机的1000个样本集。
new_sam = -0.0374 0.0622 -0.0773 0.0655 -0.0410 -0.0859 -0.0647 0.0424 -0.0615 -0.0615
-0.0820 0.0873 -0.0822 0.0105 -0.0060 -0.0659 -0.0948 -0.0277 -0.0814 0.0036
-0.0666 0.0475 -0.0772 0.0855 -0.0260 -0.0610 -0.0848 0.0123 -0.1014 0.0186
. . . . . . . . . .
. . . . . . . . . .
我想要得到的实际样本是所有可能的数字集(超过500个或更多N个随机集,每个集合1,000个样本),例如[1000 x N]
,但每1,000个样本应该按顺序排列他们的信号值。但是,每组都应该在信号中随机化。
答案 0 :(得分:3)
使用randperm排序:
M=10*1000;
K=1000;
N=10;
sig=100*randn(M,1,'single');
idxs=cell2mat(arrayfun(@(i)sort(randperm(M,K)),1:N,'Uniform',0)')';
sig_samp=sig(idxs);