در بسیاری از موارد نیاز بدان است که داده های روزانه یا ماهانه به صورت سری زمانی درآیند. در واقع معمولا داده ها به صورت جدولی ارائه می شوند که در ستون ها شماره روز و در سطرها شماره ماه قرار دارد. با این حال اگر چند سال داده و چند ایستگاه در یک فایل وجود داشته باشد، تبدیل به سری زمانی پیوسته داده ها کاری بسیار مشکل و طاقت فرسا است. در اینجا یک نمونه از نحوه کار با حجم زیاد داده های بارانسنجی در محیط MATLAB ارائه شده است.


فایل Prcip2.xls به عنوان ورودی در نظر گرفته شده است. این فایل مجموعه ای از داده های روزانه بارش در حدود 80 ایستگاه بارانسنجی و طی سال های مختلف است. با استفاده از کدهای ذیل به راحتی این مقادیر به سری های زمانی پیوسته روزانه بارش در هر ایستگاه تبدیل می شوند. در واقع خروجی این کدها فایل Excel به نام Time series results است که هر صفحه از آن (sheet) اطلاعات سری زمانی هر ایستگاه قرار دارد. البته اجرای کامل این برنامه حدود 5 دقیقه زمان نیاز دارد.

 

کد MATLAB برای تبدیل به سری زمانی حجم زیاد داده های بارانسنجی

 

clc

clear

[~, ~,totl] = xlsread('Prcip2'); % read the base data from excel

 

Stat_name = unique(totl(2:end,5)); % the names of raingauge stations

 

for ii = 1:numel(Stat_name)

f1 = find(strcmp(totl(:,5),Stat_name{ii})); 

DataSt = totl(f1,:);% the data in each station

Years = unique(cell2mat(DataSt(:,3)));% the years of data in current station

Tot_data = [];

for jj = 1:numel(Years)

f2 = find(cell2mat(DataSt(:,3)) == Years(jj));

 

Data_year2 = reshape(DataSt(f2,18:-1:7),[],1);

Years2 = [repmat(Years(jj),numel(f2),6),...

repmat(Years(jj)+1,numel(f2),6)];

Days = repmat(cell2mat(DataSt(f2,6)),1,12);% create days

Months = repmat([7:12,1:6],numel(f2),1);% create months

Tot_data_yrar = [Years2(:),Months(:),Days(:),cell2mat(Data_year2)];% time series data

Tot_data_yrar(Tot_data_yrar(:,2) > 6 &...

Tot_data_yrar(:,3) == 31 ,:) = [];% autumns and winter data in days 31 are removed

Tot_data = [Tot_data;Tot_data_yrar];

end

 

xlswrite('Time series results',Tot_data,Stat_name{ii})% write data of staion data in sheet of excel Time series results

 

end

 

Attachments:
Download this file (Tabdil_seri_zamani_MATLAB.rar)Tabdil_seri_zamani_MATLAB.rar[ ]4815 kB