MATLABは、複数のリモートセンシング画像面積比率の交点を計算します

同時に異なるリモートセンシング画像フォルダA、そこLST NDVI、反射率は、これらの同じ画素数を知りたい、値および背景値がNaNの研究領域(既にの画像を占め画像の交差部に充填されています研究領域ベクトルの割合)、及びリモートセンシング画像の異なるカテゴリーのカバレッジの割合を切断した後、主な目的は、データ検索の割合は別の日に適しているかを決定するために、データの種々の交点のエリアをカバーすることです

1つの機能

基本的な構造関数

関数[出力パラメータリスト:OUTPUT1、...、outptn] =関数名(入力パラメータ表:INPUT1、...、INPUTN)

ノート部分の
機能本体部の

端部

関数名:ファイル名が一貫してメートルにする必要があります

注1:関数のreturn文の場合、この関数は、この関数呼び出しの終わりに身体を終了します。

注2:関数本体はまた、サブルーチンと呼ばれる1つまたはいくつかの機能を定義することができる;注:関数は、関数の本体に存在する独立して存在しない;関数は、本体の位置の任意の関数とすることができ、影響を与えません;機能のみ同じ体内の他の主要な機能の下に主機能と副機能と呼ぶことができるが、サブ機能、「ハンドル」例外。

注3:関数を呼び出すときにレコードを呼び出すときに、Matlabの関数nargin二つの永久の変数を入力し、nargoutは引数と関数の出力引数の数です。限り、ファイルがこの2つの変数の関数に含まれているように正確に機能入力ファイルの出力パラメータの数を知ることができる機能が処理される方法を決定するために、呼び出されます。

インライン関数

これにより、ユーザーはM-ファイルを作成することなく、簡単な関数を書くことができます。構文:

F =インライン( '機能的発現'、「変数1 "" 変数2」、......)

呼ばれる:Y = F(引数リスト)

注:同じ引数リストとインラインの順序()オーダーパラメータリストを定義する必要があります。

この関数が定義されている方法は、内部機能としてそれを呼び出すことです。利点は、それが迅速かつプログラムをより効率的であるので、それは、Matlabの数値計算カーネルに基づいていることです。欠点は、この方法が唯一のシンボルを置換することサポートされていない、及び誘導体、等の機能を象徴的に定義することができない、値に置換することができることです。

F =インライン( 'X ^ 2 + Y'、 'X'、 'Y')

Z = F(2,3)

 無名関数 

 匿名インライン関数は、すべての利点およびより高い効率を有します。無名関数の主な機能は次のとおりです。

(1)「は、別個の文書M-として書き込む機能」に置き換えることができます。

(2)代入演算子記号機能を実現することができます。

(3)を容易に可変機能を作動させます。

基本フォーマット:

F = @(パラメータ1、パラメータ2、...)関数式

ここで、@は、オペレータ・ハンドルで、ハンドルは、関数へのポインタを定義することができる関数ハンドルを、「コード」の関数として理解することができる「コード」機能の代わりに、操作がより便利であると、長い関数名。

@ = F(X、Y)X ^ 2 + Y ^ 2; 
F(2,3)%結果13である

= 1 :. 5 A; 
B = 5:-1 :. 1; 
C = 0.1:0.1:0.5; 
G =@(x,y)x.^2+y.^2+c; 
G(A、B)のベクトル結果%として

変数関数の引数

再= add_multi機能(A、B、C、D) は、関数narginパラメータの数を表し、
IF 4関数nargin ==。
    再= A + B + C + D; 
ELSEIF関数nargin == 3。
    再= A + B + C; 
ELSEIF関数nargin = 2 = 
    再= A + B; 
他の
    エラー( '入力間違った'); 
終了

2つの多次元配列

マトリックスのような最初の二次元、および三次元の要素の表すページ数又は枚数を

3実装

元のファイル:

CLC 
すべてクリア

INPATH = 'E:\ 1SMAPDATA \ MOD11A1_test \カテゴリー\イコール';%入力フォルダにサブフォルダが含まれている異なる時間
OUTPATH = 'E:\ 1SMAPDATA \ MOD11A1_test \カテゴリー\ areaxlsを'; 面積%の出力比XLS位置テーブルは、
DIR =(INPATHを)ファイル; 
OLDNAMEセルに=(長さ(ファイル)-2、1);全てのサブフォルダ名まで、2つの細胞配列を含む%の空隙
Iが= 3:長さ(ファイル)。
    OLDNAMEで{I-2} =ファイル( I).nameの、% 抽出したフォルダ名が再配置
終了
表= {};%面積比ストレージアレイセルラ
表{1,1} = '時間'; 
のためにI = 1:各サブフォルダを介して長さ(OLDNAME)%
    ;サブフォルダ= [OLDNAMEで{I} INPATH、 '\'、] 
    fileFolder = FULLFILE(サブフォルダ)ファイル、TIFF%リストすべてのサブフォルダ    
    のPERC = areaPerc(fileFolder 、208300);%フォルダに面積被覆率areaPerc機能は、細胞アレイの面積の時間比率を返し、各サブファイルのすべての変数を横断計算    
    テーブル{I + 1,1} = OLDNAME {I}を、%の録画時間
    J = 1:サイズ(PERC 、2)%の面積率データを書き込む             
        {I + 1表、PERC = J + {2} 1、J。。}; 
    エンド
    IF I ==最初のサイクルライトヘッダフィールド中の1%。
        J = 1:サイズ(PERC、2)        表{1、J 。PERC 1 = {} + +1、J};         
        エンド
    エンド
    
エンド
writetable(cell2table(表)、[OUTPATH、 '\'、 'areaPerc.xls']);%セルラーアレイライトXLSファイル
areaPerc機能:
PERC = areaPerc機能(のImagePath、jjjnum)
%areaPercこの機能の概要ここでは壁紙行き
%のImagePathファイルのフォルダを同時に異なるタイプの画像がある
fileFolder =フルファイル(のImagePath); %%イメージ名とAフォルダPM2_5へのパス下
(FULLFILE(fileFolder、dirOutput = DIR %; '* TIF')) フォルダおよびファイル.TIFすべて* 
ファイル名= {dirOutput.name}「;%という名前のセル
表= {};%データ・タイプ・フィールド

のために1 = I:長さ(ファイル名)
ファイルパス= [のImagePath、 '\'、ファイル名{I}]; 
[R&LT] = geotiffread(ファイルパス)、データを読み出す%メモ行列A 'uint16の'形式であり、フォーマットは、負またはNaN 3をすることができない
MID = strsplit( ''ファイル名{I}、); 
表{1、I} = {2} MID;%を向上させることができた
テーブル{2、I} =( numelの(A)-numel ((ISNAN())を見つける %;)/ jjjnum) TIFFファイルの有効な値の比
A =ダブル(); 
B(:、:、I)=;%は、多次元配列を作成する
エンド
3次元配列の%をBを横断する 
[M、N] =サイズ( A)。
0 =有効; 
I = 1:M 
    。N-:J = 1 
    、C = B(I、J、:)      
    各次元のIF numelの(検索(ますisNaN(C)))== 0%m行目n列がされていない無効な値が
    有効な有効= + 1; 
    エンド
    エンド
エンド
allprc =有効/ jjjnum; 
表{1、長さ(ファイル名)} = + +1 'INTERSECT'; 
表{2、長さ(ファイル名)} = + +1 allprc ; 
PERC =表; 
エンド

結果は以下のとおりです。

 缶その後反転が交差の割合に応じてより適切であるか否かを判断します。

参考:

https://zhuanlan.zhihu.com/p/25530879

https://ww2.mathworks.cn/help/matlab/ref/struct.html   構造   https://blog.csdn.net/jxlijunhao/article/details/18048359

https://ww2.mathworks.cn/help/matlab/math/multidimensional-arrays.html  多次元配列

 

おすすめ

転載: www.cnblogs.com/icydengyw/p/12453117.html