【问题标题】:Plotting a function handle of two variables绘制两个变量的函数句柄
【发布时间】:2014-10-18 17:10:54
【问题描述】:

我有以下代码:

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.

感谢您的帮助!!!

【问题讨论】:

    标签: matlab function-handle


    【解决方案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
    

    【讨论】:

    • 我在 matlab 中为函数使用 3d 绘图时遇到问题。你能帮我解决这个问题吗!太令人沮丧了……我试过ezplot(fy1,[30,70]),但它返回xq1 vs. xq2的情节……我也试过ezplot(fy1,[30,70],[30,70]),但结果是一样的……
    • 我添加了一些用于 3D 绘图的代码。请告诉这是否是您需要的情节。
    • 那很好。很抱歉在我的第一个版本的答案中造成混淆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多