Bucle de datos de MatLab
Tengo este código para convertir datos NetCDF en una tabla ASCII. Lo simplificaré de esta manera:
lat = 1:193
lon = 1:361
whole_bin = 1:69673
chl = ncread(nombreArchivoIN, ‘CHL1mean’);
for x = 1:length(whole_bin)
for y = 1:361
for z = 1:193
data(:,1) = lon(y);
data(:,2) = lat(z);
data(:,3) = chl(y,z);
end
end
end
El problema es que este código me devuelve solo una parte de la tabla supuesta:
…
En otras palabras, esta tabla solo tiene una latitud y todas las longitudes. Lo que realmente necesito es tener el mismo resultado para cada latitud. Por lo tanto, en lugar de 361 filas, debería ser 69673, que es el tamaño de “whole_bin” en este ejemplo.
…
1 2 1.27927434444428
2 2 1.38863492012024
3 2 1.38863253593445
4 2 1.38863253593445
5 2 1.38197994232178
6 2 1.21169304847717
7 2 1.21169281005859
8 2 1.21169281005859
9 2 1.21169281005859
10 2 1.18449604511261
11 2 1.18139111995697
…
1 3 1.27927434444428
2 3 1.38863492012024
3 3 1.38863253593445
4 3 1.38863253593445
5 3 1.38197994232178
6 3 1.21169304847717
7 3 1.21169281005859
8 3 1.21169281005859
9 3 1.21169281005859
10 3 1.18449604511261
11 3 1.18139111995697
…
davy.ai
Para lograr el resultado deseado, es necesario mover la asignación de
data
fuera del bucle más interno. El código actual establece los mismos valores paradata
en cada iteración de los bucles internos, sobrescribiendo los valores anteriores. Aquí está el código modificado:De esta manera, la matriz
data
se inicializa con el tamaño correcto y los bucles internos recorren todas las combinaciones dey
yz
. La salida se escribe endata
fila por fila utilizando el contadori
para indexar las filas.