Что именно является первым не синглтонным измерением матрицы? - PullRequest
0 голосов
/ 12 сентября 2018

Глядя на это определение :

: сумма (х, тусклый)

Если dim опущен, по умолчанию используется первый неинглетонное измерение.

Я пробовал несколько команд:

>> sum([2,3,4])         % A matrix of size 1*3 
ans =  9                 
>> sum([2;3;4;])        % A matrix of size 3*1
ans =  9
>> sum([2,3,4;2,3,4;2,3,4;])  % A matrix of size 3*3
ans =
   6   9   12

Хотя эти результаты интуитивно меня мало удивляют, мне кажется, что результат № 3 идет вразрез с этим принятым ответом об определении «первого не-одиночного измерения».

Просто чтобы убедиться, что он выбирает значение по умолчанию dim как 1:

>> sum([2,3,4;2,3,4;2,3,4;], 1)         % does COLUMN-WISE SUMMATION
ans =

    6    9   12

>> sum([2,3,4;2,3,4;2,3,4;], 2)         % does ROW-WISE SUMMATION
ans =

   9
   9
   9

Итак, вопрос в том, является ли принятый ответ правильным, не должно ли суммирование произойти по строкам по умолчанию (учитывая, что матрица равна 3 * 3, а размерность строки> 1)?

1 Ответ

0 голосов
/ 12 сентября 2018

Матрицы в Matlab имеют размеры (1 = строки, 2 = столбцы, 3 = глубина, ...). Следовательно, для матрицы

>> A = [2, 3, 4;
        2, 3, 4;
        2, 3, 4]

Суммирование по измерению 1 будет суммированием элементов строки (спускаясь вниз). Суммирование по измерению 2 будет происходить по столбцам (направо) и т. Д.

Теперь также можно определить матрицу, которая не имеет строк, но имеет только столбцы и глубину. Тогда, поскольку размерность строк будет равна нулю, команда sum (A) будет суммировать по столбцам.

>> A = zeros(0,3,3);
>> A(1,:,:) = [2, 3, 4; 2 3 4; 2 3 4]
>> sum(A)
ans(:,:,1) =
     6
ans(:,:,2) =
     9
ans(:,:,3) =
    12
...