Rewriting a vector addition and multiplication.
Afficher commentaires plus anciens
Hello Friends,
I have the following:
A = [1 2 3; 4 5 6; 7 8 9];
B = [10 11 12; 13 14 15];
[N1, D1] = size(A);
[N2, D2] = size(B);
A_sq = sum(A.^2, 2);
B_sq = sum(B.^2, 2)';
D = A_sq(:,ones(1,N2)) + B_sq(ones(1,N1),:) - 2.*(A*B');
where D is N1 x D1 matrix.
I want to write expression for D in one single step, i.e., something like this:
D = sum(A.^2,2)(:,ones(1,N2)) + sum(B.^2,2)(ones(1,N1),:) - 2.*(A*B');
or perhaps something like this is even better:
D = sum[(A.^2,2)(:,ones(1,N2)) + (B.^2,2)(ones(1,N1),:) - . . .];
I know that above expression is wrong because one needs to store sum in a temporary variable before indexing. However, it is just for illustration purpose that I want to write down this expression in one single step.
I will appreciate any advise.
Réponse acceptée
Plus de réponses (1)
James Tursa
le 16 Août 2016
D = bsxfun(@plus,sum(A.^2, 2),sum(B.^2, 2)') - 2.*(A*B');
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!