比如有一组文件名是abcdefg20100101到abcdefg20141231,相当于2010年到2014年每天一个文件,如何写个循环读其中20121201到20130301的文件进行处理,就每次有一个filename=其中一天的文件名
2条回答 默认 最新
- 技术专家团-小桥流水 2022-05-13 09:56关注
写了一下主要部分代码(很久没用matlab了,可能会有语法错误,但是逻辑是没问题的,注释写的比较细,有问题的话你可以自己修改一下),代码如下:
%20121201到20130301 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 %默认每个月31天 if (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循环结束
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
- ¥20 怎么用dlib库的算法识别小麦病虫害
- ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
- ¥15 java写代码遇到问题,求帮助
- ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?