Добавить условия в анонимную функцию в цикле for - PullRequest
0 голосов
/ 10 мая 2011

Я пытаюсь добавить термины в анонимную функцию в цикле for.

Isotherm = @ (N) log (N) -log (P);

k = 0;для an = a Изотерма 2 = @ (N) (1 / T) * an * mpower (N, k);Изотерма = @ (N) Изотерма (N) + Изотерма2 (N);к = к + 1;end

k = 0;для bn = b Isotherm2 = @ (N) bn * mpower (N, k);Изотерма = @ (N) Изотерма (N) + Изотерма2 (N);к = к + 1;end

Я пробовал предыдущий код, но он работает неправильно.Нужно ли использовать функцию m-файла?

1 Ответ

4 голосов
/ 10 мая 2011

Немного сложно следить за тем, что вы собираетесь делать. Однако, если N является скалярным значением, следующее векторизованное решение должно выполнить необходимые вычисления:

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

Кстати, столько, сколько я НЕ ожидал, что сработает следующее: на самом деле это так:

>> 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

Таким образом, способ добавления анонимных функций, возможно, не является источником вашей проблемы, хотя это очень запутанный способ сделать что-то и может иметь некоторые другие ограничения, которые мне еще предстоит найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...