不清楚如何矢量化此函数以消除 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)
只剩下一个标量的乘法,易于向量化。
要使用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)
只剩下一个标量的乘法,易于向量化。