【问题标题】:Why does vectorizing my Matlab function give me a warning? [closed]为什么向量化我的 Matlab 函数会给我一个警告? [关闭]
【发布时间】:2020-07-04 13:02:51
【问题描述】:

我正在尝试在 Matlab 中绘制表面 x^2*y^2+y^2*z^2+z^2*x^2=1。我对函数进行了矢量化,因为正如我在使用 Matlab 的微分方程课程中所学到的那样,这是一种很好的做法。但是,Matlab 给了我以下警告:

警告:函数在数组输入上的行为异常。改善 性能,正确矢量化您的函数以返回输出 与输入参数相同的大小和形状。

这是我的代码:

f = @(x,y,z) x.^2.*y.^2+y.^2.*z.^2+z.^2*x.^2-1;
fimplicit3(f)

我做错了什么?

以前所有关于 Matlab 矢量化的 StackOverflow 问题(例如Vectorize function evaluation in MATLAB)似乎都涉及 for 循环。

【问题讨论】:

  • 检查你函数中的最后一个乘法,它仍然是*而不是.*
  • 请注意x.^2.*y.^2(x.*y).^2 相同,但后者更快,因为它只平方一次。

标签: matlab vectorization


【解决方案1】:

你忘记了单点 z.^2*x.^2-1 ==> z.^2.*x.^2-1;

f = @(x,y,z) x.^2.*y.^2+y.^2.*z.^2+z.^2.*x.^2-1;
fimplicit3(f)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    相关资源
    最近更新 更多