Error using interp1
1 view (last 30 days)
Show older comments
Veerle Kohlen
on 7 Dec 2020
Commented: Star Strider
on 8 Dec 2020
Hi all,
I'm trying to interpolate my data set using interp1.
My data set looks something like:
tympanic.nw1.Time =
'10:04:48'
'10:04:49'
'10:04:50'
'10:04:51'
'10:04:52'
'10:04:53'
tympanic.nw1.Temperature =
35.3000000000000
35.3000000000000
35.4000000000000
35.4000000000000
35.4000000000000
35.3000000000000
35.3000000000000
I used the following code:
% Tympanic Temp
t1 = tympanic.nw1.Time(1,1); t2 = tympanic.nw1.Time(end,1); t = t1:seconds(1):t2; t = t.';
tympanic.nw1.Temperature = interp1(tympanic.nw1.Time, tympanic.nw1.Temperature, t);
tympanic.nw1.Time = t;
Matlab gives the following error: Error using griddedInterpolant. Sample points must be unique and sorted in ascending order. Can someone explain me how to solve this problem? I already tried using the function unique, but that didn't solve my problem.
Accepted Answer
Star Strider
on 7 Dec 2020
Edited: Star Strider
on 7 Dec 2020
Veerle Kohlen —
You likely need to put your data into a timetable array, then use the retime function. That would likely be the easiest way to do it.
Example —
tympanic.nw1.Time = ['10:04:48'
'10:04:49'
'10:04:50'
'10:04:51'
'10:04:52'
'10:04:53'];
tympanic.nw1.Temperature = [35.3000000000000
35.3000000000000
35.4000000000000
35.4000000000000
35.4000000000000
35.3000000000000];
T1 = table(tympanic.nw1.Time, tympanic.nw1.Temperature);
T1.Var1 = datetime(T1.Var1, 'InputFormat','HH:mm:ss', 'Format','HH:mm:ss');
TT1 = table2timetable(T1);
TT1rt = retime(TT1, 'secondly','TimeStep',1);
EDIT — (7 Dec 2020 at 16:36)
Added the example.
2 Comments
More Answers (0)
See Also
Categories
Find more on Interpolation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!