假设函数g将函数f作为参数,而在g中我们有类似的东西 x = t * feval(f,u); 但是,f可以是标量值或矢量值。如果它是矢量值,我们希望x也是一个矢量,即feval语句返回f返回的整个矢量。我们如何为标量和向量情况做这项工作?
答案 0 :(得分:0)
据我所知,你问的是matlab中的默认行为。 这意味着如果f返回一个标量,则x将是一个标量,如果它返回一个向量,则x将是一个向量。
在您的示例中,只要t也是标量,它就会成立 - 否则结果将取决于如何计算t * [f的输出]。
示例强> 的
function o1 = f(N)
o1 = zeros(1,N);
end
如果N = 1且N> 1的向量,则f返回标量。 调用代码会给出
x=feval('f', 1); % Returns x = 0
x=feval('f', 4); % Returns x = [0 0 0 0]
答案 1 :(得分:0)
如果feval(f,u)
的输出可以是标量或向量,并且您希望结果x
相同(即标量或相同长度和维度的向量),然后它取决于t
是什么:
t
是标量,那么你拥有的就好了。您可以使用运算符*
或.*
执行乘法运算。t
是与feval(f,u)
的结果具有相同长度和维度的向量,则使用.*
运算符执行逐元素乘法。t
是具有相同长度但不同维度的向量,则feval(f,u)
的结果(即一个是行向量,一个是列向量) ,然后你必须通过用.'
运算符转置一个或另一个来使尺寸匹配。t
的长度与feval(f,u)
的长度不同,那么就不能进行逐元素乘法。