複数のファイルを読み込む方法について

data_2000_0115.nc4,data_2000_0215.nc4,data_2000_0315.nc4,...,data_2000_1015.nc4,data_2000_1115.nc4,data_2000_1215.nc4
data_2001_0115.nc4,data_2001_0215.nc4,data_2001_0315.nc4,...,data_2001_1015.nc4,data_2001_1115.nc4,data_2001_1215.nc4
...があります(1~12月,2000年以降の1ヶ月ごとのnetcdfデータ)。
このように,複数あるファイルを変数だけ取り出して閉じて,またファイルを開けて...という繰り返しを行いたい時にどのようにすればよろしいでしょうか。
numfiles=9;
for k=1:numfiles
filename=sprintf('data_2000_0%d15.nc4',k)
end
上記のままだと%dに入るのが9までしかできず,10~12月のデータを開くことができません。
上記のような形をベースに考えたいと思っていますが,どのようにすればよろしいでしょうか。
よろしくお願いいたします。

 Réponse acceptée

Hernia Baby
Hernia Baby le 7 Avr 2022

0 votes

もしフォルダ内にファイル一式がある場合は
tmp = dir('*.nc4');
fname = {tmp.name};
みたいにすれば名前が一気に取得できると思います。
以下参考になります

4 commentaires

Hernia Baby
Hernia Baby le 7 Avr 2022
Modifié(e) : Hernia Baby le 7 Avr 2022
後の繰り返し処理は操作方法によりますが、cell型なので cellfun で一気に処理するとかですかね
Hernia Baby
Hernia Baby le 7 Avr 2022
ちなみにどうしてもsprintfでやりたいんじゃいって場合は条件分けしてください
numfiles=15;
for k=1:numfiles
if k < 10
filename=sprintf('data_2000_0%d15.nc4',k)
else
filename=sprintf('data_2000_%d15.nc4',k)
end
end
filename = 'data_2000_0115.nc4'
filename = 'data_2000_0215.nc4'
filename = 'data_2000_0315.nc4'
filename = 'data_2000_0415.nc4'
filename = 'data_2000_0515.nc4'
filename = 'data_2000_0615.nc4'
filename = 'data_2000_0715.nc4'
filename = 'data_2000_0815.nc4'
filename = 'data_2000_0915.nc4'
filename = 'data_2000_1015.nc4'
filename = 'data_2000_1115.nc4'
filename = 'data_2000_1215.nc4'
filename = 'data_2000_1315.nc4'
filename = 'data_2000_1415.nc4'
filename = 'data_2000_1515.nc4'
Akira Agata
Akira Agata le 7 Avr 2022
+1
sprintf に若干補足です。
以下のようにすると条件分けしなくてもファイル名を生成することができます。
( %02d は、先頭ゼロパディングで2桁の整数として出力することを表しています)
numfiles = 12;
for k = 1:numfiles
filename = sprintf('data_2000_%02d15.nc4', k)
end
filename = 'data_2000_0115.nc4'
filename = 'data_2000_0215.nc4'
filename = 'data_2000_0315.nc4'
filename = 'data_2000_0415.nc4'
filename = 'data_2000_0515.nc4'
filename = 'data_2000_0615.nc4'
filename = 'data_2000_0715.nc4'
filename = 'data_2000_0815.nc4'
filename = 'data_2000_0915.nc4'
filename = 'data_2000_1015.nc4'
filename = 'data_2000_1115.nc4'
filename = 'data_2000_1215.nc4'
Hiroki Takeda
Hiroki Takeda le 8 Avr 2022
すぐの返信をいただきありがとうございました。無事にできました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur データのインポートと解析 dans Centre d'aide et File Exchange

Produits

Tags

Community Treasure Hunt

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

Start Hunting!