# how to use interp1() function

57 views (last 30 days)
zein on 12 Feb 2020
Edited: Stephen23 on 12 Feb 2020
I have tried to use interpt(1) function as i have time and pressure data.
the pressure data is highly scattered it look like that firstly,I have used function : p0q=interp1(p0,tq) as show belows
_____________________________________________________________________________________
t1=t(x1:x2);
p01=p0(x1:x2);
tq=t(x1):0.000001:t(x2);
p0q=interp1(p0,tq);
figure
plot (t1,p01,'o',tq,p0q,'*');
legend('p01','p0q');
_____________________________________________________________________________________
but the poq (interpolated result is empty) as shown in the figure when i change it to
p0q=interp1(p0,tq,'pchip');
the interploted data are incorrect is there something wrong in my code?or i am using the function incorrectly?
KSSV on 12 Feb 2020

Stephen23 on 12 Feb 2020
Edited: Stephen23 on 12 Feb 2020
The problem is that you are using the default x values, which for a vector input are defined as
1:numel(v)
These default points only make sense if you are also requesting interpolation for x>=1 and x<=numel(v), but look at the x points you are requesting interpolation at: judging by your screenshot they are somewhere between 0.06162 and 0.06067. The points you are requesting lie nowhere close to the the input x values (for which you used the default values 1:numel(v), and which iare thus totally unsuitable for your task).
The solution is simple: you need to provide the input x values, i.e.:
p0q = interp1(t1, p0, tq);
zein on 12 Feb 2020
Edited: zein on 12 Feb 2020
yes,I wrote the line incorrectly, it should be writtien like that
p0q=interp1(t1,p01,tq,'linear'); 