Matlab - Generar matriz de seguimiento de bucle anidado for

 
Vista:

Generar matriz de seguimiento de bucle anidado for

Publicado por esm (8 intervenciones) el 30/06/2012 20:53:14
Buenas tardes, planteo la sigiuente pregunta a ver si alguien me puede ayudar:

Estas líneas de comando forman parte de un programa que permite determinar, en función de la cota (valor Z) proporcionada como dato, los correspondientes valores de X e Y para coordendas UTM, sabiendo que la cota ha sido obtenida para un mallado cuadricular de 100 m.

La matriz Z obtenida como dato esta constituida por 510 filas (Referidas a variaciones de Y) y 500 columnas (Referidas a las variaciones de X) en intervalos de 100 m. Toda la obtención de datos ha sido realizada a través de una entrada por archivo .dat de la matriz COTAS y dos bucles for anidados, tal como se muestra:

%Creacion de coordenadas X, Y y Z para todos los puntos del fichero:

x0=415900;
y0=3066900;
coor=zeros(255000,3);
for i=1:510
y(i)=y0+(i*100);
for j=1:500
x(j)=x0+(j*100);
yy(j)=y(i);
z(j)=cotas(i,j);
end
end

El problema aparece a la hora de crear una matriz que me permita almacenar la coordenada X correspondiente a la iteración i en la posición j, y lo mismo con "y" y "z" constituida esta por 255000 filas (510*500 pixel de resolución de la imagen) y 3 columnas (Correspondientes a X, Y y Z). He tratado de resolverlo con un

%coordenadas(i)=[x(j) yy(j) z(j)]; pero me dice que las dimensiones de i y j son diferentes

Estaría muy agradecido si alguien me pudiese ayudar pues estoy trabado en un paso que a priori parece sencillo pero vamos ... que llevo ya 3 dias y no avanzo! 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

Generar matriz de seguimiento de bucle anidado for

Publicado por esm (8 intervenciones) el 30/06/2012 22:28:04
Por si no me he explicado muy bien, lo que quiero obtener es una matriz en la que aparezca los resultados de X, Y y Z para cada iteración, es decir, para la iteración i=1 voy a obtener 500 valores de X, Y y Z (Dado que j=500). Por tanto, la matriz resultante tendrá que disponer de disponer de los 500 resultados para cada variable en las 510 iteraciones.

Un saludo
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

Generar matriz de seguimiento de bucle anidado for

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 30/06/2012 22:33:02
Tu pregunta nose entiende.
Porque no pones un ejemplo muy concreto con pocos elementos y lo desarrollas manualmente, sin usar matlab, para poder comprender mejor tu pregunta.

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
[email protected]

http://matlabcaballero.blogspot.com
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

Generar matriz de seguimiento de bucle anidado for

Publicado por esm (8 intervenciones) el 01/07/2012 12:52:03
Bien, dispongo de una matriz de 510 filas y 500 columnas a la que he denominado "cotas". Esta matriz de cotas se obtienen para un valor de X y un valor de Y que oscila en intervalos de 100 uds. Una fila representa las variaciones de X manteniendo constante la Y y en consecuencia, una columna representa una variación de Y para una X constante.

Lo que quiero determinar, conociendo los valores iniciales de X0 e Y0 es una matriz a la que le llamo "coordenadas" la cual dispone de cada punto de coordenadas (510*500) filas y 3 columnas, donde se representa el valor de X, Y y Z para cada punto.

El código desarrollado anteriormente hace lo siguiente:

para la iteración i=1 determina el valor de Y en función del valor de Y0 (Es decir, empezamos la iteración en la fila 1 donde Y se mantiene constante). A continuación entramos en el segundo bucle for y calculamos los valores de X y de Z para cada iteración j. Por tanto:

Para i=1 se obtiene y=3067000. Entra en el segundo bucle y determina para j=1 (dado que i=cte=1) el valor de X, siendo X=416000 y Z=al valor existente en la fila 1 y columna 1 del fichero de entrada "cotas". Esta iteración se repite desde j=1:500 y aquí es donde aparece el problema. En estos momentos quiero almacenar en una matriz "coordenadas" los 500 valores de X, Y y Z para i=1 y realizar este proceso hasta i=510. De esta forma, por cada i obtenemos 500 valores de X, Y y Z que quiero almacenar en una matriz. Para esto, terminado el segundo bucle for he aplicado la sigiuente ecuación:

coordendas(i)=[x(j) yy(j) z(j)];

Sin embargo, esto me plantea problemas dado que el matlab reconoce exclusivamente un valor para i de j, mientars que yo tengo 500 valores de j para i=1. Me gustaría me pudiesen ayudar a construir esta matriz de forma que me sea capaz de almacenar los 500 valores en cada iteración, por lo que, como se dijo anteriormente, obtendré (500*510) filas (500 valores para x=cte y 510 valores para y=cte)
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