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

>> sum(X, 1) 

ans = 

    3  5  7 

sum(X, 1) debe resumir lo largo de la dimensión 1st (fila) como por el documento dice:¿Por qué suma (X, 1) la suma de las columnas en MATLAB?

S = SUM (X, DIM) sumas a lo largo de la DIM dimensión.

Pero qué es lo que realmente resume lo largo 2nd dimensión (columna ) el?

Respuesta

2

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

B = suma (A, DIM) sumas a lo largo de la dimensión de A especificado por escalar tenue. La entrada dim es un valor entero de 1 a N, donde N es el número de dimensiones en A. Set DIM para 1 a calcular la suma de cada columna, 2 a filas suma, etc.

Su suposición es tan buena como la mía.

+0

Pero la 1ª dimensión es fila, y 2ª columna, ¿por qué no es el caso para 'suma'? – Gtker

+0

Por lo tanto, mi "Su suposición es tan buena como la mía" - no hay una razón lógica real para ello, por lo que es probable que sea solo el resultado de una sesión de codificación al azar de desarrolladores de MATLAB. ;) – Amber

2

1 significa columna, según http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sum.html

B = suma (A, DIM) sumas a lo largo de la dimensión de A especificado por escalar tenue. La entrada dim es un valor entero de 1 a N, donde N es el número de dimensiones en A. Set dim a 1 para calcular la suma de cada columna, 2 para resumir filas, etc.

+0

¿Por qué es contradictorio con otro contexto? – Gtker

+2

En realidad, podría estar indicando el eje a lo largo del cual se está produciendo la iteración primaria. (A veces, estas cosas son difíciles de entender con solo ejemplos de baja dimensionalidad). –

0

Creo que la documentación de Matlab sobre esto es bastante clara. Establece:

B = suma (A, dim) sumas a lo largo de la dimensión de A especificada por escalar tenue. La entrada dim es un valor entero de 1 a N, donde N es el número de dimensiones en A. Set atenuará para 1 para calcular la suma de cada columna, 2 para resumir filas, etc.

Eres Bienvenido a pensar que Matlab está equivocado, ¡pero no va a cambiar!

+0

La versión fuera de línea solo menciona: 'S = suma (X, DIM) suma a lo largo de la dimensión DIM. 'y eso es todo! – Gtker

26

En mi opinión, es perfectamente coherente con todo lo demás.

sum(A,dim) sumas a lo largo de la dirección de dimension dim.

Las filas se cuentan "hacia abajo", por lo que sum(A,1) sumas "hacia abajo". Las columnas se cuentan "a la derecha", por lo que sum(A,2) se suman "a la derecha".

Otra forma de ver esto es que sum(A,dim) colapsa la dimensión dim en 1 tomando la suma. Por lo tanto, una matriz de 4x3 sumada a lo largo de la dimensión 1 colapsa la primera dimensión, lo que lleva a una matriz de 1x3.

+9

También lo mantengo directo en mi cabeza usando el enfoque "dim es la dimensión para aplastar". También considere matrices con 3 o más dimensiones; para mí, es más fácil ver por qué debería ser así cuando te alejas del caso 2D. –

+3

+1 no solo para copiar y pegar el documento (que Gtker había leído pero no comprendido) sino para explicar cómo interpretarlo. – Calimo