Matlab - Bucle for para generar una lista de dos listas

   
Vista:

Bucle for para generar una lista de dos listas

Publicado por Jose Luis (1 intervención) el 23/08/2014 00:49:45
Buen día, les escribo por que yo soy nuevo en esto y estoy haciendo un código que me permita obtener una series de números determinados por unas listas "w" y "z". Este es el código que estoy utilizando, quisiera obtener en b los números de w(1):z(1);w(2):z(2) y asi hasta w(55):z(5).

w = 1:122:6711;
z = 62:122:6711;
for j = 1:55
b(j) = (w(j):z(j));
end

Sin embargo me sale este error "In an assignment A(I) = B, the number of elements in B and I must be the same."

Por favor si me podrían ayudar se los agradecería mucho. 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 Jorge De Los Santos

Bucle for para generar una lista de dos listas

Publicado por Jorge De Los Santos (212 intervenciones) el 23/08/2014 05:02:44
Hola José Luis.

El problema está en que intentas guardar un vector de n elementos dentro de una sóla posición en otro vector, lo cual produce el error que te muestra. Hay dos posibles soluciones para vuestro caso, a saber:

1) Hacer la asignación de la siguiente forma:

1
2
3
4
5
w = 1:122:6711;
z = 62:122:6711;
for j = 1:55
    b(j,:) = (w(j):z(j));
end


Donde "b" resultaría en una matriz de 55x62, es decir cada fila contiene los datos correspondientes a cada iteración.



2) Utilizar un cell array:

1
2
3
4
5
w = 1:122:6711;
z = 62:122:6711;
for j = 1:55
    b{j} = (w(j):z(j));
end


La ventaja que te ofrece el cell array es que puedes guardar datos de diversos tipos y dimensiones en cada posición.




Saludos.

Jorge De Los Santos.
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

Bucle for para generar una lista de dos listas

Publicado por carlos (4 intervenciones) el 28/08/2014 21:49:50
tu proble suces porque (w(j):z(j)); tiene una fila y 62 columnas y b no tiene tamaño alguno lo que debes hacer es definir el tamaño de b antes del bucle:

1
2
3
4
5
6
w = 1:122:6711;
z = 62:122:6711;
b=zeros(55,62)
for j = 1:55
b(j,:) = (w(1,j):z(1,j));
end

ya funciona
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