Ich habe eine SchleifeHinzufügen von anonymen Funktionen Matlab
for i = 1: n
f = @(x) x + vec(i)
end
Ist es posible all diese Funktionen in einer einzigen anonymen Funktion zu addieren ??
Danke.
Ich habe eine SchleifeHinzufügen von anonymen Funktionen Matlab
for i = 1: n
f = @(x) x + vec(i)
end
Ist es posible all diese Funktionen in einer einzigen anonymen Funktion zu addieren ??
Danke.
Das Beste, was ich vorschlagen kann, ist inkrementell Ihre Funktionen wie folgt hinzu:
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
Wenn Sie jede Funktion separat und Summe anschließend speichern müssen, können Sie eine cell array Funktionsgriffe erstellen und cellfun
verwenden, um zu bewerten alle von ihnen für einen bestimmten Wert von 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
eine weitere Möglichkeit dies mit Symbolic Math zu tun wäre, obwohl dies sehr ineffizient sein kann je nach ac tual Funktionen:
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
Es ist unmöglich zu wissen, was Ihre eigentliche Problem ist, und wenn überhaupt diese ohne eine detailliertere Frage für Sie arbeiten, so müssen Sie können sie für Ihre Anwendung erheblich verändern.
Ich bin nicht sicher, dass die Funktion überhaupt Sinn macht, können Sie versuchen zu erklären, was Sie summieren möchten? Die ersten 'n' Elemente von' vec' sollten um 'x' erhöht werden? Oder wollen Sie 'n' getrennte Funktionen, die jeweils' vec (i) 'um' x' erhöhen. – mpaskov
so an jeder Schleife der Funktion x + 1, x + 4, x + 3, x + 56, Was würde Ich mag eine Funktion ist, die (x + 1) + (x + 4) + (x + 3) + (x + 56) + ... – user3532764
Sie wollen also 'n' verschiedene Funktionen, die jeweils eine andere Zahl (vordefiniert aus' vec') zu 'x' hinzufügen. Und nachdem Sie Ihre 'n' Funktion haben, möchten Sie gleichzeitig etwas mit ihnen machen. – mpaskov