2015-10-06 55 views
0

我有一些相同維度的氣候數據文件(netcdf)。Matlab遍歷文件夾中的文件,並檢查文件名是否具有特定字符

例如: 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

http://www.mathworks.com/help/matlab/ref/regexp.html – user3528438

回答

2

隨着我瞭解,NCFILE包含文件的列表中,您要根據文件名來區分特定的文件?

如果這是你想要做他們什麼,你可以這樣做:

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

然後或檢查結果爲空不是(你可以使用isempty)。如果結果爲空,則ncFile不是您要查找的內容。

+0

謝謝,Sushant。這正是我想要的。我會盡力完成代碼,看看它是否正常。 – James

相關問題