細かいgriddat​aを荒いgridda​taに直す方法

2 vues (au cours des 30 derniers jours)
Hiroki Takeda
Hiroki Takeda le 7 Avr 2022
Modifié(e) : Hernia Baby le 12 Avr 2022
緯度・経度ごとのgriddata(海面水温)があります(sizeは4500×3251の配列です)。
これを,緯度(2°間隔)・経度(5°間隔)の分解能へ粗くして,sizeを90×72の配列にしたいです。
代表となる緯度(2°間隔)・経度(5°間隔)のdataを中心として,その周辺のデータの代表値(平均値)として取り出したいです。
その際に,interp2がいいのか,それとも別な方法があるのか知りたいです。
よろしくお願いいたします。

Réponses (1)

Hernia Baby
Hernia Baby le 7 Avr 2022
interp2 ですと 内挿値をとるので@Hiroki Takeda さんが意図しているものとは違うものができる気がします。
参考になる回答がこちらにありますので、こちら試していただくことをオススメします。
  4 commentaires
Hiroki Takeda
Hiroki Takeda le 12 Avr 2022
ありがとうございます。
実際、下記のようなものを組んでいます。エラーが出てしまいます。どのようにすればよろしいでしょうか。
要は、Bを、緯度(2°間隔、90データ)・経度(5°間隔、72データ)にしたいです。
最終的には、Bをメルカトル図法で描画することをイメージしています。
申し訳ございませんが、ご教示いただけますと幸いです。よろしくお願いいたします。
<変数>
mT, lon, lat 4500×2001
<エラー>
Index in position 2 exceeds array bounds. Index must not exceed 2001.
clear; close;
numfiles = 12;
mydata = cell(1, numfiles);
temp=[];
for k = 1:numfiles
filename = sprintf('../data/2000_%02d_t.nc', k);
Temp = ncread(filename,'water_temp');temp=[temp,Temp];
lon=ncread(filename,'lon');lat=ncread(filename,'lat');
close;
end
lon=repmat(lon,1,size(lat,1));lat=repmat(lat',size(lon,1),1);
temp=reshape(temp,[size(lon,1) size(lon,2) numfiles]);
mT=mean(temp,3); %3Dでmeanを取る。
%% 区画平均を取る
n=size(lon,1); m=size(lon,2); %区画を決めます
n1=90; m1=72; %何分割にするか決めます
step = round([n m]./[n1 m1]);
% cellに格納します
for ii = 1:n1
for jj = 1:m1
A{ii,jj} = mT(step(1)*(ii-1)+1:step(1)*ii,step(2)*(jj-1)+1:step(2)*jj);
end
end
% 区画で平均を取ります
B = cellfun(@(x) mean(x,["all"]),A);
Hernia Baby
Hernia Baby le 12 Avr 2022
Modifié(e) : Hernia Baby le 12 Avr 2022
エラー行は
for ii = 1:n1
for jj = 1:m1
A{ii,jj} = mT(step(1)*(ii-1)+1:step(1)*ii,step(2)*(jj-1)+1:step(2)*jj);
end
end
でしょうか?
であれば、これは丸め方がダメです
round 関数が 28 > m/m1 で計算しているので、このようなエラーが置きます
27 < m/m1 のようにするには fixfloor を使用してください
% step = round([n m]./[n1 m1]);
step = fix([n m]./[n1 m1]);
です

Connectez-vous pour commenter.

Catégories

En savoir plus sur 内挿 dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!