Matlab - ¿Cómo separar matrices que están concatenadas?

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

¿Cómo separar matrices que están concatenadas?

Publicado por Simón (18 intervenciones) el 21/07/2020 05:50:36
Hola a todos,

Tengo una celda de 18x1 llamada FENreemplazo, de la siguiente manera

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{'54321345/66666666/00000000/00000000/00000000/00000000/66666666/54321345'}
{'50000010/06006606/00060062/06000606/20000060/60600000/06055000/01000005'}
{'54321345/66666666/00000000/00000000/00000000/00000000/66666666/54321345'}
{'50024001/06600000/00060000/60466006/00600506/00400600/66203000/00100055'}
{'50020001/06600040/00060000/60466006/00600506/00400600/66203000/00100055'}
{'50020001/06600040/00060020/60466006/00600506/00400600/66003000/00100055'}
{'50000001/06600040/00060220/60466006/00600506/00400600/66003000/00100055'}
{'50000001/06600040/00060200/60466006/00600506/00400600/66003000/00100055'}
{'50000001/06600040/00060500/60466006/00600006/00400600/66003000/00100055'}
{'54321345/66666666/00000000/00000000/00000000/00000000/66666666/54321345'}
{'50024500/06630010/00060060/60466606/00600006/00400640/66023060/00150005'}
{'50024500/06600010/00060060/60466306/00600006/00400640/66023060/00150005'}
{'54321345/66666666/00000000/00000000/00000000/00000000/66666666/54321345'}
{'00550010/06006606/60060460/23000600/00026066/00400300/66600000/01050005'}
{'00550010/06006606/60060460/24000600/00026066/00000300/66600000/01050005'}
{'00550010/06006606/00060460/26000600/00026066/00000300/66600000/01050005'}
{'00550010/06006606/00060460/26000606/00026060/00000300/66600000/01050005'}
{'00050010/06006606/00060460/26000606/00526060/00000300/66600000/01050005'}


Resulta que FENreemplazo está compuesto por varios arreglos concatenados. Nótese que la fila 1, 3, 10, 13 contienen la misma información. Es decir, dichas filas están compuestas por:
1
'54321345/66666666/00000000/00000000/00000000/00000000/66666666/54321345'

Esta combinación de números marca el inicio de cada arreglo. Entonces, de la fila 1 a la 2 corresponden a un arreglo, de la 3 a la 9 es otro arreglo, de la 10 a la 12 es otro, y de la 13 a la 18 es otro (Nótese que dichos arreglos no tienen las mismas dimensiones).

Necesito entonces de alguna manera separar esos arreglos. Es decir, que la fila 1 a la 2 quede en una variable que se llame Array1, que la 3 a la 9 quede en una variable que se llame Array2, y así sucesivamente.

Yo había pensado en un condicional if dentro de un ciclo for. Es decir, que el ciclo for vaya recorriendo cada fila de la celda, y que el condicional if me evalúe si la fila actual es igual a '54321345/66666666/00000000/00000000/00000000/00000000/66666666/54321345'. En caso de ser igual, que almacene en una variable o en una celda la información que hay desde el inicio hasta la fila justamente anterior.
He estado intentando hacer esto pero no lo he logrado.

Si no me expliqué correctamente me lo hacen saber.

¿Alguien sabe cómo podría lograr este objetivo?

Gracias a todos.
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
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

¿Cómo separar matrices que están concatenadas?

Publicado por Daniel (354 intervenciones) el 21/07/2020 18:38:54
Hola,

Para esto lo mejor es usar cellfun para obtener las posiciones y después todo es sencillo.

1
2
str = '54321345/66666666/00000000/00000000/00000000/00000000/66666666/54321345';
pos = find(cellfun(@(x) strcmp(str, x), A))

Lo que te devolverá en pos las filas que buscas. Ahora solo hay que obtener cada una de las matrices con un for

1
2
3
for i = 1:length(pos)-1
    FENreemplazo(pos(i):pos(i+1))
end

Saludos,
Daniel Rodríguezw
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar