How to make input size the same as output in interp2

조회 수: 1 (최근 30일)
hanciong
hanciong 2013년 1월 25일
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)
=======================================

답변 (2개)

John Petersen
John Petersen 2013년 1월 25일
you can make the scalar into an array with
X = x*ones(1,length(y));

Jan
Jan 2013년 1월 25일
편집: Jan 2013년 1월 28일
Alternatively:
x = repmat(x, 1, length(y));
or
x = x(ones(1, length(y));

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by