Is there any more effiecient way to implement this?

조회 수: 1 (최근 30일)
Dimitrios
Dimitrios 2014년 10월 18일
편집: per isakson 2014년 10월 18일
Using MATLAB:I have a table of lets say x(size(100x1)),y(size(100x1)) and z(size(100x100)) and i use
z1 = interp2(x,y,z,x1,x2)
to find a scalar value that i need for later calculation. I was wondering if there is a more efficient/quicker way to implement this.scatteredInterpolant function could help? I tried unsuccessfully to implement it with scatteredInterpolant
  댓글 수: 2
per isakson
per isakson 2014년 10월 18일
"find a value" &nbsp should I understand one scalar value?
Dimitrios
Dimitrios 2014년 10월 18일
thanks for the comment.i edit the question.

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

채택된 답변

Mohammad Abouali
Mohammad Abouali 2014년 10월 18일
편집: Mohammad Abouali 2014년 10월 18일
scatteredInterpolant is suitable for cases where your source grid is scattered. If you were able to use interp2 it means that your source grid is not scattered. Although you can still use scattered interpolant, it does not give you any additional benefit.
Here are two approaches:
1) using gridded interpolant:
[XGrid,YGrid]=meshgrid(x,y);
F=griddedInterpolant(XGrid',YGrid',z','cubic');
Then you can query that for any point as follow:
z1=F(x1,x2);
x1,x2 could be scattered points or gridded. If it is gridded it should follow NDGrid format.
2) Using Scattered Interpolant:
[XGrid,YGrid]=meshgrid(x,y);
F=scatteredInterpolant(XGrid(:), YGrid(:),z(:));
Then you can query that for any point as follow:
z1=F(x1,x2);
  댓글 수: 1
Dimitrios
Dimitrios 2014년 10월 18일
thank you for ur reply.
Tried both approaches.I just changed the cubic to spline.Output value is almost similar(offcurse i didnt expect exactly the same result).I just post the results of computational time:
Interpolation: 5.18sec
griddenInterpolant: 4.8sec
scatteredInterpolant: 10.1sec

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

추가 답변 (1개)

per isakson
per isakson 2014년 10월 18일
편집: per isakson 2014년 10월 18일
If linear is good enough as you indicate in the question (default of interp2).
My approach to a similar performance problem included
  • avoid the function call. The call itself takes longer than the computation (of a scalar)
  • a few lines of code, which do the interpolation, directly in the "calling" code.

카테고리

Help CenterFile Exchange에서 Interpolation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by