Column vector multiplied to a row vector, memory v.s. speed issue

3 vues (au cours des 30 derniers jours)
Xin
Xin le 4 Avr 2018
Modifié(e) : Stephen23 le 4 Avr 2018
Hello everyone. I have a column vector (A) that is left multiplied to a row vector (B). The result is a matrix C=A*B. What I need is the sum of C in each row, that is sum(C,2). However, both A and B are very long vector that makes C rather huge that exceeds memory. Is it possible to bypass the matrix C and get the results sum(C,2) without using a loop, which is a bit slow.
Many thanks
  6 commentaires
Birdman
Birdman le 4 Avr 2018
What are the sizes of A and B?
Xin
Xin le 4 Avr 2018
Depending on the data, A can be more than 1e4, and B can be more than 1e6~1e7.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 4 Avr 2018
Modifié(e) : Stephen23 le 4 Avr 2018
Loop over A, it won't take very long as long as long as the output is preallocated. Replace this:
D1 = sum(A*B,2)
with
N = numel(A);
D2 = nan(N,1);
for k = 1:N
D2(k) = sum(A(k)*B);
end

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by