Matlab - Dividir matriz en submatrices

   
Vista:

Dividir matriz en submatrices

Publicado por JuanMa (37 intervenciones) el 21/05/2014 19:01:49
Hola, dada, por ejemplo, la siguiente matriz:


A =

0 0 3 72 1 1 0 1 0 56 49 15 2 127 1
0 0 4 60 1 1 0 0 1 50 50 6 2 127 5
0 0 1 76 1 1 0 3 2 58 47 8 2 127 1
0 0 2 116 1 1 0 2 2 56 63 2 2 127 4
0 0 1 122 1 1 0 0 2 60 55 2 2 127 4
0 0 2 102 1 1 0 6 3 51 17 3 2 127 1
0 0 4 60 1 1 0 0 1 50 50 6 2 127 5

Necesito un bucle para dividirla en distintas matrices según su último número, es decir:

B =

0 0 3 72 1 1 0 1 0 56 49 15 2 127 1
0 0 1 76 1 1 0 3 2 58 47 8 2 127 1
0 0 2 102 1 1 0 6 3 51 17 3 2 127 1

C =

0 0 4 60 1 1 0 0 1 50 50 6 2 127 5
0 0 4 60 1 1 0 0 1 50 50 6 2 127 5


D =

0 0 2 116 1 1 0 2 2 56 63 2 2 127 4
0 0 1 122 1 1 0 0 2 60 55 2 2 127 4

¿Alguna idea?

Muchas gracias. Saludos.
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

Dividir matriz en submatrices

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 22/05/2014 01:37:10
1
2
3
4
5
6
7
8
9
10
11
12
13
clear all
A=[0 0 3 72 1 1 0 1 0 56 49 15 2 127 1
 0 0 4 60 1 1 0 0 1 50 50 6 2 127 5
 0 0 1 76 1 1 0 3 2 58 47 8 2 127 1
 0 0 2 116 1 1 0 2 2 56 63 2 2 127 4
 0 0 1 122 1 1 0 0 2 60 55 2 2 127 4
 0 0 2 102 1 1 0 6 3 51 17 3 2 127 1
 0 0 4 60 1 1 0 0 1 50 50 6 2 127 5];
b=unique(A(:,end));
for i=1:length(b)
 rep=find(A(:,end)==b(i));
 A((rep),:)
end



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ans =
 
     0     0     3    72     1     1     0     1     0    56    49    15     2   127     1
     0     0     1    76     1     1     0     3     2    58    47     8     2   127     1
     0     0     2   102     1     1     0     6     3    51    17     3     2   127     1
 
 
ans =
 
     0     0     2   116     1     1     0     2     2    56    63     2     2   127     4
     0     0     1   122     1     1     0     0     2    60    55     2     2   127     4
 
 
ans =
 
     0     0     4    60     1     1     0     0     1    50    50     6     2   127     5
     0     0     4    60     1     1     0     0     1    50    50     6     2   127     5
 
>>





Para acabarlo usa genvarname


Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
Estimado usuario de Matlab, El correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

Dividir matriz en submatrices

Publicado por JuanMa (37 intervenciones) el 22/05/2014 11:52:23
Muchas gracias!! Saludos!!
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

Dividir matriz en submatrices

Publicado por Emi (37 intervenciones) el 22/05/2014 17:14:00
Hola, creía que esto solucionaría también mi problema, pero mi caso es algo más complejo:

Dada por ejemplo una matriz similar a la anterior:

A =

0 0 3 72 1 1 0 1 0 56 49 15 2 127 1
0 0 4 60 1 1 0 0 1 50 50 6 2 127 5
0 0 1 76 1 1 0 3 2 58 47 8 2 127 2
0 0 2 116 1 1 0 2 2 56 63 2 2 127 3
0 0 1 122 1 1 0 0 2 60 55 2 2 127 4
0 0 2 102 1 1 0 6 3 51 17 3 2 127 6
0 0 4 60 1 1 0 0 1 50 50 6 2 127 5

Pero las submatrices en la que la quiero dividir se rigen en lugar del valor del último número por un intervalo, es decir:

B = 0 0 3 72 1 1 0 1 0 56 49 15 2 127 1
0 0 1 76 1 1 0 3 2 58 47 8 2 127 2

C = 0 0 2 116 1 1 0 2 2 56 63 2 2 127 3
0 0 1 122 1 1 0 0 2 60 55 2 2 127 4

D = 0 0 4 60 1 1 0 0 1 50 50 6 2 127 5
0 0 2 102 1 1 0 6 3 51 17 3 2 127 6

Lo que quiero es realizar determinadas operaciones (las mismas) con cada una de estas submatrices e introducirlas posteriormente en otra del tamaño de A.

¿Me puede ayudar alguien?

Gracias!!
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