Indexing Vector of Variables

3 Ansichten (letzte 30 Tage)
Matthew
Matthew am 15 Nov. 2017
Kommentiert: Matthew am 15 Nov. 2017
I have a column vector of numbers (we'll call it A for example). Is there a slick way to go through A and create another column vector (B) of indices? In other words, if a number in A falls in the range of 0-0.1, it will be binned (i.e., indexed) as 1 in B. If a number in A falls in the range of 0.1-0.2, it will be indexed as 2 in B. If a number in A falls in the range of 0.2-0.3, it will be indexed as 3 in B. And so on. Vector B will then serve as my Indexing vector to allocate each number of A to a certain "bin." I'm sure I could write a FOR and/or IF statement to accomplish this. But for the sake of efficiency, I wanted to ask if there was a more efficient and easier way.
Thanks,
M Ridzon

Akzeptierte Antwort

Stephen23
Stephen23 am 15 Nov. 2017
Bearbeitet: Stephen23 am 15 Nov. 2017
That is what the histogram functions do very easily and efficiently:
or
or
etc.
Here is an example:
>> V = rand(1,10)
V =
0.8093 0.0174 0.3329 0.4669 0.5331 0.1471 0.9760 0.3909 0.4499 0.3305
>> B = 0:0.1:1; % bin edges
>> [~,idx] = histc(V,B)
idx =
9 1 4 5 6 2 10 4 5 4
  4 Kommentare
Stephen23
Stephen23 am 15 Nov. 2017
@Matthew: did you read the discretize help? It clearly explains how the data are allocated to the bins.
Matthew
Matthew am 15 Nov. 2017
Beautiful! I got my answers. Thanks a million folks!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by