0
私はそれがかのう1つの無名関数にすべてのこれらの機能を追加することでループ追加する無名関数は、MATLAB
for i = 1: n
f = @(x) x + vec(i)
end
を持っています?
ありがとうございました。
私はそれがかのう1つの無名関数にすべてのこれらの機能を追加することでループ追加する無名関数は、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
別のオプションは、これはあなたのACに応じて、非常に非効率的かもしれないが、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
それはあなたの実際の問題が何であるかを知ることは不可能だし、任意のこれらのより詳細な質問せずにあなたのために動作し、そうするかどうか、あなたの特定のアプリケーションのためにかなりそれらを変更する必要があるかもしれません。
私はこの機能が全く意味を成さないとは確信していませんが、あなたが合計したいことを説明しようと思いますか? 'vec'の最初の' n'要素は 'x'だけ増加する必要がありますか?あるいは 'n'個の別々の関数が必要です。それぞれの関数は' vec(i) 'を' x'だけ増やします。 – mpaskov
ので、すべてのループで機能は、私はたい何 X + 1 、 X + 4、 X + 3、 X + 56、 あるが(X + 1)である関数である+(X + 4)+(x + 3)+(x + 56)+ ... – user3532764
異なる数( 'vec'からあらかじめ定義されている)を' x'に追加する異なる関数を 'n 'にします。そして、あなたが 'n'関数を持った後、あなたはそれらのものと一緒に何かを同時にしたいと思っています。 – mpaskov