Matlab el cálculo de la intersección de múltiples teledetección área de la imagen proporción

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

 

Supongo que te gusta

Origin www.cnblogs.com/icydengyw/p/12453117.html
Recomendado
Clasificación