【发布时间】:2013-11-28 23:26:11
【问题描述】:
我有一个匿名函数:
a = [1, 2];
b = [1, 1; 3, 2];
c = [4, 2];
ff = @(x) (exp(a .* x) .* c) * b;
问题是,当我有一个数组时,比如 x = [1,2,3,4] ,Matlab 认为我正在使用数组并将其以指数形式相乘,而不是每个元素。
错误是
使用 .* 时出错 矩阵尺寸必须一致。
错误 @(x)(exp(a.*x).*c)*b
我只需要c1 * exp(a1 *x) * b11 + c2 * exp(a2 * x) * b21 + ... 之类的东西
如果我想评估每个 x 元素的函数,我可以使用 for 循环,它给了我想要的答案,但我认为可能有一个最简单的方法,比如我们可以简单地使用f(x) 并获得一个数组,其中每个元素在函数中求值。我尝试使用arrayfun,但我得到了同样的错误。我想跳过 for 循环,因为它们对于更大的矩阵来说很慢。
【问题讨论】:
-
你的意思是
c1 * exp(a1 *x) * b11 + c2 * exp(a2 * x) * b21 + ...? -
是的,抱歉,我会更正我的问题
-
您的结果应该是什么尺寸(对于给定的示例值)?
-
对于特定的
x,一个 1x2 数组。如果我使用 Nx1 数组,它应该给出一个 Nx2 数组,每列对应不同的x
标签: arrays matlab anonymous-function dimensions