我有以下代码:
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.
感谢您的帮助!!!
答案 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