私は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]
そしてこれをtieに適用します:
t(n == randsample(n, 1)) = [6
9]
これは、 nの2に対応する2つの値ですが、tの値です。
お役に立てれば。
PS tから1つの値だけが必要な場合は、この関数が提供する出力をrandsampleすることができます。
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),:);