绘制两个变量的函数句柄

时间:2014-10-18 17:10:55

标签: matlab function-handle

我有以下代码:

f1_p1 = @(xq1) interp1(x_j1,p1,xq1);
f2_p1 = @(xq2) interp1(x_j2,p1,xq2);
new_p1x1 = @(xq1,xq2) f1_p1(xq1).*f2_p1(xq2);

要简单地绘制f1_p1f2_p2,我会这样做:

fplot(f1_p1, [30,70])

我的问题

如何绘制第二个函数(new_p1x1)?我和以前一样尝试过但是它没有用......(fplot(new_p1x1, [30,70]))我得到了:

Error using @(xq1,xq2)f1_p1(xq1).*f2_p1(xq2)
Not enough input arguments.

感谢您的帮助!!!

1 个答案:

答案 0 :(得分:1)

使用时

fplot(new_p1x1, [30,70])

[30,70] 被视为1x2矩阵,因此仅作为一个参数,而 new_p1x1 需要两个参数。因此你可以调用

new_p1x1(30, 70) # 30 is passed to f1_p1 and 70 to f2_p2

new_p1x1([30,70], [30,70]) # The matrix [30,70] is passed to both function.

我不知道哪种解决方案对您更有用,这取决于您想要的内容。

然而,似乎fplot只接受带有一个参数的函数。所以看来,你必须使用其中一个3D绘图功能。

对于3D绘图,您可以使用例如surf

[x1,~] = fplot(f1_p1, [30,70]); % Returns a useful number of x-values for f1
[x2,~] = fplot(f2_p1, [30,70]); % Returns a useful number of x-values for f2

[X,Y] = meshgrid(x1,x2);

surf(x1,x2,new_p1x1(X,Y)); % x1 (X) is passed to f1, x2 (Y) is passed to f2