Multiply parts of matrices
3 次查看(过去 30 天)
显示 更早的评论
Hello everyone - many thanks for taking the time to read this.
Matrix A is 63x63 and Matrix B is 63x7
I want to multiply every 9x9 of Matrix A with every 9x1 of Matrix B.
So the first:
9x9 in matrix A with the first 9x1 in Matrix B
1 2 3 4 5 6 7 8 9 1
1 2 3 4 5 6 7 8 9 2
1 2 3 4 5 6 7 8 9 3
1 2 3 4 5 6 7 8 9 4
1 2 3 4 5 6 7 8 9 5
1 2 3 4 5 6 7 8 9 6
1 2 3 4 5 6 7 8 9 7
1 2 3 4 5 6 7 8 9 8
1 2 3 4 5 6 7 8 9 9
Then the second 9x9 to the right in matrix A with the second 9x1 in matrix B.
I'm currently doing it using cells which is great but need to be able to do it outside of cell format.
What would you recommend?
采纳的回答
Andrei Bobrov
2011-12-1
variant 1
A = randi(100,8,6);
B = randi(50,4,3);
[m n] = size(A);
q = 4;
p = 2;
a1 = reshape(permute(reshape(A,q,m/q,p,[]),[1 3 2 4]),q,p,[]);
out = reshape(sum(bsxfun(@times,a1,reshape(B,1,p,[])),2),m,[]);
0 个评论
更多回答(1 个)
Walter Roberson
2011-11-30
When you say multiply the 9x9 by the 9x1, is that a matrix multiplication (which would output a 9x1), or is that an element-by-element multiplication producing 9 x 9 with each row in A multiplied the (single) value from the corresponding column in B ?
4 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!