Matlab中的字符或字符串可以以四種類型存在:
char ' ' :num2str() a='******' char()
string " " : string()
cell數組中的元素 cell類型 data(1) 或者 char類型 data{1}
struct結構體數組的字段容器中(.name 'char'類型) 結構體每個字段都可以包含任意類型的數據
文件路徑一般是char類型
如果想創造一個數組來存放時間的話,選擇cell數組比較合適,如果是char類型的話,就不能以數組中的某個元素表示整個的日期字符字段
原始文件:
希望按照tiff文件命名中的時間,如 "2016001",創建以不同時間命名的文件夾,同時將數據按照命名中的時間移動到各時間子文件夾中
完整代碼:
clc clear all time={};%時間設為cell類型 fileFolder=fullfile('E:\1SMAPDATA\NDVIREF2016_2019\06SCALE');%需要分類的tiff文件所在的文件夾 timeFolder='E:\1SMAPDATA\NDVIREF2016_2019\07TIME';%輸出文件夾 dirOutput=dir(fullfile(fileFolder,'*.tif')); fileNames={dirOutput.name}'; for i=1:length(fileNames) time=[time;num2date(fileNames{i}(2:8))];%fileNames{i}(2:8)需要為char類型 %num2date函數將'2016353'轉為'20161218'形式 代碼見https://www.cnblogs.com/icydengyw/p/12448521.html end time=unique(time);%將time矩陣中的重復元素刪去 for i=1:length(time) mkdir([timeFolder,'\'],time{i});%在當前目錄創建文件夾 注意文件夾名字為char類型 end for i = 1:length(time)%遍歷每個時間 for j=1:length(fileNames)%遍歷所有的tiff文件 subTime=num2date(fileNames{j}(2:8)); if strcmp(subTime,time{i}) %截取時間字段進行比較 DSTPATH= [timeFolder ,'\',time{i}]; %%目的時間文件夾目錄,最后可加'\' copyfile([fileFolder,'\',fileNames{j}],DSTPATH); %移動 end end end
結果: