Reputation: 788
Given the following example is there a way to achieve bicubic interpolation without generating an entire finely-spaced grid?:
years = [5,10,20,25,40];
service = 1:3;
wage = [50 99 787.685
779 795 850
803 779 388
886 753 486
849 780 598];
w = interp2(service,years,wage,1.5,37.5,'cubic')
Warning: The 'cubic' method requires the grid to have a uniform spacing. Switching the method from 'cubic' to 'spline' because this condition is not met.
I understand the reason for the warning. So wish to find a solution by specifying particular points without having to generate an entire equally spaced surface (the data available is not equally spaced). Does not necessarily have to be interp2. I will have to run this for hundreds of surfaces and hundreds of query points so would need to be quite fast at returning "w". Any ideas?
Upvotes: 0
Views: 1313
Reputation: 4195
If you insist on using 'cubic'
interpolation method you can use griddata
which is designated for interpolating scattered data, i.e. data which is not defined on uniform spaced grid:
years = [5,10,20,25,40];
service = 1:3;
wage = [50 99 787.685
779 795 850
803 779 388
886 753 486
849 780 598];
w = griddata(service,years,wage,1.5,37.5,'cubic')
Upvotes: 1