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

1 visualización (últimos 30 días)
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.

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by