How to get the smallest value in submatrices

4 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Bruno Luong
Bruno Luong il 2 Ott 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

Più risposte (1)

Kevin Holly
Kevin Holly il 2 Ott 2021
cellfun(@min,B,'UniformOutput',false)
%or
cellfun(@min,cellfun(@min,B,'UniformOutput',false),'UniformOutput',false)
  6 Commenti
Kevin Holly
Kevin Holly il 2 Ott 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 il 2 Ott 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.

Accedi per commentare.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Prodotti


Release

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by