HOWTO · MATLAB

Obtenha a média do array com a função mean() no MATLAB

Pode-se encontrar a média ou média de um array usando a função mean() no MATLAB.

Nesta página

Use a função mean do MATLAB para calcular a média de um vetor ou as médias ao longo de uma dimensão de uma matriz. Para uma matriz bidimensional típica, mean(A) retorna uma média por coluna; use mean(A,2) para obter uma média por linha. O exemplo de vetor abaixo exibe 4 e foi executado com sucesso.

Calcular a média de um array com a função mean do MATLAB

Para um vetor, passe-o como entrada de mean. Este exemplo completo e independente usa uma sintaxe compatível com Octave e também é válido em MATLAB:

Execute este exemplo:

values = [2, 4, 6];
average = mean(values);
disp(average)
4

Para uma matriz A, o MATLAB aplica mean(A) à primeira dimensão cujo tamanho não é 1. Em uma matriz comum, essa é a dimensão 1; por isso, o resultado é um vetor linha com as médias das colunas. Use mean(A,2) para selecionar a dimensão 2; o resultado é um vetor coluna com as médias das linhas. No resultado, a dimensão selecionada é reduzida a 1, enquanto a outra é mantida.

Também é possível especificar o tipo de saída. Por exemplo, mean(A,'double') solicita uma saída do tipo double e usa a dimensão padrão; mean(A,2,'double') combina o cálculo por linha com esse tipo de saída. A opção de tipo não seleciona a dimensão.

Calcular médias de arrays com sum e divisão

A média é a soma dos valores dividida pela quantidade deles. Para calcular uma única média de todos os elementos de uma matriz, transforme-a em um vetor com A(:) e divida sum(A(:)) por numel(A). numel conta todos os elementos; length retorna o tamanho da dimensão mais longa e, portanto, não substitui de forma geral a contagem de elementos de uma matriz.

Para calcular médias por dimensão, use uma soma e a contagem correspondente. As médias das colunas podem ser calculadas com sum(A,1) ./ size(A,1): cada soma de coluna é dividida pelo número de linhas. As médias das linhas podem ser calculadas com sum(A,2) ./ size(A,2): cada soma de linha é dividida pelo número de colunas. O divisor deve contar os valores incluídos em cada soma correspondente.

Esse método manual é útil para visualizar como o cálculo funciona ou adaptá-lo. Para cálculos rotineiros, mean expressa a intenção com mais clareza.

Calcular médias de arrays com um loop

Um loop torna visível a etapa de acumulação. No exemplo, o total do vetor é escalar, os totais das colunas formam um vetor linha e os totais das linhas formam um vetor coluna. O loop das colunas soma cada linha e divide pelo número de linhas; o loop das linhas soma cada coluna e divide pelo número de colunas.

values = [2, 4, 6];
vectorTotal = 0;
for k = 1:numel(values)
    vectorTotal = vectorTotal + values(k);
end
vectorMean = vectorTotal / numel(values);

A = [1, 2; 3, 4; 5, 6];
columnTotals = zeros(1, size(A, 2));
for row = 1:size(A, 1)
    columnTotals = columnTotals + A(row, :);
end
columnMeans = columnTotals / size(A, 1);

rowTotals = zeros(size(A, 1), 1);
for column = 1:size(A, 2)
    rowTotals = rowTotals + A(:, column);
end
rowMeans = rowTotals / size(A, 2);

Esses padrões com loops são alternativas didáticas. Para um vetor, numel(values) conta todas as entradas. Para um resultado de matriz, use o número de linhas para as médias das colunas ou o número de colunas para as médias das linhas. A função mean integrada ao MATLAB é mais clara para cálculos rotineiros.

Escolher um método

Use mean para calcular médias de vetores, colunas ou linhas: o argumento de dimensão deixa claro qual resultado você quer e evita manter uma contagem separada. Use sum com um divisor adequado à dimensão quando precisar mostrar ou personalizar a operação aritmética. Use um loop para aprender como funciona a acumulação ou quando o cálculo incluir lógica adicional para cada elemento. Em todos os métodos, escolha um divisor que corresponda aos valores incluídos na soma.