Хочу найти среднее значение всех матрицы:Какую функцию или цикл я должен использовать, чтобы усреднить матрицу?
данных = (данных {1} + ...... + Данные {п})/п) , где данные {п} является матрицей м * п ..
Спасибо ооочень много
Хочу найти среднее значение всех матрицы:Какую функцию или цикл я должен использовать, чтобы усреднить матрицу?
данных = (данных {1} + ...... + Данные {п})/п) , где данные {п} является матрицей м * п ..
Спасибо ооочень много
во-первых, вы преобразовать массив ячеек в 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
вокруг, вы можете заменить tmp
Data
, и все будет нормально работать.
В качестве альтернативы, если Data
просто т * п числового массива
averageData = mean(Data,2);
Спасибо за предложения .. – Nadhris
Если массив ячеек действительно большой, вы можете держаться подальше от вышеуказанного раствора из-за его использование памяти. Я бы предложил использовать утилиту mtimesx
, которая доступна у Matlab Central, here.
N = length(Data);
b = cell(N,1);
b(:) = {1};
averageData = mtimesx(Data,b)/N;
В приведенном выше примере я предположил, что данные представляют собой линейную ячейку массива. Я никогда не использовал лично mtimesx
, это решение исходит от there, где обсуждаются вопросы времени.
Надеюсь, это поможет.
A.
Спасибо за помощь .. Я попробую! – Nadhris
«Данные» - это массив 3D? – kennytm