在for循环中为匿名函数添加术语

时间:2011-05-10 04:24:17

标签: matlab

我正在尝试在for循环中为匿名函数添加术语。

等温线= @(N)log(N)-log(P);

K = 0; 对于a = a Isotherm2 = @(N)(1 / T)* an * mpower(N,k); 等温线= @(N)等温线(N)+等温线2(N); k = k + 1; 端

K = 0; 对于bn = b Isotherm2 = @(N)bn * mpower(N,k); 等温线= @(N)等温线(N)+等温线2(N); k = k + 1; 端

我已经尝试了上面的代码,但它无法正常工作。我需要使用m文件功能吗?

1 个答案:

答案 0 :(得分:4)

要遵循您打算做的事情有点困难。但是,如果N是标量值,则以下向量化解决方案应执行所需的计算:

Isotherm = @(N) log(N)-log(P) + ...
                (1/T)*sum(a.*N.^(0:numel(a)-1)) + ...
                sum(b.*N.^(0:numel(b)-1));

顺便说一下,只要我 DID NOT 希望以下内容有效,它确实会:

>> f = @(x) x;
>> for i = 2:4, f = @(x) f(x) + x.^i; end    %# f(x) = x + x.^2 + x.^3 + x.^4
>> f(2)

ans =

    30    %# 2 + 4 + 8 + 16

>> f(3)

ans =

   120    %# 3 + 9 + 27 + 81

因此,添加匿名函数的方式可能不是您的问题的根源,尽管它是一种非常混淆的做事方式,并且可能还有其他一些我尚未找到的限制。