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

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.

 Akzeptierte Antwort

f = @(i1,j1)sum(reshape(bsxfun(@minus,i1(:),j1(:)'),1,[]))

1 Kommentar

Thanks andrei! In fact for me, it's even simpler,
f = @(x)sum(reshape(abs(bsxfun(@minus,x,x'),1,[]))

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by