У меня есть массив (1xn) ячеек A, где каждая матрица 1000x1000.Как добавить матрицы внутри массива ячеек?
В принципе, я хочу сделать {1} + A {2} + A {3} + ... + A {N}
Я не знаю размер массива заранее. Поэтому я должен сделать размер (A) и добавить все доступные матрицы внутри.
- Я хочу суммировать все из них с помощью цикла
- Но предпочтительно в векторизованном, как я в конце концов, добавить тысячи из них и нуждается в улучшении скорости.
Как хранить данные в массив ячеек:
for k = 1:length(pcpFileNames)
pcp{k} = imread(pcpFileNames{k}); %Read all pcp files
end
where
pcpFileNames =
'PCPRATE.20110612.000000.tif'
'PCPRATE.20110612.000500.tif'
'PCPRATE.20110612.001000.tif'
'PCPRATE.20110612.001500.tif'
'PCPRATE.20110612.002000.tif'
'PCPRATE.20110612.002500.tif'
'PCPRATE.20110612.003000.tif'
'PCPRATE.20110612.003500.tif'
'PCPRATE.20110612.004000.tif'
'PCPRATE.20110612.004500.tif'
Предлагаемое решение не работает:
pcpAccum = pcp{1};
for m = 2:numel(pcp)
pcpAccum = pcpAccum + pcp{k};
end
Это дает мне неправильные результаты. Я проверил одну из ячеек, и она имеет нулевое значение, хотя оно должно иметь 1,8 (пример).
Рабочий раствор
%Create a multidimensional array to store the data
precip = zeros(3501,7001,length(pcpFileNames)); %Pre-allocating an array
for k = 1:length(precipFileNames)
precip(:,:,k) = imread(precipFileNames{k}); %Read all files
end
pcpAccum = sum(pcp,3);
Если матрицы одинакового размера нет необходимо использовать массив ячеек. – excaza
Каков рекомендуемый способ его хранения? В основном, я использую функцию imread для хранения одинаковых файлов tif в массиве ячеек ... – maximusdooku
Матрицы могут иметь более двух измерений: 'A (:,:, n)'. – excaza