Function to interpolate in a plane using a cubic spline


SUBMITTED BY: davalillocm

DATE: May 12, 2022, 4:37 p.m.

UPDATED: May 13, 2022, 12:44 a.m.

FORMAT: Text only

SIZE: 2.3 kB

HITS: 446

  1. function [z]=BICUBICINTERPOL(xdata,ydata,zdata,dxdata,dydata,dxdydata,x,y)
  2. %BICUBICINTERPOL function perform a bicubic interpolation along the plane
  3. % xy for the underlying function z at data point with coordinates x and y.
  4. % The dxdata represents the partial derivatives of the underlying function
  5. % at points on xdata and ydata, dydata represents the partial derivatives
  6. % of the underlying function at points on xdata and ydata, and dxdydata are
  7. % the cross double derivatives at the same points.
  8. % Data values on xdata, ydata and zdata must surround xy point.
  9. % BICUBICINTERPOL perform extrapolations as well.
  10. %
  11. %
  12. % (x4,y4) (x3,y3)
  13. % (0,1) * -------------- * (1,1)
  14. % | |
  15. % | |
  16. % | * |
  17. % | (x,y) |
  18. % | |
  19. % (0,0) * -------------- * (1,0)
  20. % (x1,y1) (x2,y2)
  21. %
  22. %
  23. % xdata=[x1,x2,x3,x4]
  24. % ydata=[y1,y2,y3,y4]
  25. % zdata=[z1,z2,z3,z4]
  26. % x1=x4
  27. % x2=x3
  28. % y1=y2
  29. % y3=y4
  30. % dxdata=[dx1,dx2,dx3,dx4]
  31. % dydata=[dy1,dy2,dy3,dy4]
  32. % dzdata=[dz1,dz2,dz3,dz4]
  33. % dxdydata=[dxdy1,dxdy2,dxdy3,dxdy4]
  34. %
  35. %
  36. %
  37. EX=(x-xdata(1))/(xdata(2)-xdata(1));
  38. EY=(y-ydata(2))/(ydata(3)-ydata(2));
  39. F1=((-1+EX)^2)*(1+2*EX)*((-1+EY)^2)*(1+2*EY);
  40. F2=(-EX^2)*(-3+2*EX)*((-1+EY)^2)*(1+2*EY);
  41. F3=(EX^2)*(-3+2*EX)*(EY^2)*(-3+2*EY);
  42. F4=-((-1+EX)^2)*(1+2*EX)*(EY^2)*(-3+2*EY);
  43. F5=((-1+EX)^2)*(EX)*((-1+EY)^2)*(1+2*EY);
  44. F6=(-1+EX)*(EX^2)*((-1+EY)^2)*(1+2*EY);
  45. F7=-(-1+EX)*(EX^2)*(EY^2)*(-3+2*EY);
  46. F8=-((-1+EX)^2)*(EX)*(EY^2)*(-3+2*EY);
  47. F9=((-1+EX)^2)*(1+2*EX)*((-1+EY)^2)*EY;
  48. F10=-(EX^2)*(-3+2*EX)*((-1+EY)^2)*EY;
  49. F11=-(EX^2)*(-3+2*EX)*(-1+EY)*(EY^2);
  50. F12=((-1+EX)^2)*(1+2*EX)*(-1+EY)*(EY^2);
  51. F13=((-1+EX)^2)*(EX)*((-1+EY)^2)*EY;
  52. F14=(-1+EX)*(EX^2)*((-1+EY)^2)*EY;
  53. F15=(-1+EX)*(EX^2)*(-1+EY)*(EY^2);
  54. F16=((-1+EX)^2)*(EX)*(-1+EY)*(EY^2);
  55. z=F1*zdata(1)+F2*zdata(2)+F3*zdata(3)+F4*zdata(4)+...
  56. F5*dxdata(1)+F6*dxdata(2)+F7*dxdata(3)+F8*dxdata(4)+...
  57. F9*dydata(1)+F10*dydata(2)+F11*dydata(3)+F12*dydata(4)-...
  58. F13*dxdydata(1)-F14*dxdydata(2)-F15*dxdydata(3)-F16*dxdydata(4);
  59. end

comments powered by Disqus