clc
clear
datapath='D:\00-19数据代码\00-19\';%输入数据文件夹
savepath= 'D:\00-19数据代码\work0929\data\result\ID\';%输入输出文件夹
%按年月日进行循环,然后提取ID
for year=2000:2019;
if year==2019; %2019数据不全
month_number=9;
else
month_number=12;
end
for month=1:month_number; %月份
month_samlength=num2str(month,'%02d');
if year==2019 & month==9;%2019年数据只有15天
num_day=15;
else
num_day=eomday(year,month); %一个月中的最后一天
for day=1:num_day; %天数
day_samlength=num2str(day,'%02d');
temp_data=load([datapath,num2str(year),'\Daily',num2str(year),month_samlength,day_samlength,'.mat']);
field= fieldnames(temp_data);%fieldnames 返回字符向量元胞数组
temp_data_double=temp_data.(field{1}); %生成一个double数组
vraiables=temp_data.(field{2});%提取变量数据
if month==1 & day==1
ID_data=temp_data_double(:,1);%取一年的第一天的ID数据与其他天数求交集
continue %将控制权传递给for或while循环的下一迭代
end
intersect_id=intersect(temp_data_double(:,1),ID_data);%第一天与每一天的交集
ID_day=intersect_id;
end
end
end
%开始取ID和经纬度
%交集的站点与矩阵再进行求交集
if year<2016 %2017年数据不全,用2015年的数据来代替
[C,ia,ib] = intersect(temp_data_double,ID_day);%ID_day站点顺序赋给ib,按12...排序;站点在temp_data排多少行赋给ia
ID_intersect = temp_data_double(ia,[1,3,4]);%[ID,经度,纬度]
else
load('D:\00-19数据代码\00-19\2015\Daily20150701.mat');
A = ismember(Daily20150701(:,1),ID_day(:,1));%判断ID_day(:,1)的数是否为Daily20150701(:,1)的成员
ID_intersect = Daily20150701(A,[1,3,4]);
end
save([savepath,['ID_',num2str(year)]],'ID_intersect');
end