Matlab - Generar matriz de seguimiento de bucle anidado for
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 También te puede interesar...
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
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 jjcc94@hotmail.com http://matlabcaballero.blogspot.com
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) guide crear directorio |