1

我有 2 个向量(nt),例如:

n  t
1  5
5  3
5  2
2  6
2  9

一旦我从向量nrandsample(n,1)采样,我想从向量t中采样,但只能从与向量n中相同的值对应的值中采样。

例如。如果我从n中绘制了 2 的值,那么我想从t中绘制 6 或 9 的值。但是我如何告诉 matlab 这样做呢?

4

2 回答 2

2

您可能会这样做:

out = t(n == randsample(n, 1))

这将根据n是否=它自己的随机样本创建一个过滤器,即如果

randsample(n, 1) = 2
(n == randsample(n, 1)) = [0
                           0
                           0
                           1
                           1]

并将其应用于 t 即:

 t(n == randsample(n, 1)) = [6
                             9]

这是n中 2 的两个对应值,但在t中。

希望这可以帮助。

PS,如果您只需要 t 中的一个值,那么您可以对这个函数给您的输出进行随机抽样。

于 2012-09-05T22:56:32.810 回答
1

Simple one-liner, assuming you have them stored in a Nx2 matrix

nt = [
1  5;
5  3;
5  2;
2  6;
2  9];

meaning:

n = nt(:,1);
t = nt(:,2);

you can sample nSamples with replacement by randmonly indexing the matrix row-wise, i.e.:

nSamples = 5;
keepSamples = nt(randi(length(nt),nSamples,1),:);
于 2012-09-06T01:18:06.387 回答