连接/叠加两个样本matlab

时间:2013-04-11 10:06:11

标签: matlab

我想为Sample_2连接2个带首选项的样本:

eg. Sample_1= rand(1000,28), Sample_2=normrnd(1.91,0.266,1000,28)

enter image description here

好的,现在我想在Sample_2上叠加Sample_1,但优先选择sample_2的点数(例如80%样本2和20%样本1)。即我想要更多的Sample_2积分而不是Sample_1积分。这是针对模型的蒙特卡罗抽样的不确定性分析。

也许是这样的:

Total_sample=randsample([Sample_1 Sample_2],1000,28,'false',[0.8 0.2]);
  

使用randsample时出错(第74行)人口必须是矢量。

  

使用randsample时出错(第90行)W的长度必须为56。

1 个答案:

答案 0 :(得分:2)

直接的方法是生成随机索引,并使用它们用Sample_1中的样本覆盖Sample_2中80%的样本:

%// Copy samples from Sample_1
Total_Sample = Sample_1;

%// Overwrite 80% of the samples with values from Sample_2
N = numel(Sample_1);
idx = randperm(N);
Total_Sample(idx(1:0.8 * N)) = Sample_2(idx(1:0.8 * N));

或者,第二部分也可以这样实现:

N = numel(Sample_1);
idx = randsample(1:N, 0.8 * N);
Total_Sample(idx) = Sample_2(idx);