在Cell中存储每一行图像的CWT



我想计算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个矩阵的平均值。这里我得到错误

不能从double类型转换为cell类型。

soilwave (line 12) coefs(i) = cwt(K,1:128,'morl');

谁能建议一个更好的方法或调整这个

如果您需要存储格式或尺寸不一致的元素,单元格数组是实用的,但是对于您正在尝试做的事情,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);

最新更新