1

別のベクトルの値の範囲に基づく値を含むベクトルを作成したいと考えています。

例:

私はベクトルを持っています

A = [-2 1 3 -1 5 6]

そして、ベクトル A の値に基づいて、たとえば 3 つのグループのベクトルを作成したいと考えています。グループを次のようにします。

  • グループ 1: A <1 の値
  • グループ 2: A <5 および >=1 の値
  • グループ 3: A の値 >=5

結果ベクトルは次のようになります。

X = [1 2 2 1 3 3]

どうすればこれを行うことができますか?答えはそこにあると確信していますが、適切な検索用語がありません。

4

2 に答える 2

1

これは、論理インデックス付けの単純なケースです。

A = [-2 1 3 -1 5 6]

X = 2*(A<5) + 3*(A>=5);
X(A<1)=1;

または、グループ 2 を意味すると仮定します: <5 AND >=1

X = (A<1) + 2*(A>=1 & A<5) + 3*(A>=5);
于 2015-07-27T16:55:00.640 に答える
0

個人的には論理インデックスの方が好きですが、histcounts. この特定の状況ではやり過ぎかもしれませんが、組み込みのビニング アルゴリズムを活用できます。

A = [-2 1 3 -1 5 6];
edges = [-inf 1 5 inf];

[~, ~, binidx] = histcounts(A, edges);

どちらが返されますか:

binidx =

     1     2     2     1     3     3

ビンのエッジを設定するedgesには、ドキュメントに従って入力を利用できます。

ビンのエッジ。ベクトルとして指定します。edge(1) は最初のビンの左端であり、edges(end) は最後のビンの右端です。

ビニング アルゴリズムを利用する必要がない場合は、discretizeも使用できます。

A = [-2 1 3 -1 5 6];
edges = [-inf 1 5 inf];
binidx2 = discretize(A, edges);

上記と同じものを返します。

于 2015-07-27T17:13:46.360 に答える