2016-10-16 2 views
0

나는 그것을 추적 할 수없는 가망 하나 개의 익명의 함수로 모든 기능을 추가하는 것입니다 루프추가 익명 함수는 MATLAB

for i = 1: n 
f = @(x) x + vec(i) 
end 

이 ??

감사합니다.

+0

나는이 함수가 전혀 이해할 수 없다는 것을 잘 모르지만, 합산하고자하는 것이 무엇인지 설명해 주시겠습니까? 'vec'의 첫 번째'n' 요소는'x'만큼 증가해야합니까? 또는'n '개의 분리 함수를 원한다. 각 함수는'vec (i)'를'x'만큼 증가시킬 것이다. – mpaskov

+0

이렇게 각 루프의 기능 X + 1 가 X + 4 가 X + 3 가 X + 56 가 제가하려는 것은 함수이다 (X + 1) + (X + 4) + (x + 3) + (x + 56) + ... – user3532764

+0

이렇게 서로 다른 숫자 ('vec'에서 미리 정의 된)를'x'에 추가하는'n' 개의 다른 함수가 필요합니다. 그리고 당신이'n' 함수를 가지고 나면, 동시에 그것들과 함께 무엇인가하고 싶습니다. – mpaskov

답변

0

내가 제안 할 수있는 최선은 점진적으로이처럼 기능을 추가하는 것입니다 : 당신은 기능 핸들의 cell array를 작성하고 평가하는 cellfun를 사용할 수

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 

은 이후 각각 개별적으로 기능과 합계를 저장해야하는 경우 이것이 당신의 교류에 따라 매우 비효율적 일 수 있지만

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을 사용하여이 작업을 수행하는 것입니다 : x의 특정 값에 대한 그들 모두 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 

그것은 실제 문제가 무엇인지 아는 것이 불가능하고 어떤 이들은 더 자세한 질문없이 당신을 위해 작동, 그래서 것입니다 경우 특정 응용 프로그램에 대해 상당히을 변경해야 할 수도 있습니다.

관련 문제