Efficace (plus rapide) pour faire la somme des éléments de la matrice dans matlab

Permet d'avoir de la matrice A dire A = magic(100);. J'ai vu 2 manières de calculer la somme de tous les éléments de la matrice A.

sumOfA = sum(sum(A));

Ou

sumOfA = sum(A(:));

Est l'un des plus rapides (ou meilleure pratique) alors que d'autres? Si oui, lequel est-il? Ou sont-ils à la fois tout aussi rapide?

Chaque méthode doit marcher à travers chaque élément de la matrice. Donc, ils sont la même chose quand il s'agit de la complexité. Je vous recommande de faire deux scripts avec les différentes méthodes, énorme matrices, et de calculer leur temps d'exécution. Prendre un long shot ici, je dirais que la deuxième est mieux, car elle n'implique mémoire alloc opérations, mais comme je l'ai dit, c'est un long shot, et j'ai peut-être raté quelque chose ici.
Vous pouvez utiliser Matlab tic et toc fonctions pour réaliser l'expérience.
J'ai fait un test rapide et il n'y a pas de différence de vitesse. Un avantage de sum(A(:)) est que vous n'avez pas besoin de savoir combien de dimensions A a; il va travailler pour un certain nombre de s'estompe.

OriginalL'auteur Rasto | 2012-07-01