1

私は2つのベクトル(nt)を持っています例:

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

ベクトルnからをサンプリングしたらrandsample(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]

そしてこれをtieに適用します:

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

これは、 nの2に対応する2つの値ですが、tの値です。

お役に立てれば。

PS tから1つの値だけが必要な場合は、この関数が提供する出力をrandsampleすることができます。

于 2012-09-05T22:56:32.810 に答える
1

Nx2マトリックスに格納されていると仮定した場合の単純なワンライナー

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

意味:

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

nSamples行列を行ごとにランダムにインデックス付けすることで、置換を使用してサンプリングできます。

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