Find maximum value in a column of each cell in a large set of cell array?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Raju Kumar
le 8 Mar 2023
Commenté : Fangjun Jiang
le 8 Mar 2023
I have a large cell array (e.g., 35598x1 cell). Each cell consists of mxn double (e.g., 26x5 double). I would like to find maximum value in nth column of each cell (let's say 5th column). How do I do that? Is it possible to do without using a loop as it is taking so much of time. Any help will be highly appriciated. Thank you.
3 commentaires
Dyuman Joshi
le 8 Mar 2023
Loops if used properly can be very efficient.
What have you tried? Show us your code and attach the data using the paperclip button.
Réponse acceptée
Plus de réponses (1)
Dyuman Joshi
le 8 Mar 2023
Modifié(e) : Dyuman Joshi
le 8 Mar 2023
Preallocate data accordingly for outputs of big size -
load Data.mat
f1 = @() loopprealloc(alpha200plus);
f2 = @() simpleloop(alpha200plus);
f3 = @() funcell(alpha200plus);
%checking if outputs are equal or not
isequal(f1(),f2(),f3())
fprintf('time taken by loop with preallocation = %f secs', timeit(f1))
fprintf('time taken by loop WITHOUT preallocation = %f secs', timeit(f2))
fprintf('time taken by cellfun = %f secs', timeit(f3))
function y = loopprealloc(x)
%Preallocation
y=zeros(size(x));
for k=1:size(x,1)
y(k,1) = max(x{k,1}(:,5));
end
end
function y = simpleloop(x)
for k=1:size(x,1)
y(k,1) = max(x{k,1}(:,5));
end
end
function y = funcell(x)
y = cellfun(@(in) max(in(:,5)), x);
end
1 commentaire
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!