У меня есть циклДобавление анонимных функций MATLAB
for i = 1: n
f = @(x) x + vec(i)
end
ли это Возможное сложить все эти функции в одну анонимную функцию ??
Спасибо.
У меня есть циклДобавление анонимных функций MATLAB
for i = 1: n
f = @(x) x + vec(i)
end
ли это Возможное сложить все эти функции в одну анонимную функцию ??
Спасибо.
Лучшее, что я могу предложить, чтобы постепенно добавлять свои функции, как это:
n = 10;
vec = rand(1,n); % Random data
f = @(x)x + vec(1); % Initial function
for i = 2:n
f = @(x)x + vec(i) + f(x); % Add previous sum to next
end
x = 2;
s = f(x) % Evaluate
Если вам нужно сохранить каждую функцию отдельно и сумма впоследствии, вы можете создать cell array функциональных ручек и использовать cellfun
для оценки все из них для определенного значения x
:
n = 10;
vec = rand(1,n); % Random data
f = cell(1,n); % Pre-allocate cell
for i = 1:n
f{i} = @(x)x + vec(i) % Save a handle to each function in cell array
end
x = 2;
s = sum(cellfun(@(c)c(x),f)) % Evaluate each function at x and sum
Другим вариантом было бы сделать это с помощью Symbolic Math, хотя это может быть очень неэффективным в зависимости от вашего переменного тока Tual функции:
n = 10;
vec = rand(1,n); % Random data
syms x;
f(x) = x+vec; % Create vector function
x = 2;
s = double(sum(f(x))); % Evaluate and convert to floating point
Это невозможно знать, что ваша текущая проблема, и если они будут работать для вас без более подробного вопроса, так что вы, возможно, потребуется изменить их значительно для вашего конкретного применения.
Я не уверен, что функция имеет смысл вообще, можете ли вы попытаться объяснить, что именно вы хотели бы суммировать? Первые 'n' элементы' vec' должны быть увеличены на 'x'? Или вам нужны 'n' отдельные функции, каждая из которых увеличит' vec (i) 'на' x'. – mpaskov
так что в каждом цикле функция х + 1, х + 4, х + 3, х + 56, Я хотел бы это функция, которая представляет собой (х + 1) + (х + 4) + (x + 3) + (x + 56) + ... – user3532764
Итак, вы хотите, чтобы 'n' выполняли разные функции, каждый из которых добавлял другое значение (предварительно заданное с' vec') в 'x'. И после того, как у вас есть функция 'n', вы хотите сделать что-то с ними все одновременно. – mpaskov