how to extract specific numbers from string?

1 view (last 30 days)
Hi all- I have to access the file name (MERRA2_100.tavg1_2d_slv_Nx.19800101.nc4.nc4) to be able to read the data.
Accordingly, I've created the following code to do that. But the problem is the determination of the substring location (in bold) as it should be varied due to the multiple numbers of files I have. So what I need is to determine the location of the day and month in 19800101.
any help would be appreciated.
for i=1:length(all_files)
tmp = split(fname,'.');
mdate = tmp(3);
mdate = str2double(mdate);
year = round(mdate/10000);
month = round((mdate - (year*10000)));
mm = round(month/100);
dd = round(month - mm*100);
if (dd == iday) && (mm == imon);
filelist(j) = strcat(all_files(i).folder,'/' ,fname);
j = j + 1;

Accepted Answer

Luna on 12 Mar 2020
Hello Lola,
You can convert to datetime object and use the properties like below:
mdate = '19800101';
tmp_date = datetime(mdate,'Format','uuuuMMdd');
Day = tmp_date.Day;
Month = tmp_date.Month;
Year = tmp_date.Year;
I recommend not to use year, month, day as variables they are already built-in functions in Matlab.

More Answers (0)


Find more on Data Type Conversion in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!