How can I interpolate time?
    7 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Jaime De La Mota Sanchis
 le 8 Nov 2021
  
    
    
    
    
    Commenté : Star Strider
      
      
 le 9 Nov 2021
            Hello everyone. 
I have a vector with times called 
tim1_1
, of size 51*1, I also have measurements called 
lam1_1
 made at those times. 
tim1_1
 goes between 0 and 1.737857815507103e+03. Instead of 51 measurements I want to have an arbitrary number, let's say 200. I have tried to write
interpLam1_1R = interp1(tim1_1,lam1_1,1:tim1_1(end)/200:tim1_1(end),'spline');
Unfortunately, if I plot the obtained results, they don't look like the original ones at all. As can be seen in the attached figure, the original data (in blue) looks almost sinusoidal,meanwhile, the interpolated data looks almost as a straight line. 
Can someone please help me with this problem?

0 commentaires
Réponse acceptée
  Star Strider
      
      
 le 8 Nov 2021
        Apparently ‘tim1_1’ is not a datetime array.  
tim1_1 = linspace(0, 1.737857815507103e+03, 51);
lam_1 = sin(2*pi*1E-3*tim1_1);
tim1_2 = linspace(min(tim1_1), max(tim1_1), 200);
lam_1_2 = interp1(tim1_1, lam_1, tim1_2);
figure
plot(tim1_1, lam_1, '.b')
hold on
plot(tim1_2, lam_1_2, '.r')
hold off
grid
legend('Original','Interpolated', 'Location','best')
Experiment to get different results.  
.
2 commentaires
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Interpolation dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


