Matrix Multiplication for each row

3 views (last 30 days)
I have a matrix A = 100000*2 and matrix B which is a symmetric square matrix with number of row and columns equal to the number of columns of A.
I want to compute diag (A*B*A') but since A*B*A' is 100000*100000, matlab cannot compute it and then give diagonal of it. Any workaround?
What i am actually looking for is The first row of A multiplied by B and then multiplied by first column of A'. Now, I can perform this 100000 times to get 100000*1 matrix but that is time consuming. Any workaround will be appreciated?

Accepted Answer

Chunru
Chunru on 21 Oct 2021
n = 5; %100000
A = randn(n, 2);
B = [4 2; 2 3];
if n<100
d1 = diag(A*B*A')
end
d1 = 5×1
4.3969 45.0577 9.4548 6.3347 1.4279
d2 = sum(A.*(A*B'), 2)
d2 = 5×1
4.3969 45.0577 9.4548 6.3347 1.4279

More Answers (0)

Community Treasure Hunt

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

Start Hunting!