2017-08-18 2 views
-1

J'ai un fichier CSV qui contient les coordonnées de l'emplacement de l'ouragan. Je suis nouveau à Matlab, donc je ne suis pas sûr de savoir comment traiter correctement les cellules de date et d'heure, surtout lorsqu'elles sont affichées de façon non conventionnelle.Comment implémenter l'interpolation linéaire dans Matlab - Coordonnées et dates

Je dois appliquer une interpolation linéaire pour que je puisse obtenir la date toutes les 30 minutes.

enter image description here

Répondre

0

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 
+0

Merci beaucoup. c'était très utile! – Aviad

+0

Envisager de marquer la réponse comme acceptée si elle vous a aidé – Wolfie

+0

Je serais heureux de le faire. Comment est-il fait? – Aviad