matrix divide in an array or 2d matrix.
2 views (last 30 days)
Show older comments
I have a matrix that is 10000x10000x15. I need to divide each element in the first two dimension by a matrix that is 3x15. I could do this in a loop, i.e.
mat = rand(10000,10000,15);
submat = rand(3,15);
newmat = zeros(10000,10000,3);
for i =1:10000
for j = 1:10000
newmat(i,j,1:3)=reshape(mat(i,j,1:15),1,15)/submat;
end
end
but that would take a long time. Is there a better way to accomplish this that can do the division on the matrix as a whole?
0 Comments
Accepted Answer
Sean de Wolski
on 25 Nov 2014
Edited: Sean de Wolski
on 25 Nov 2014
You can do the whole divide at once, using n instead of 10000 to avoid killing my laptop:
mat2 = reshape(mat,n^2,15);
nm2 = mat2/submat;
nm2 = reshape(nm2,n,n,3);
% Check equality
isequal(nm2,newmat)
ans =
1
More Answers (0)
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!