Matlab - Crear diferentes matrices respecto a otra matriz

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear diferentes matrices respecto a otra matriz

Publicado por b (5 intervenciones) el 23/02/2020 22:52:19
Tengo una matriz 'R' que es una base de datos de 100234x4, en total tengo 718 usuarios, de que manera puedo crear una matriz por usuario, es decir, U1,U2,....,U718? empece usando esto U1=R(R(:,1)==1,:); luego cai en cuenta que tendria que hacerlo 718 veces, intente con un loop pero siempre me aparecen errores, porfavor ayudenme, gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear diferentes matrices respecto a otra matriz

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 23/02/2020 23:26:34
Podría poner un ejemplo pequeño , resuelto en forma analítica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear diferentes matrices respecto a otra matriz

Publicado por b (5 intervenciones) el 25/02/2020 00:49:53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
R = readtable('ratings.csv'); %100234 x 4
 
summary(R);
X = max(R.userId); %718 usuarios
R = table2array(R);
 
U1=R(R(:,1)==1,:); %extraigo lo del usuario 1 pero como hacerlo para 718 en un loop?
U2=R(R(:,1)==2,:);
U3=R(R(:,1)==3,:);
 
 
for i = 1:718
 
    U(i,4) = R(R(:,1)==i,:);
end



Ese es el codigo que tengo, cabe destacar que en R tengo una matriz de 100234 x 4, en las filas tengo 100234 datos de los cuales tengo usuarios del 1 al 718, tengo que crear 718 matrices con la informacion correspondiente a cada usuario, por ejemplo del usuario 1 tengo 48x4 y asi sucesivamente, cual seria la manera mas eficiente y correcta para procesar esa informacion? Por su ayuda y tiempo en verdad se lo agradezco!!!

Ya he cambiado demasiadas veces el codigod que sinceramente estoy perdida en lo que estoy haciendo.


Me habian comentado algo de realizar una comparacion con find(), ismember() pero sinceramente no se como aplicarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear diferentes matrices respecto a otra matriz

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 25/02/2020 01:02:32
Estimad@ Podría poner un ejemplo muy pequeño resuelto en forma analitica sin usar matlab
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear diferentes matrices respecto a otra matriz

Publicado por b (5 intervenciones) el 25/02/2020 01:11:00
Mi ejemplo seria, tengo una matriz como la siguiente, la primera columna son usuarios, segunda columna calificacion, tercera otra calificacion.

A = [1 4 8
1 8 9
2 4 5
2 7 8
3 4 7 ]

Debo extraer de la matriz A los datos correspondientes de la primera columna que se repiten, es decir, todos los 1, 2,3 que serian mis "usuarios" , quedandome 3 matrices diferentes A1 = [1 4 8 ; 1 8 9], A2 = [2 4 5; 2 7 8] .... etc.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Crear diferentes matrices respecto a otra matriz

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 25/02/2020 01:34:14
1
2
3
4
5
R=round(10*rand(20,4))
for i=1:5
    U=R(R(:,1)==i,:);
    eval([['U',num2str(i)],'=U'])
end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
>> eval1
 
R =
 
     2    10     0     3
     4     9     6     3
     8     1     9     6
     8     7     7     3
     1     3     2     8
     4     4     4    10
     5     5     5     7
     4     9    10     3
     7     4     2     6
     6    10     9     1
     3     3     6     9
     4     7     4     9
     0     7     2     8
    10     5     4     3
     2     7     5     6
     1     7     1     0
     4     2     6     4
     2     1     2     3
     5    10     4     2
     3     2     6     2
 
 
U1 =
 
     1     3     2     8
     1     7     1     0
 
 
U2 =
 
     2    10     0     3
     2     7     5     6
     2     1     2     3
 
 
U3 =
 
     3     3     6     9
     3     2     6     2
 
 
U4 =
 
     4     9     6     3
     4     4     4    10
     4     9    10     3
     4     7     4     9
     4     2     6     4
 
 
U5 =
 
     5     5     5     7
     5    10     4     2


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab
[email protected]


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Crear diferentes matrices respecto a otra matriz

Publicado por Bianca (5 intervenciones) el 25/02/2020 01:58:30
Muchísimas gracias por la ayuda profesor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar