0

我有以下代码:

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_p1并且f2_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.

谢谢你的帮助!!!

4

1 回答 1

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
于 2014-10-18T17:55:25.103 回答