我想计算每行480X480图像的morlet小波。我必须保存每行变换的输出,这是一个二维数组(矩阵)。
然后我将取平均值所有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个coeff矩阵的平均值。这里得到错误
无法从double转换为单元格。
土壤波的错误(第12行)coefs(i)= cwt(K,1:128,' morl');
有人可以提出更好的方法或对此进行调整。
答案 0 :(得分:1)
如果您需要存储格式或尺寸不一致的元素,则单元格数组很实用,但对于您要执行的操作,3D数组更易于使用。这就是我要做的事情:
预先指定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);