How to get the smallest value in submatrices

1 view (last 30 days)
Hi,
I would appreciate if you could help me with this problem.
I have a big matrix , where are submatrices of the same size.
I want to get a vector containing the smallest elements in each submatrices. I want to avoid for loop as it might slow down my whole program.
Thanks.

Accepted Answer

Bruno Luong
Bruno Luong on 2 Oct 2021
B=randi(9,10,2)
B = 10×2
3 7 6 6 6 3 3 5 3 9 3 5 1 5 5 9 8 2 7 8
[m,n] = size(B);
k = 5;
if mod(m,k)
error('m must divisible by k');
end
minsub = min(reshape(B,[m/k k n]),[],[1 3]).'
minsub = 5×1
3 3 3 1 2

More Answers (1)

Kevin Holly
Kevin Holly on 2 Oct 2021
cellfun(@min,B,'UniformOutput',false)
%or
cellfun(@min,cellfun(@min,B,'UniformOutput',false),'UniformOutput',false)
  6 Comments
Kevin Holly
Kevin Holly on 2 Oct 2021
I was under the impression that you already had a big matrix B that contained submatrices. If this is not the case, how are your data organized? Are all the matrices in a folder/workspace individually?
Hung Dao
Hung Dao on 2 Oct 2021
My apologies for the confusion.
My algorithm leads to a big matrix, not the submatrices.
But I need to partition the big matrix into submatrices of the same size, and in each submatrix I want to find the minimum value.
I hope it is clear now.
Thank you.

Sign in to comment.

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!