Matlab - Llenar una matriz con variables consecutivas variando 2 letras.

 
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

Llenar una matriz con variables consecutivas variando 2 letras.

Publicado por Simón (18 intervenciones) el 15/05/2020 21:53:02
Hola a todos,

Justamente ayer hice una pregunta similar, pero me acaba de surgir una nueva duda.

Resulta que debo llenar una matriz con nombres consecutivos que varían en 2 cosas. Es decir, los nombres siguen el siguiente patrón LLLXXXLLLYYY, donde XXX y YYY son números que van cambiando cada vez.

Entonces, los números XXX están almacenados en un vector llamado numA de dimensiones 1x300, es decir:

1
numA=[2, 6, 10, 11, 12, 13, 18, 19, 20, 100, ..., 590, 600]

Y los números YYY son números en orden ascendente, desde 1 hasta 300.

Entonces, lo que busco obtener como resultado es una matriz de la siguiente manera:
1
2
3
4
5
6
7
8
9
LLL002LLL001
LLL006LLL002
LLL010LLL003
LLL011LLL004
...
...
...
LLL590LLL299
LLL600LLL300

Para los números XXX del vector numA que tienen una sola cifra, lo que estoy intentando hacer es esto:

1
2
3
4
5
for ii=numA(1:2)
    for jj=1:2
       matA{jj,1}={['LLL00',num2str(ii),'LLL00',num2str(jj)]};
    end
end

Como ven, estoy intentando hacer 2 ciclos for, para que cada uno se encargue de variar un parámetro distinto, pero no me está funcionando, lo que estoy obteniendo como resultado es eso:

1
2
LLL006LLL001
LLL006LLL002

Y lo que quiero es:

1
2
LLL002LLL001
LLL006LLL002

Alguien sabe qué estoy haciendo mal?

No sé si me hice entender, pero agradecería mucho que me ayudaran.
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

Llenar una matriz con variables consecutivas variando 2 letras.

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 15/05/2020 23:56:50
1
numA=[2, 6, 10, 11, 12, 13, 18, 19, 20, 100, ..., 590, 600]

no veo ley de formación en los elementos del vector. Lo que se podria hacer es: escribir en forma manual numA luego usar el bucle for para extraer los elementos del vector columA y formar el nombre que desea.
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: 31
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Llenar una matriz con variables consecutivas variando 2 letras.

Publicado por Simón (18 intervenciones) el 16/05/2020 02:31:23
No entendí muy bien lo que me dijiste Jose.

No puedo simplemente usar 2 ciclos for para ir variando los 2 parámetros? Uno que me vaya tomando cada valor del vector numA, y otro que me vaya de 1 hasta 300. No?
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

Llenar una matriz con variables consecutivas variando 2 letras.

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 16/05/2020 03:34:16
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
>> clear
numA=[2, 6, 10, 11, 12, 13, 18, 19, 20, 100];
for i=1:length(numA)
       matA{i,1}={['LLL00',num2str(numA(i)),'LLL00',num2str(i)]};
end
celldisp(matA)
 
matA{1}{1} =
 LLL002LLL001
 
 matA{2}{1} =
 LLL006LLL002
 
 
matA{3}{1} =
 LLL0010LLL003
 
 matA{4}{1} =
 LLL0011LLL004
 
matA{5}{1} =
 
LLL0012LLL005
 
 
matA{6}{1} =
 
LLL0013LLL006
 
 matA{7}{1} =
 LLL0018LLL007
 
matA{8}{1} =
 LLL0019LLL008
 
matA{9}{1} =
 LLL0020LLL009
 
 matA{10}{1} =
 LLL00100LLL0010


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: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Llenar una matriz con variables consecutivas variando 2 letras.

Publicado por Daniel (354 intervenciones) el 16/05/2020 12:00:11
Hola ,

Desde mi punto de vista hay dos errores en el planteamiento. El primero es que se asigna una celada a una celda

mat{i,1} = {[…]}

lo que hace que posteriormente para acceder a un elemento sea necesario hacer mat{i,j}{1}, para acceder a cada uno de los elementos. Esto se puede solucionar asociando solo los elementos

mat{i, 1} = []

Por otro lado, al concatenar las cadenas de texto en lugar de usar formato lo que se consigue es que la longitud de cada sea diferente

LLL008LLL003
LLL0010LLL004

Que a lo mejor es lo que se desea en ambos casos, en caso de que no sea así esta puede ser una solución

1
2
3
4
5
6
7
8
matA = cell(6, 1);
numA = [2, 8, 16, 32, 64, 128];
 
for i=1:length(numA)
    matA{i,1}= sprintf('LLL%03iLLL%03i',numA(i), i);
end
 
matA

1
2
3
4
5
6
7
8
9
10
matA =
 
  6×1 cell array
 
    {'LLL002LLL001'}
    {'LLL008LLL002'}
    {'LLL016LLL003'}
    {'LLL032LLL004'}
    {'LLL064LLL005'}
    {'LLL128LLL006'}

Saludos,
Daniel Rodríguez Pérez.
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
0
Comentar