Matlab - Ciclo for anidado

 
Vista:
sin imagen de perfil
Val: 352
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Ciclo for anidado

Publicado por Ricardo (218 intervenciones) el 20/01/2018 04:22:10
Buenas noches.

Tengo w=11+n en donde n empieza de cero y se va incrementando en 20 en 20 hasta 380
y x=m*20 en donde m empieza de 1 y va incrementándose uno a uno hasta 20
al final debo tener la suma de x+w en x1=x+w al final de esa suma espero tener los siguientes valores:

31,71,111,151,191,231,271,..........711,751, y al final 791
según yo, lo lograría con el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
clc;  clear;  close all
 
Ccl=20;
vectores1=[];
 
for n=0:20:380
    w=11+n;
        for m=1:1:20
            x=m*Ccl;
            x1=x+w;
            vectores1=[vectores1;x1]
        end
end


No logro la secuencia esperada en x1
Aunque los valores de la secuencia en " w " y " x " están correctos, pero ya en la suma de x+w
no me da la secuencia esperada..
Ya hice la suma a mano y obtengo los valores deseados.
No encuentro mi error.

Espero me ayuden
De antemano 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 Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ciclo for anidado

Publicado por Daniel (264 intervenciones) el 22/01/2018 17:10:41
Creo que lo que quieres hacer y lo que hace el codigo es distinto...
Si entiendo bien lo que indicas que quieres hacer es lo siguiente:
Tienes dos secuencias:
La secuencia de valores de "n", que llamaré vn:
vn=[0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380]
La secuencia de valores de "m", que llamaré vm:
vm=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]
y deseas calcular para cada "j" x1=x(j)+w(j) donde x(j)=20*m y w(j)=11+n...
En definitiva agarras el j-esimo elemento de cada secuencia para hacer alguna operación....
Con lo cual vas a obtener tantos resultados como valores hay en tu secuencia (een tu caso 20 resultados).

los 2 ciclos anidados dan 20x20=400 resultados asi que esa no es la forma...

Tienes que tener un solo ciclo de la siguiente manera


1
2
3
4
5
6
7
8
9
10
11
12
clc;  clear;  close all
 
Ccl=20;
vectores1=[];
 vn=0:20:380;
 vm=1:1:20;
for j=1:20
    w=11+vn(j);
    x=vm(j)*Ccl;
    x1=x+w;
    vectores1=[vectores1;x1];
end

Aqui lo dejé escrito de la manera mas parecida a la que lo planteaste... Aunque hay formas mucho mas compactas de escribirlo...

1
2
3
n=0:20:380;
 m=1:1:20;
vectores1=11+n+20*m


Comentanos como te fue

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 352
Ha disminuido 1 puesto en Matlab (en relación al último mes)
Gráfica de Matlab

Ciclo for anidado

Publicado por Ricardo (218 intervenciones) el 22/01/2018 18:44:06
Excelente!!!!!
Muchas gracias.
Funciono.

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