# mxn and nxn matrix element-wise multiplication without for loop

18 views (last 30 days)
ebon T on 26 Oct 2020 at 14:49
Commented: ebon T on 26 Oct 2020 at 16:45
I have 2 2D matrices. First one, A, is mxn where m=n*k and second one, B, is nxn. How do I do element-wise multiplication of every nxn square sub matrix of A with B without for loop? and sum all elements of every multiplied nxn matrix and get a nx1 vector? Below is what I did with for loop. I need to perform the for loop in one row.
n = 10;
k = 5;
A = rand(k*n,n);
B = rand(n,n);
results = zeros(k,1);
for i=1:k
results(i) = sum(B.*A(1+n*(i-1):i*n,:),'all');
end

ebon T on 26 Oct 2020 at 15:37
Actually as long as it creates the nx1 vector in one line it is fine.
Cris LaPierre on 26 Oct 2020 at 15:41
What about the requirement to use elementwise multiplication and not use for loops? What about achieving this all in a single row?
ebon T on 26 Oct 2020 at 15:48
If the solution can provide all of these then it is perfect! If it is not possible to vectorize then one line of solution also acceptable.

Bruno Luong on 26 Oct 2020 at 15:36
AA = permute(reshape(A,[n,k,n]),[2 1 3]);
results = AA(:,:)*B(:)

#### 1 Comment

ebon T on 26 Oct 2020 at 16:45
Thanks a lot Bruno!

R2020b

### Community Treasure Hunt

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

Start Hunting!