0

一連の添え字が指定されたファイルから現在データをロードしている C++ プログラムで使用されるkランダムな添え字を取得したいと思います。A

double 値を持つMxNマトリックスと、0 から 20 までの整数を持つマトリックスがあります。AMx1B

からの条件でkランダムな添字を取得するにはどうすればよいですか? たとえば、次のようになります。AB

A = [ 0.25 0.25 0.25 0.25
      0.18 0.18 0.18 0.18 
      0.36 0.36 0.36 0.36 
      0.51 0.51 0.51 0.51 ]

B = [ 0 
      1
      2
      1 ]

ifからk = 1ランダムな行の添え字を取得しようとしています。だから、私はorを探しています。iAB(i) == 1i == 1i == 4

最初に次のように論理インデックスを作成しようとしました:

idx = B == 1;

そして、A次のようにその条件で要素から取得します。

r = A( idx, : );

最後に、行rを取得するために to で順列を実行します。k

randperm( size(r) )

しかし、順列をマトリックスに変換する方法がわからないため、今は行き詰まっていますA

私も関数を理解しようとしています[I,J] = ind2sub(siz,IND)が、今のところ添字をランダム順列で結合する方法がわかりません。さらに、 の結果はrandperm( size(r) )のサイズに関連していますr

では、条件付きでkランダムな添字を取得するにはどうすればよいですか? アイデアは、C++ プログラムで添字を入力パラメーターとして使用することです。AB

4

1 に答える 1

1

次のようにして、関連する行番号を取得できます。

nrs=1:length(idx);
nrs=nrs(idx);

次に、それらを並べ替えます。

nrs_permidx = randperm(length(nrs))
permuted = nrs(nrs_permidx)

そして、あなたはここからそれを取ることができると思います。

于 2013-02-15T18:22:24.893 に答える