Fastest pairwise row sums

3 Ansichten (letzte 30 Tage)
Alexander Shtof
Alexander Shtof am 26 Feb. 2019
Beantwortet: Jos (10584) am 26 Feb. 2019
I have two matrices A and B, and I would like to compute a matrix C whose rows are all possible combinations of the sum of a row of A and a row of B. What would be the fastest way to perform the computation?
Additional question - what if A and B are both gpuArrays?
Update - Example
Say A is a matrix of 3 rows and B is a matrix of 2 rows, then I would like C to be the matrix
C = [A(1, :) + B(1, :);
A(1, :) + B(2, :);
A(2, :) + B(1, :);
A(2, :) + B(2, :);
A(3, :) + B(1, :);
A(3, :) + B(2, :)];
  2 Kommentare
madhan ravi
madhan ravi am 26 Feb. 2019
Bearbeitet: madhan ravi am 26 Feb. 2019
illustrate with a short example
Alexander Shtof
Alexander Shtof am 26 Feb. 2019
Done.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Adam
Adam am 26 Feb. 2019
Bearbeitet: Adam am 26 Feb. 2019
C = repelem( A, size( B, 1 ), 1 ) + repmat( B, size( A, 1 ), 1 );
Should be the same for gpuArrays too. Whether it is fastest for runtime or not is another matter entirely. There are any number of possible ways of doing it - this is just one. I certainly don't have time to think up, implement and time all of them!
  2 Kommentare
Alexander Shtof
Alexander Shtof am 26 Feb. 2019
This actually works great! Did not know that a function like repelem exists. I used meshgrid to construct pairwise indices, and it resulted in a slower computation.
Thank you!
Adam
Adam am 26 Feb. 2019
Yeah, it's one of those useful components to know. It is a relatively recent addition, added in R2015a, although the years seem to be flying past so I guess that is already 4 years ago now!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jos (10584)
Jos (10584) am 26 Feb. 2019
% An old-school 20th century indexing trick:
A = randi(9,3,2)
B = 100*randi(9,4,2)
[ia, ib] = ndgrid(1:size(A,1),1:size(B,1))
C = A(ia,:) + B(ib,:)

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Tags

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by