Read every file in a folder

6 ビュー (過去 30 日間)
Valerio Gianforte
Valerio Gianforte 2020 年 2 月 24 日
コメント済み: Stephen23 2020 年 2 月 25 日
Hi everyone,
I should read and make more operation on the files inside in a folder. What's the faster method? Thanks.
file = 'ww3_outf_198501.nc';
ncdisp(file);
lon = ncread(file,'x');
lat = ncread(file,'y');
H_s = ncread(file,'Hs');
T_m = ncread(file,'Tm');
D_m = ncread(file,'Dm');
time1 = ncread(file,'time1');
time2 = ncread(file,'time2');
buoy_lat = 39.51;
buoy_lon = -0.30;
S_lat = abs(buoy_lat - lat);
S_lon = abs(buoy_lon - lon);
F_lat = find(S_lat == min(S_lat));
F_lon = find(S_lon == min(S_lon));
Lat_1 = lat(F_lat);
Lon_1 = lon(F_lon);
if (buoy_lat > Lat_1);
PLat = find(lat == Lat_1);
PLat_1 = PLat + 1;
Lat_2 = lat(PLat_1);
else
PLat = find(lat == Lat_1);
PLat_1 = PLat - 1;
Lat_2 = lat(PLat_1);
end
if (buoy_lon > Lon_1)
PLon = find(lon == Lon_1)
PLon_1 = PLon + 1
Lon_2 = lon(PLon_1)
else
PLon = find(lon == Lon_1)
PLon_1 = PLon - 1
Lon_2 = lon(PLon_1)
end
Hs1(1,:) = H_s(PLon,PLat,:);
Hs2(1,:) = H_s(PLon_1,PLat_1,:);
Hs3(1,:) = H_s(PLon_1,PLat,:);
Hs4(1,:) = H_s(PLon,PLat_1,:);
Hs1 = (Hs1(1,:)).';
Hs2 = (Hs2(1,:)).';
Hs3 = (Hs3(1,:)).';
Hs4 = (Hs4(1,:)).';
DLon = Lon_2 - abs(buoy_lon);
DLat_2 = buoy_lat - Lat_2;
DLat_3 = Lat_1 - buoy_lat;
d2 = sqrt(DLon^2 + DLat_2^2);
d3 = sqrt(DLon^2 + DLat_3^2);
prod_sum = (Hs2 * d2) + (Hs3 * d3);
sum_d = d2 + d3;
Hs_buoy = prod_sum / sum_d;
Tm1(1,:) = T_m(PLon,PLat,:);
Tm2(1,:) = T_m(PLon_1,PLat_1,:);
Tm3(1,:) = T_m(PLon_1,PLat,:);
Tm4(1,:) = T_m(PLon,PLat_1,:);
Tm1 = (Tm1(1,:)).';
Tm2 = (Tm2(1,:)).';
Tm3 = (Tm3(1,:)).';
Tm4 = (Tm4(1,:)).';
prod_sum = (Tm2 * d2) + (Tm3 * d3);
sum_d = d2 + d3;
Tm_buoy = prod_sum / sum_d;
Dm1(1,:) = D_m(PLon,PLat,:);
Dm2(1,:) = D_m(PLon_1,PLat_1,:);
Dm3(1,:) = D_m(PLon_1,PLat,:);
Dm4(1,:) = D_m(PLon,PLat_1,:);
Dm1 = (Dm1(1,:)).';
Dm2 = (Dm2(1,:)).';
Dm3 = (Dm3(1,:)).';
Dm4 = (Dm4(1,:)).';
prod_sum = (Dm2 * d2) + (Dm3 * d3);
sum_d = d2 + d3;
Dm_buoy = prod_sum / sum_d;
time_1 = single(time1);
time_2 = single(time2);
Data_matrix = [time_1 time_2 Hs_buoy Tm_buoy Dm_buoy];
x = time1;
y = Hs_buoy;
plot(x,y,'--ro');
xlabel('time1');
ylabel('Hs');
title('trend of significant wave height');
nameFile = 'Data.mat';
save(nameFile, 'Data_matrix');

回答 (1 件)

Bob Thompson
Bob Thompson 2020 年 2 月 24 日
To get information on all the files in a folder use dir, or getdir. From there, just loop through the elements of the dir output and conduct your desired operation on each.
  2 件のコメント
Valerio Gianforte
Valerio Gianforte 2020 年 2 月 25 日
Sorry, this is the first time that I use Matlab, can you text me the code that I should to write? Thanks
Stephen23
Stephen23 2020 年 2 月 25 日

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeRF Propagation についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by