Una carpeta diferente teledetección imágenes al mismo tiempo, hay LST NDVI, reflectividad, y quieren saber el mismo número de estos píxeles, los valores y los valores de fondo están llenando la parte de intersección de la imagen nan representó la imagen de la zona de estudio (ya después de cortar la proporción del vector área de estudio), y la relación de cobertura de diferentes categorías de imágenes de teledetección, el propósito principal es para cubrir el área de la intersección de una variedad de datos para determinar la proporción de recuperación de datos es adecuado para otro día
1 función
La función básica de la estructura
función [de salida lista de parámetros: output1, ..., outptn] = nombre de la función (entrada de tabla de parámetros: INPUT1, ..., inputn) de notas parte función de la parte de cuerpo final
Nombre de la función: nombre del archivo debe ser coherente y m
Nota 1: En caso de que la declaración de retorno de la función, la función saldrá del cuerpo, al final de esta llamada de función;
Nota 2: el cuerpo de la función también puede definir una o varias funciones, llamado subrutina; Nota: Las funciones sólo está presente en el cuerpo principal de la función no existe independientemente; Las funciones pueden ser cualquier función de la posición del cuerpo principal, no afecta ; funciones sólo se pueden llamar la función principal y sub-función en otra función principal en el mismo cuerpo, pero la sub-función de excepción "mango";
Nota 3: Cuando se llama a una función, Matlab nargin dos variables permanentes son el número de entrada y nargout argumentos y argumentos de salida de la función cuando se llama el registro. Mientras el archivo está contenida en la función de estas dos variables se puede saber con exactitud el número de parámetros de salida del archivo de entrada de la función se llama, para determinar cómo se procesa la función.
Las funciones en línea
Permite a los usuarios a las funciones de escritura sencillas sin tener que crear archivos M. sintaxis:
f = inline ( 'expresión funcional', 'variable de 1 "" 2 VARIABLE", ......)
Llamado: y = f (lista de argumentos)
Nota: debe ser la misma lista de argumentos y el orden de línea () define las listas de parámetros orden.
forma en que esta función se define es llamarla como una función interna. Ventaja es que se basa en Matlab numérica cómputo del núcleo, por lo que es rápido y el programa más eficiente. La desventaja es que este método sólo puede ser sustituido en el valor, sustituyendo el símbolo no es compatible, y la función de la derivada, etc., no puede definirse de forma simbólica.
f = inline ( 'x ^ 2 + y' 'x', 'y') z = f (2,3)
función anónima
función en línea anónimo tiene todas las ventajas de la eficiencia y mayor que. La función principal de la función anónima es:
(1) puede ser reemplazado por "una función escrita como documento m- separado";
(2) se puede implementar función de signo operador de asignación;
(3) a ser operado fácilmente con funciones variables.
El formato básico:
f = @ (parámetro 1, parámetro 2, ...) expresión de función
Donde @ es el identificador del operador , el mango puede definir punteros a funciones, identificador de función, puede ser entendida como una función de la "código" para un nombre de función de largo, con la función de "código" en lugar de operación es más conveniente.
@ = F (X, Y) X ^ 2 + y ^ 2; F (2,3)% número 13 es A = 1 :. 5;. B = 5: -1 :. 1;. C = 0,1: 0,1: 0,5; G =@(x,y)x.^2+y.^2+c; G (A, B) como el resultado vector%
argumentos de funciones variables
Re = función add_multi (A, B, C, D) % representa el número de parámetros del nargin IF 4 la nargin ==. Re = A + B + C + D; ELSEIF la nargin == 3. Re = A + B + C; ELSEIF la nargin = 2 = Re = A + B; el otro error ( 'equivocado de entrada'); End
2 multidimensionales Arrays
Las primeras dos dimensiones como una matriz, y la tercera dimensión representa los elementos de la cantidad de páginas o número de hojas .
3 Aplicación
El archivo original:
CLC Borrar todo el INPATH = 'E: \ 1SMAPDATA \ MOD11A1_test \ Categoría \ Igualdad'; carpeta de entrada% contiene subcarpetas diferentes tiempos OUTPATH = 'E: \ 1SMAPDATA \ MOD11A1_test \ Categoría \ areaxls'; relación de salida de la zona% tabla de posiciones xls archivos de la dir = (el INPATH); en nombreAntiguo Cell = (longitud (archivos) -2, 1);% void contiene dos matriz celular hasta que todo el nombre de la subcarpeta para i = 3: longitud (archivos). en nombreAntiguo {i-2} = archivos ( i) .name;% el nombre de la carpeta extraída reorganizado End Tabla = {}; matriz de almacenamiento relación de% de área celular Tabla {1,1} = 'Time'; para I = 1: longitud (nombreAntiguo)% a través de cada subcarpeta subcarpeta = [el INPATH, '\', en nombreAntiguo {I}]; carpeta de archivos = fullfile (subcarpeta);% enumera todas las subcarpetas tiff archivos perc = areaPerc (carpeta de archivos , 208 300);% calculado que atraviesa todas las variables de cada sub-archivo en relación de cobertura función devuelve areaPerc área de carpetas una relación de tiempo de la zona de la matriz celular tabla {i + 1,1} = nombreAntiguo {i};% tiempo de grabación para j = 1: tamaño (perc , 2)% datos de relación de zona de escribir la Tabla 1 + {I, J + PERC 1.} = {2, J};. End IF I% en el primer ciclo 1 cabecera == escritura. campo para J = 1:. tamaño (PERC, 2) {.. 1, J = PERC {+} 1. 1, J} Tabla; Fin Fin Fin writetable (cell2table (Tabla), [OUTPATH, '\', 'areaPerc.xls' ]);% el archivo xls escritura matriz celular
areaPerc función:
PERC = función areaPerc (ImagePath, jjjnum) % areaPerc el Resumen de la esta función va aquí Papel pintado carpeta de archivos% ImagePath al mismo tiempo, hay diferentes tipos de imágenes carpeta de archivos = Fullfile (ImagePath); %% nombre de la imagen y una ruta a un PM2_5 carpeta bajo dirOutput = dir (archivo completo (carpeta de archivos, ) '* tif.');% una carpeta y todos los archivos * .tif nombres de archivo = {} dirOutput.name ';% llamado Cell Tabla = {};% un campo de tipo de datos para . 1 = I: longitud (nombres de archivo) filepath = [ImagePath, '\', los nombres de archivo {I}]; [a, R ^] = geotiffread (filepath);% Nota que leer datos es el formato de la matriz a 'uint16', la formato no puede ser negativa o NaN3 MID = strsplit (nombres de archivo {I}, ''); {. 1, I} tabla = {2} MID;% podría ser mejorada la tabla {2, i} = ( Numel (A) -numel (encontrar (isnan (a)) )) / jjjnum;% TIFF presentar una relación de valor válido a = doble (a); B (:,:, I) = a;% crear matrices multidimensionales Fin % de la matriz tridimensional B es atravesada [m, n] = tamaño ( A); 0 = Valid; para i = 1:. M . Para J = 1: n- C = B (I, J, :); IF Numel (Encontrar (isNaN (C))) == 0% m-ésima fila de cada dimensión n columnas son valor no válido válido válido = + 1;. End End End allprc = válido / jjjnum; Tabla {. 1, la longitud (nombres de archivo)} = hecho +1 'INTERSECT'; tabla {2, la longitud (nombres de archivo)} = hecho +1 allprc ; PERC = Tabla; End
Los resultados son los siguientes:
posteriormente se determina si la inversión es más adecuado de acuerdo con la proporción de la Intersección.
referencia:
https://zhuanlan.zhihu.com/p/25530879
https://ww2.mathworks.cn/help/matlab/ref/struct.html estructura https://blog.csdn.net/jxlijunhao/article/details/18048359
https://ww2.mathworks.cn/help/matlab/math/multidimensional-arrays.html multidimensional arrays