добавить выходы в анонимную функцию в цикле - PullRequest
1 голос
/ 31 августа 2010

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

1 Ответ

5 голосов
/ 31 августа 2010

Полагаю, если у вас есть линейный набор уравнений, вы можете построить его, используя матрицу, тогда вы можете включать новые операции, добавляя строки и столбцы в матрицу и / или сопровождающий ее вектор правой части.

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

A = cell(3,1);          % Preallocate a 3 by 1 cell array
for ii = 1:3
  A{ii} = @(x) x^2+ii;  % Fill up the array with anonymous functions
end

Теперь, если вы проверите, что содержится в массиве ячеек 'A',

A = @(x)x^2+ii
    @(x)x^2+ii
    @(x)x^2+ii

Не беспокойтесь об отображении 'ii' вместо фактического номера переменной цикла, как мы указали ранее, MATLAB внутренне заменила их этими значениями. Изменение 'ii' в текущей области действия функции также не повлияет на их значения в 'A'.

Таким образом, A{1}(2) = 5, A{2}(2) = 6 и A{3}(2) = 7

Если вы не знакомы с массивами ячеек, вы можете прочитать об их использовании здесь .

Опять же, то, что вы пытаетесь достичь, может быть другим. Я надеюсь, что это работает для вас.

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