How can I sum anonymous functions?

32 visualizzazioni (ultimi 30 giorni)
Judith Wewerka
Judith Wewerka il 31 Ott 2017
Commentato: Rik il 24 Mag 2019
Dear all, I have a for-loop and every for-loop creates an instance of an anonymous function. In the end I would like to sum all these anonymous functions to one function, which I can then use to evaluate for different t. So far I have the following, which compiles, but gives me an error when trying Hn(0.5). Thanks for your help :)
A= rand(60,200);
X = randn(200,1);
eta = sqrt(0.03)*randn(60,1);
[u, s, v] = svd(A);
[m,~] = size(A);
xi = zeros(m,1);
nu = zeros(m,1);
alpha = zeros(m,1);
Hn = 0;
for i = 1:m
xi(i) = dot(X, v(:,i));
nu(i) = dot(eta, u(:,i));
alpha(i) = xi(i)*(s(i,i)*xi(i)+nu(i));
h = @(t) ((s(i,i)*nu(i)*inv(xi(i))+1)*t-1)/(1-(1-s(i,i)^2)*t)^3;
Hn = @(t) Hn(t)+s(i,i)*alpha(i)*h(t);
end

Risposta accettata

Rik
Rik il 31 Ott 2017
You need to initialize Hn as an anonymous function as well:
Hn = @(t) 0;
  4 Commenti
Eray Tunç YILMAZ
Eray Tunç YILMAZ il 23 Mag 2019
Modificato: Rik il 24 Mag 2019
Hello,
I have a similar problem
f = @(x) 0;
for i=1:n
f =(@x) f(x) + c(i) * cos(i*x);
end
where is c is a vector.
It gives an error as: parse error at f: usage might be invalid MATLAB syntax.
What is wrong here?
Thank you in advance
Rik
Rik il 24 Mag 2019
You should put this instead:
f = @(x) 0;
for i=1:n
f =@(x) f(x) + c(i) * cos(i*x);
end

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by