How to compute diagonal entries of a matrix of inner products (gram matrix) in a vectorized way?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Brando Miranda
el 5 de Abr. de 2016
Editada: Brando Miranda
el 2 de Mayo de 2016
I am interested in computing only the diagonals of a matrix of inner products between vectors (Gram matrix). Say that we have the Dx1 vectors t_i stacked in matrix as follows t = [t_1, ..., t_k, ..., t_K]. I want to computed only the diagonal as in:
inner_product = t_i' * t_i
One obvious way to do it is to do:
Gram = t' * t
and then extract the diagonal entries Gram(i,i) but it seems that matlab is doing a lot of unnecessary computation (computing the off diagonals) and I wanted to avoid this using vectorized code. One can obviously also implemented this with a for loop and iterate through the matrix, however, since I have large vectors and I have the resources to store the data in GPUs, it seems silly to me do such a for loop when I can just take advantage of vectorized code.
Is it possible to compute only the diagonal entries of the gram matrix using vectorized code?
0 comentarios
Respuesta aceptada
Azzi Abdelmalek
el 5 de Abr. de 2016
Editada: Azzi Abdelmalek
el 5 de Abr. de 2016
out=sum(A.*A,2)
1 comentario
Más respuestas (0)
Ver también
Categorías
Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!