2010-08-27 6 views

ответ

2

во-первых, вы преобразовать массив ячеек в 3D-массив, то вы можете взять среднее, например:

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 вокруг, вы можете заменить tmpData, и все будет нормально работать.

В качестве альтернативы, если Data просто т * п числового массива

averageData = mean(Data,2); 
+0

Спасибо за предложения .. – Nadhris

1

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

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

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

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

A.

+0

Спасибо за помощь .. Я попробую! – Nadhris

Смежные вопросы