Find maximum intermediate product in matrix multiplication
Mostrar comentarios más antiguos
Hello,
I am in need of an efficient solution for the following problem...
For the matrix product C = A × B, where A is an n x m matrix, and B is an m x p matrix, each element [i,j] in the matrix product C is given by the sum of m products,
C_{i,j} = sum[ A_{ i, k} .* B_{ k, j}]_( k=1,..., m)
I need to find a similar function, that gives the matrix C as the maximum of m products,
C_{i,j} = max[ A_{ i, k} .* B_{ k, j}]_( k=1,..., m)
Actually, I need to find the index k that corresponds to the maximum in each case.
I have found a way to do this using loops, but it is way too slow for what I need. I also found an ugly solution using the kronecker product, but it is also too slow. My matrices, although sparse, are also quite large (m=n~1000 and p<1000).
I have been thinking about this for two weeks, but I haven't found a good solution!
Cheers, Ben
Respuesta aceptada
Más respuestas (1)
the cyclist
el 3 de En. de 2018
Editada: the cyclist
el 3 de En. de 2018
I believe this does what you want:
A = [1 3; 4 2];
B = [1 3 5; 4 2 6];
tmp = permute(A,[2 3 1]).*B;
[~,tmp2] = max(tmp);
C = permute(tmp2,[3 2 1]);
(Edited to get C permuted to sensible dimensions.)
1 comentario
Ben Ward
el 3 de En. de 2018
Categorías
Más información sobre Shifting and Sorting Matrices en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!