how to use interp1() function
    18 views (last 30 days)
  
       Show older comments
    
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?
Accepted Answer
  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);
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!


