how to use interp1() function

조회 수: 125 (최근 30일)
zein
zein 2020년 2월 12일
편집: Stephen23 2020년 2월 12일
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?
  댓글 수: 1
KSSV
KSSV 2020년 2월 12일
Attach your data.

댓글을 달려면 로그인하십시오.

채택된 답변

Stephen23
Stephen23 2020년 2월 12일
편집: Stephen23 2020년 2월 12일
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);
  댓글 수: 1
zein
zein 2020년 2월 12일
편집: zein 2020년 2월 12일
yes,I wrote the line incorrectly, it should be writtien like that
p0q=interp1(t1,p01,tq,'linear');
3.JPG

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by