Хранение CWT каждого ряда изображения в ячейке
Я хочу вычислить морлет вейвлет каждой строки изображения 480X480. Я должен сохранить выходные данные преобразования каждой строки, которая является двумерным массивом (матрица).
Затем я возьму среднее значение для всех 480 2d матриц, которые мне нужны, чтобы получить один окончательный график среднего значения.
clc;
close all;
clear all;
I=imread('lena.jpg');
J=rgb2gray(I);
%K=J(1:480)
%coefs = cwt(K,1:128,'morl','plot');
coefs = cell(480,1);
for i = 1:480
K=J(i,:);
coefs(i) = cwt(K,1:128,'morl');
end
Здесь я хочу взять среднее из 480 коэффицентных матриц. Здесь я получаю сообщение об ошибке
Преобразование в ячейку из двойного невозможно.
Ошибка в грунтовых волнах (строка 12) coefs(i) = cwt(K,1:128,'morl');
Может ли кто-нибудь предложить лучший метод или настройки к этому.
1 ответ
Массивы ячеек практичны, если вам нужно хранить элементы, которые имеют несовместимый формат или размеры, но для того, что вы пытаетесь сделать, с трехмерным массивом легче работать. Вот что я бы сделал:
Предварительно назначить 3D-массив:
coefs = zeros(128, size(J, 2), size(J,1));
затем вычислите и заполните стек:
for ii = 1:size(J, 1)
K=J(ii,:);
coefs(:,:,ii) = cwt(K,1:128,'morl');
end
Наконец, вычислите среднее значение по третьему измерению:
MeanCoeff=mean(coefs, 3);