如何用Matlab循环读文件名

比如有一组文件名是abcdefg20100101到abcdefg20141231,相当于2010年到2014年每天一个文件,如何写个循环读其中20121201到20130301的文件进行处理,就每次有一个filename=其中一天的文件名

写了一下主要部分代码(很久没用matlab了,可能会有语法错误,但是逻辑是没问题的,注释写的比较细,有问题的话你可以自己修改一下),代码如下:



%2012120120130301
for yy = 2012:2013
    stmon = 1 %如果年份不是2012年,月从1月开始
    if yy == 2012 %如果年份是2012年,月从12月开始
        stmon = 12        
    end

    endmon = 12 %结束月份
    if yy==2013
        endmon = 1 %如果年份是2013年,月到1月结束
    end

    for mon = stmon:endmon
        flag = 0 %闰年标志 0表示不是闰年
        if ((rem(yy, 100)~= 0 && rem(yy, 4) == 0) || (rem(yy, 100) == 0 && rem(yy, 400) == 0))
            flag = 1
        end

        endday = 31 %默认每个月31if (mon==2 && flag==0)
            endday = 28
        else if (mon==2 && flag==1)
            endday = 29
        else if( (mon==4) || (mon==6) || (mon==9) || (mon==11))
            endday = 30
        else
            endday = 31
        end

        if((yy==2013) && (mon==3)) %到20130301结束
            endday=1
        end

        for day=1:endday
            filename ='abcdefg' %文件名前缀
            stryear=num2str(yy) % 年转成字符串
            filename = strcat(filename,stryear) %拼接年到文件名
            strmon = num2str(mon,'%02d') %月转字符串,长度为2,不足2位前面补0,比如3月转成字符串是03
            filename = strcat(filename,strmon) %拼接月到文件名
            strday = num2str(day,'%02d') %日转字符串
            filename = strcat(filename,strday) %拼接日到文件名  至此,得到整个文件名

            %此处开始读文件的操作,最好先判断文件是否存在

        end %最内层for循环结束

    end  %第二层for循环结束

end %最外层for循环结束



您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632