How to get the smallest value in submatrices

1 view (last 30 days)
Hung Dao
Hung Dao on 2 Oct 2021
Commented: Hung Dao on 2 Oct 2021
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
  1 Comment
Hung Dao
Hung Dao on 2 Oct 2021
Thank you very much.
This is exactly what I need.

Sign in to comment.

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
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!