Plot time series with irregular intervals and interpolate at regular intervals
9 次查看(过去 30 天)
显示 更早的评论
Hello all,
I have a matrix which contains data in this format: [ Date Time(HHMMSS) Price ]
2 70052 40.175
2 70214 40
2 70249 40
2 70347 40
2 70400 40
I want to be able to plot this as a time series as is, and then do linear interpolation for some interval (e.g. 15 mins) to get a reduced matrix. How may I be able to do this? I tried plotting the 3rd column but it becomes equally spaced 1 second intervals.
Thank you,
0 个评论
回答(1 个)
Jonathan Epperl
2012-11-11
You plot minutes vs. price by running (Assuming your data is in the variable M)
plot(M(:,2),M(:,3));
With regards to the interpolation you need to be a little more specific. You fit the best (in the least-squares sense) straight line to your data by running
r = [M(:,2) ones(size(M,1),1)]\M(:,3)
% Check v your Data
plot(M(:,2),M(:,3),'kx',M(:,2),r(1)*M(:,2)+r(2),'r');
legend('Data', 'Linear Interpolation')
so that r(1) is the slope, r(2) the intercept of the line.
9 个评论
Walter Roberson
2012-11-11
The code I gave converts everything to seconds, not to minutes/seconds. You need continuous ranges in order to interpolate. The serial date format such as is returned by datenum is fine for interpolation.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Dates and Time 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!