Group values in a double & create new matrix according to the groups formed
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Maria
el 25 de Ag. de 2014
Comentada: Andrei Bobrov
el 26 de Ag. de 2014
I have a double variable A with 1 column and 30000 rows:
A=[44
12
79
12
83
63
53…]
I applied the following code:
groupA=cell2mat(A(:,1));
[~, ~, ugroupA] = unique(groupA)
DA=dummyvar(ugroupA);
And I obtained a double matrix with 30000 rows and 262 columns with ones and zeros. The number of columns -262 - reflects the different numbers of the variable A.
What I am trying to do now is to apply basically the same code, but instead of getting a new column of ones and zeros for each different number in A, I would like to have a different column for the values between:
0 to 5
5 to 10
10 to 15
15 to 20
20 to 30
30 to 40
40 to 50
50 to 100
100 to 150
150 to 200
200 to 300
So instead of obtaining a new variable DA with 30000 rows and 262 columns, I would get a variable with 30000 rows but 11 columns.
Can someone help me please? Thank you
0 comentarios
Respuesta aceptada
Kelly Kearney
el 25 de Ag. de 2014
xedge = [0 5 10 15 20 30 40 50 100 150 200 300];
A = rand(1000,1)*300;
[n, idx] = histc(A, xedge);
isin = bsxfun(@eq, idx, 1:length(xedge)-1);
Not entirely sure what your dummyvar was, but I think this gets to the 1/0 matrix you wanted.
0 comentarios
Más respuestas (1)
Andrei Bobrov
el 25 de Ag. de 2014
Editada: Andrei Bobrov
el 26 de Ag. de 2014
EDIT
v = [0
5
10
15
20
30
40
50
100
150
200
inf];
[~,b] = histc(A,v);
out = dummyvar(b);
3 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!