How to make input size the same as output in interp2
2 views (last 30 days)
Show older comments
Hello all, I have a problem. I have the following scipt to make 2D interpolation of some function fu(x,y) = x^2y-y^2x. There is no problem if both x and y are scalars. However, if I call fuint with x scalar and y row vector for example, the output is column vector. also, if I call fuint with x column vector and y scalar, the output is row vector. see the two lines in which I write comment %-->problem here. The problem is that, quadgk can't integrate @(y) fuint(3,y), because input size is not the same as output. how should I modify this such that the size of the output is the same as input, if either x or y is scalar? Thanx ==========================================
clear all
xcoba = linspace(-5,5,50); ycoba = linspace(-5,5,50);
fu = @(x,y) x.^2.*y - y.^2.*x;
[xgrid,ygrid] = ndgrid(xcoba,ycoba);
fugrid = fu(xgrid,ygrid);
fuint = @(x,y) interp2(xgrid',ygrid',fugrid',x,y,'cubic',NaN);
fuint(1,[2,3,4]) %--> problem here
fuint([2;3;4],1) %--> problem here
quadgk(@(y) fuint(3,y), -3,3)
=======================================
0 Comments
Answers (2)
John Petersen
on 25 Jan 2013
you can make the scalar into an array with
X = x*ones(1,length(y));
0 Comments
See Also
Categories
Find more on Interpolating Gridded Data 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!