какую функцию или цикл я должен использовать для усреднения матрицы? - PullRequest
1 голос
/ 27 августа 2010

Я хочу найти среднее значение для всей матрицы:

Данные = (Данные {1} + ...... + Данные {n}) / n), где Данные {n} - этоМатрица м * н ..

Спасибо ооочень большое

Ответы [ 2 ]

2 голосов
/ 27 августа 2010

Сначала вы конвертируете свой массив ячеек в трехмерный массив, затем вы можете взять среднее значение, например:

tmp = cat(3,Data{:}); %# catenates the data, so that it becomes a m*n*z (or m*1*n)
averageData = mean(tmp,3); %# takes average along 3rd dimension

Примечание: если у вас возникают проблемы с памятью и вам не нужно хранить переменную Data, вы можете заменить tmp на Data, и все будет работать нормально.

В качестве альтернативы, если Data - это просто числовой массив m * n

averageData = mean(Data,2);
1 голос
/ 27 августа 2010

Если ваш массив ячеек действительно большой, вы можете отказаться от вышеуказанного решения из-за его использования памяти. Затем я бы предложил использовать утилиту mtimesx, которая доступна в Matlab Central, здесь .

N = length(Data);
b = cell(N,1);
b(:) = {1};
averageData = mtimesx(Data,b)/N;

В приведенном выше примере я предположил, что Data - это линейный массив ячеек. Я никогда не использовал лично mtimesx, это решение взято из там , где также обсуждаются вопросы синхронизации.

Надеюсь, это поможет.

A.

...