我有 2 个向量(n和t),例如:
n t
1 5
5 3
5 2
2 6
2 9
一旦我从向量n到randsample(n,1)
采样,我想从向量t中采样,但只能从与向量n中相同的值对应的值中采样。
例如。如果我从n中绘制了 2 的值,那么我想从t中绘制 6 或 9 的值。但是我如何告诉 matlab 这样做呢?
我有 2 个向量(n和t),例如:
n t
1 5
5 3
5 2
2 6
2 9
一旦我从向量n到randsample(n,1)
采样,我想从向量t中采样,但只能从与向量n中相同的值对应的值中采样。
例如。如果我从n中绘制了 2 的值,那么我想从t中绘制 6 或 9 的值。但是我如何告诉 matlab 这样做呢?
您可能会这样做:
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 中的一个值,那么您可以对这个函数给您的输出进行随机抽样。
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),:);