Matlab - 如何使这对标量和向量都有效

时间:2011-04-20 19:03:40

标签: function matlab

假设函数g将函数f作为参数,而在g中我们有类似的东西 x = t * feval(f,u); 但是,f可以是标量值或矢量值。如果它是矢量值,我们希望x也是一个矢量,即feval语句返回f返回的整个矢量。我们如何为标量和向量情况做这项工作?

2 个答案:

答案 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)的长度不同,那么就不能进行逐元素乘法。