2017-08-18 5 views

Antwort

0

Nehmen wir an, Sie die Daten in als Zahlenwerte lesen

Jetzt haben Sie einige Matrix wie so:

data = [20130928 0 21.1 50.0 
     20130928 600 22.2 50.3 
     20130928 1200 23.3 50.6 
     20130928 1800 24.2 50.6]; 

Um die ersten beiden Spalten zu datetime Werte zu umwandeln, könnten wir tun dies:

% Concatenate first two columns, including making all times 4 digits by 0 padding 
fulltime = [num2str(data(:,1)), num2str(data(:,2), '%.4u')] 
% Use datetime to convert (cell) times to dates with given format 
dates = datetime(cellstr(fulltime),'inputformat', 'yyyyMMddHHmm'); 

>> dates = 28-Sep-2013 00:00:00 
      28-Sep-2013 06:00:00 
      28-Sep-2013 12:00:00 
      28-Sep-2013 18:00:00 

Jetzt w e kann leicht interpolieren. Erste create an array of times wir verwenden möchten:

% Data value every 30 mins 
interpdates = dates(1):hours(0.5):dates(end) 

Dann sehr viel Danke

interpolateddata = interp1(dates, data(:,3:4), interpdates); 
>> interpolateddata = 21.1000 50.0000 
         21.1917 50.0250 
         21.2833 50.0500 
         21.3750 50.0750 
         ... 
         24.1250 50.6000 
         24.2000 50.6000 
+0

interp1 verwenden. es war sehr nützlich! – Aviad

+0

Betrachten Sie die Antwort Kennzeichnung als angenommen, wenn es Ihnen geholfen – Wolfie

+0

ich glücklich sein würde, es zu tun. Wie wird es gemacht? – Aviad

Verwandte Themen