不清楚如何矢量化此函数以消除 Matlab 中的 fsurf 警告

Not clear how to vectorize this function to get rid of fsurf warning in Matlab

要使用fsurf,需要对正在考虑的函数进行适当的矢量化,这意味着使用元素运算,即数组运算。

例如,此函数已正确向量化:

f = x.^2 -2 * x .* y + 4 * y.^2

现在,我的问题是:如何向量化 this 函数(a、b、c、d、e 只是常量)?

f = a + [b, c]*[x - d; y - e]

在这种情况下,我不能使用逐元素乘法(即 .*),因为我需要对 return 标量而不是矩阵进行该运算,因此使用 * 是正确的。

虽然 fsurf 编辑的情节 return 绝对正确,但我收到此警告消息:

警告:函数对数组输入的行为异常。要提高性能,请将您的函数正确矢量化为 return 与输入参数具有相同大小和形状的输出。

您将如何进行?

您公式中的矩阵运算很难矢量化。拿起笔和纸进行矩阵乘法:

f = a - b.*(d - x) - c.*(e - y)

只剩下一个标量的乘法,易于向量化。