Supposons que vous lisez les données sous forme de valeurs numériques
Maintenant, vous avez une matrice comme ceci:
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];
Pour convertir les deux premières colonnes à datetime
valeurs, nous pourrions faites ceci:
% 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
Maintenant w e peut facilement interpoler. Tout d'abord create an array of times nous voulons utiliser:
% Data value every 30 mins
interpdates = dates(1):hours(0.5):dates(end)
Ensuite, utilisez interp1
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
Merci beaucoup. c'était très utile! – Aviad
Envisager de marquer la réponse comme acceptée si elle vous a aidé – Wolfie
Je serais heureux de le faire. Comment est-il fait? – Aviad