我有一些相同维度的气候数据文件(netcdf)。
例如: agg_humidity_bc_historical_1980_2001.nc
agg_humidity_bc_future_2020_2040.nc
agg_wind_bc_historical_1980_2001.nc
agg_precipitation_bc_future_2020_2040.nc
.....
我在MATLAB中有一个程序从每个文件中提取特定的数据点。我想遍历所有文件,检查文件名中的变量名称,例如湿度,风,降水等,并根据变量提取数据。然后我想将这些提取的值存储到具有相同名称的nc文件的csv文件中,例如:
agg_humidity_bc_future_2020_2040.csv
agg_wind_bc_historical_1980_2001.csv
agg_precipitation_bc_future_2020_2040.csv
这是我现在的代码。
mkdir test
data=dir('*.nc');
for i=1:length(data)
ncFile=data(i).name
??? How to check which variable is in the ncFile?
%%Got the index of the location of
LonInd=22;
LatInd=10;
if variable=humidity
SH=ncread(ncFile,'humidity',[LonInd, LatInd, 1], [1 1 inf]);
SH=squeeze(SH);
fid = fopen(['test\' ncFile.csv],'w');
fprintf(fid,%d,SH)
else if variable=wind
wind=ncread(ncFile,'wind',[LonInd, LatInd, 1], [1 1 inf]);
wind=squeeze(wind);
fid = fopen(['test\' ncFile.csv],'w');
fprintf(fid,%d,wind)
fid = fclose(fid);
fid = fclose(fid);
else if variable=wind
precipitation=ncread(ncFile,'precipitation',[LonInd, LatInd, 1], [1 1 inf]);
precipitation=squeeze(precipitation);
fid = fopen(['test\' ncFile.csv],'w');
fprintf(fid,%d,precipitation)
fid = fclose(fid);
end
有人可以帮我完成这段代码吗?
由于
答案 0 :(得分:2)
根据我的理解,ncFile包含文件列表,你想根据文件名区分某些文件?
如果你想要这样做,你可以这样做:
ncFile = data(1).name
result = findStr(ncFile, 'desired file name')
然后检查结果是否为空(您可以使用isempty
)。如果结果为空,则ncFile不是您要查找的内容。