2017-09-25 1 views
0

Existe-t-il un moyen de vectoriser le code suivant? Je voudrais appliquer la fonction histcounts à chaque tranche d'une matrice 3D.MATLAB: Histcounts pour chaque tranche d'une matrice 3D

mat = rand(100,1,5); 
[~,~,numRuns] = size(mat); 
for i = 1 : numRuns 
    [n(:,:,i), edges(:,:,i)] = histcounts(mat(:,:,i)); 
end 

Répondre

0

Si vous avez vraiment besoin d'un histogramme distinct pour chaque exécution, laissez-le comme ça. Pourquoi voudriez-vous même le vectoriser? C'est facile à lire, et c'est important. (Vous pourriez le vectoriser avec cellfun, mais dans ce cas ce serait compliqué et pas encore plus rapide.) Si vous voulez augmenter la vitesse de calcul, utilisez parfor au lieu de for. Mais peut-être que vous voulez un histogramme de toutes les données. Alors faites juste

[N,edges] = histcounts(mat); 

et vous avez votre histogramme global.