can I construct an anonymous function that is a double summation?

1 visualizzazione (ultimi 30 giorni)
I want to write a double sum as an anonymous function, i.e., sum_i=1^n ( sum_j=1^n (k_i - k_j |) ). Writing the inner sum is trivial, i.e, f = @(x,n,i)sum(|x(i)-x(1:n)),then it's easy enough to sum these, i..e, v(i) = f(x,n,i) ; then sum(v(i)), but I can't figure out how to write the outer loop as an anonymous funct.
Thanks for any help.

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 31 Ott 2011
f = @(i1,j1)sum(reshape(bsxfun(@minus,i1(:),j1(:)'),1,[]))
  1 Commento
Leo Simon
Leo Simon il 31 Ott 2011
Thanks andrei! In fact for me, it's even simpler,
f = @(x)sum(reshape(abs(bsxfun(@minus,x,x'),1,[]))

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Function Creation 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