How to bin a simple number array?

Hello,
I'm reading a simple number array from a .txt file (all integers) using:
fileID = fopen('control.txt','r');
formatSpec = '%d';
A = fscanf(fileID,formatSpec);
Now I want to bin these integers into a several groups:
Group 1: integers from 21 to 100;
Group 2: integers from 101 to 500;
Group 3: integers from 501 to 1000;
Group 4: integers from 1001 to infinity (max number unknown).
I'm also interested in finding the range (how many numbers) of each group.
Thank you!

 Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 25 de Jul. de 2016
A=1:120
[b,c]=histc(A,[21 50 60 100 inf])
out=accumarray(c'+1,(1:numel(c))',[],@(x) {A(x)})
out=out(2:end)
celldisp(out)

1 comentario

That One
That One el 25 de Jul. de 2016
Hi Azzi,
Thanks for the quick answer. I'm actually trying to bin my number array into 4 groups and write the 4 groups into 4 .txt files as:
fileID = fopen('Group_1.txt','w');
fprintf(fileID, '%d\r\n',B);
fclose(fileID);
All I'm missing is the code to bin these numbers. Can you please show me how to do that? Thanks a lot!

Iniciar sesión para comentar.

Más respuestas (1)

Steven Lord
Steven Lord el 25 de Jul. de 2016

1 voto

Use the histcounts function and specify a vector of edges.

4 comentarios

That One
That One el 25 de Jul. de 2016
How do I specify a vector of edges? Can you please be more specific? Thanks!
Steven Lord
Steven Lord el 26 de Jul. de 2016
Take a look at the documentation for histcounts for some examples.
You have already come close to defining them:
Group 1: integers from 21 to 100;
Group 2: integers from 101 to 500;
Group 3: integers from 501 to 1000;
Group 4: integers from 1001 to infinity (max number unknown).
Use the max function to help you define the upper edge.
Experiment with to get the result you want.
Steven Lord
Steven Lord el 26 de Jul. de 2016
Or just specify Inf as the right endpoint of the last bin.

Iniciar sesión para comentar.

Categorías

Más información sobre Matrices and Arrays en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 25 de Jul. de 2016

Comentada:

el 26 de Jul. de 2016

Community Treasure Hunt

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

Start Hunting!

Translated by