Matlab迭代文件夹中的文件,并检查文件名是否具有特定字符

时间:2015-10-06 22:05:33

标签: matlab loops filenames netcdf

我有一些相同维度的气候数据文件(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

有人可以帮我完成这段代码吗?

由于

1 个答案:

答案 0 :(得分:2)

根据我的理解,ncFile包含文件列表,你想根据文件名区分某些文件?

如果你想要这样做,你可以这样做:

ncFile = data(1).name 
result = findStr(ncFile, 'desired file name') 

然后检查结果是否为空(您可以使用isempty)。如果结果为空,则ncFile不是您要查找的内容。