3

分析: つまり、スキャトロメータ データを使用して森林破壊率を探しています。これを行うには、すべてのデータ (941 個の .sir ファイル) を配列にロードする必要があります。各 .sir ファイルは 4 日間のデータを表します。次に、この配列を使用して平均と標準偏差を見つけます。植生の変化を検出するには、季節平均を決定して除去する必要があります。次に、データの標準偏差を推定し、地域の標準偏差に関連するしきい値を使用して、特定の年に大きな変化がある (標準偏差が高い) 地域を特定します。これらの地域は、森林伐採に関連している可能性がある大きな変化の地域です。高しきい値は、海を削除することです。低い値が重要です。確実に変化を確認するには、標準偏差の 3 倍より大きくなければなりません。

問題/問題: 7 つのデータ ファイル (28 日なので約 1 か月) を平均して配列に格納する方法がわかりません。

目標: 各月 (7 ~ 8 個の .sir ファイル) の平均値の差を取得し、これらの値を比較のために配列に格納します。

例

これをしようとしています:

1) 3D マトリックス/配列を設定します。配列を事前に割り当てます。カウンタ変数を設定します。7 番目のファイル (たとえば、names(1:7:end)) を循環し、カウンターを 3 番目の次元のインデックスとして使用してマトリックスに挿入し
ます。
カウンター = カウンター + 1;

コード全体は実際には次のようになります。

%monthly avg test
%N=floor(length(fname)/7);
%dayv = zeros(7,x2-x1+1,y2-y1+1);
%for i=1:N
  %tmp2=zeros(size(tmp));
  %M=min(7,length(fname)-((N-1)*6+1));
  %for j=1:M
    %ii=j+(i-1)*7;
    %tmp = loadsir(fname(ii).name);
    %tmp2=tmp2+tmp/M;


x1=495;
x2=600;
y1=394;
y2=501;

meanArray = zeros(1,941);
fname = dir('*sir');
[tmp, head] = loadsir(fname(1).name);
dayh = zeros(length(fname),x2-x1+1,y2-y1+1);

%use temporary array to simplify 3d array creation
for i=1:length(fname)
   tmp = loadsir(fname(i).name);
   dayh(i,:,:) = tmp(x1:x2,y1:y2);
end

% create mean and standard deviation images
av=squeeze(mean(dayh,1));
st=squeeze(std(dayh,1));

%store means into an array
meanArray(:,:) = av;

% display mean image
figure(1)
imagesc(av)
colorbar;

% display std image
figure(2)
imagesc(st)
colorbar;

% High threshold = bad data
ThresH=0.35;
% Low threshold = area of significant change
thresL=st*3;

% create copy of mean image
img=av;
% apply threshold
ind= st>ThresL & st <ThresH;
img(ind)=0; % set to high value to make more visible
ind=find(st>=ThresH);
img(ind)=-30; % discard very high variance areas

% display image with significant change indicated
figure(3)
imagesc(img)
colorbar;

助けてくれる人がいたら、gtalk に私を追加してください: exzacklyright@gmail.com 来週の月曜日までにプレゼンテーションをセットアップする時間があるので、できれば金曜日までにこれを終わらせる必要があります。

4

0 に答える 0