matlab - 尝试 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');
参考资料: https://www.mathworks.com/matlabcentral/answers/32820-trouble-substituting-a-value-into-a-symbolic-expression-for-use-with-fplot 重型函数在 ezplot 和 fplot 中产生不同的输出
解决方案
我正在使用 MATLAB R2017a。
当我运行此代码时:
f = @(x) (x+2)./(x.^2 - 4);
fplot(f,[0 10])
我看到以下情节:
我没有使用上面的符号数学。我直接定义了一个进行数值计算的匿名函数。我正在使用./
and .^
,逐元素运算符,因为通过作为数组fplot
传入同时评估多个位置的函数,如文档中所述:x
该函数必须接受向量输入参数并返回相同大小的向量输出参数。
请注意,OP 的代码matlabFunction
应该产生一个等效的函数,我不知道那里可能有什么问题。但总的来说,在不必要的时候避免使用符号数学总是有益的。(“必要”是指,例如,如果您试图找到方程的解析解。)
PS:在 MATLAB R2021a 中,我运行了这段代码和 OP 的代码,得到了完全相同的结果。来自ht
OP 的代码和f
来自我的代码是相同的。特定版本的 MATLAB 中可能存在已在更高版本中修复的错误。
推荐阅读
- makefile - 如何将字符串与终端的值连接起来?
- php - Laravel 加载特定资源的所有关系
- terminal - 如何自动运行 VSCode 自己的内置命令
- ios - 当 pjmedia_conf_connect_port 在 pjsip 中执行 SIGABRT 时,记录调用崩溃
- wix - 指定 TARGETDIR 的 Wix 安装程序
- excel - 如何制作每行单独包含的图表
- java - java.lang.NoClassDefFoundError: org/openqa/selenium/remote/codec/w3c/W3CHttpCommandCodec
- swift - 我有字典数组类型的 JSON 数据。如何使用 Codable 协议对其进行解码?
- python - 如何允许非活动用户登录?
- javascript - 如何检查变量是否以特定格式定义?