如何创建一个由两个其他向量的随机采样组成的向量?
例如
矢量1 1,3,4,7,矢量2 2,5,6,8随机矢量从矢量1或2(值1或2)随机抽取,从矢量1或2(值3或5)随机抽取...等
最后,如何让matlab重复此过程n次以绘制结果分布?
谢谢,
发布于 2013-04-16 04:34:39
有很多方法可以做到这一点。一种可能性是:
tmp=round(rand(size(vector1)))
res = tmp.*vector1 + (1-tmp).*vector2发布于 2013-04-16 04:41:04
要获得一个混合样本,您可以使用以下代码片段的想法(不是最优的,但可能足够清楚):
a = [1, 3, 4, 7];
b = [2, 5, 6, 8];
selector = randn(size(a));
sample = a.*(selector>0) + b.*(selector<=0);对于n示例,将上面的代码放在for循环中:
for k=1:n
% Sample code (without initial "samplee" assignments)
% Here do stuff with the sample
end;发布于 2013-04-16 04:51:18
更一般的情况是,如果X是一个矩阵,并且对于每一行,您希望从随机选择的列中抽取样本,则可以使用循环执行此操作:
y = zeros(size(X,1),1);
for ii = 1:size(X,1)
y(ii) = X(ii,ceil(rand*size(X,2)));
end您可以通过sub2ind使用巧妙的索引来避免循环:
idx_n = ceil(rand(size(X,1),1)*size(X,2));
idx = sub2ind(size(X),(1:size(X,1))',idx_n);
y = X(idx);https://stackoverflow.com/questions/16024136
复制相似问题