首页 > 解决方案 > 尝试 fplot 函数时有 2 个不同的输出

问题描述

试图了解 matlab 绘图函数 (fplot/ezplot) 的工作原理。

不明白为什么不同的输出。

在原始示例中,我在 x=2 (此处没有)上看到一条虚线,其中没有任何值。

通过 fplot 打印“正确”版本有什么帮助吗?

我注意到在 matlab 帮助他们指出你不要使用 ezplot 而是使用 fplot

没有任何参考资料有很大帮助:(

syms x
fx = (x+2)/(x^2 - 4);
ht = matlabFunction(fx);

figure(1), clf

fplot(ht,[0 10])     % wrong plot
title('using fplot');

%ezplot(ht,[0 10])   % prints ok
%title('using ezplot');

使用 ezplot

在此处输入图像描述

参考资料: https://www.mathworks.com/matlabcentral/answers/32820-trouble-substituting-a-value-into-a-symbolic-expression-for-use-with-fplot 重型函数在 ezplot 和 fplot 中产生不同的输出

标签: matlabplot

解决方案


我正在使用 MATLAB R2017a。

当我运行此代码时:

f = @(x) (x+2)./(x.^2 - 4);
fplot(f,[0 10])

我看到以下情节:

正确的情节

我没有使用上面的符号数学。我直接定义了一个进行数值计算的匿名函数。我正在使用./and .^,逐元素运算符,因为通过作为数组fplot传入同时评估多个位置的函数,如文档中所述x

该函数必须接受向量输入参数并返回相同大小的向量输出参数。

请注意,OP 的代码matlabFunction应该产生一个等效的函数,我不知道那里可能有什么问题。但总的来说,在不必要的时候避免使用符号数学总是有益的。(“必要”是指,例如,如果您试图找到方程的解析解。)

PS:在 MATLAB R2021a 中,我运行了这段代码和 OP 的代码,得到了完全相同的结果。来自htOP 的代码和f来自我的代码是相同的。特定版本的 MATLAB 中可能存在已在更高版本中修复的错误。


推荐阅读