2010-04-16 8 views
14
>> X = [0 1 2 
     3 4 5] 

>> sum(X, 1) 

ans = 

    3  5  7 

sum(X, 1) devrait résumer le long de la dimension 1st (ligne) selon le document dit:Pourquoi somme (X, 1) la somme des colonnes dans MATLAB?

S = SOMME (X, DIM) sommes le long de la dimension DIM.

Mais pourquoi est-il résume en fait le long de la dimension 2nd (colonne)?

Répondre

2

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sum.html

B = somme (A, dim) des sommes le long de la dimension A de scalaire spécifiée par dim. L'entrée faible est une valeur entière de 1 à N, où N est le nombre de dimensions dans A. Set faible pour 1 à calculer la somme de chaque colonne, de 2 à lignes de somme, etc.

Votre estimation est aussi bonne que la mienne.

+0

Mais la 1ère dimension est la ligne et la 2ème colonne, pourquoi ce n'est pas le cas pour 'sum'? – Gtker

+0

D'où mon "Votre estimation est aussi bonne que la mienne" - il n'y a aucune raison logique pour cela, donc c'est probablement juste le résultat de la session de codage tard dans la nuit du développeur MATLAB. ;) – Amber

2

1 signifie colonne, selon http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sum.html

B = somme (A, dim) des sommes le long de la dimension A de scalaire spécifiée par dim. L'entrée faible est une valeur entière de 1 à N, où N est le nombre de dimensions dans A. Set dim à 1 pour calculer la somme de chaque colonne, pour additionner deux rangées, etc.

+0

Pourquoi cela est-il contradictoire avec d'autres contextes? – Gtker

+2

Il peut en fait indiquer l'axe sur lequel l'itération primaire a lieu. (Parfois, ces choses sont difficiles à comprendre avec des exemples de faible dimension.) –

0

Je pense que la documentation de Matlab sur ce sujet est assez claire. Il indique:

B = somme (A, dim) des sommes le long de la dimension de A spécifiée par dim scalaire. L'entrée dim est une valeur entière de 1 à N, où N est le nombre de dimensions dans A. Définissez dim à 1 pour calculer la somme de chaque colonne, 2 pour additionner les lignes, etc.

Vous êtes bienvenue à penser que Matlab a tort, mais ça ne va pas changer!

+0

La version hors ligne mentionne seulement: 'S = SUM (X, DIM) somme le long de la dimension DIM. et c'est tout! – Gtker

26

À mon avis, il est parfaitement compatible avec tout le reste.

sum(A,dim) somme le long de la direction de dim dim.

Les lignes sont comptées "vers le bas", donc sum(A,1) les sommes "vers le bas". Les colonnes sont comptées "à droite", donc sum(A,2) sommes "à droite".

Une autre façon de voir cela est que sum(A,dim) réduit la dimension dim à 1 en prenant la somme. Ainsi, un tableau 4x3 sommé le long de la cote 1 écrase la première dimension, conduisant à un tableau 1x3.

+9

Je le garde aussi dans ma tête en utilisant l'approche "dim is the dimension to squash". Envisagez également des tableaux de 3 dimensions ou plus; pour moi, c'est plus facile de voir pourquoi ça devrait être comme ça quand on s'éloigne du boîtier 2D. –

+3

+1 non seulement pour copier-coller le document (que Gtker avait lu mais pas compris) et pour expliquer à la place comment l'interpréter. – Calimo