matlab里运用db4小波分解维数出现问题

wname='db4';
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wname);
% subplot(2,2,1);
% stem(Lo_D);
% title('分解低通滤波器');
% subplot(2,2,2); stem(Hi_D);
% title('分解高通滤波器');
% subplot(2,2,3); stem(Lo_R);
% title('重构低通滤波器');
% subplot(2,2,4); stem(Hi_R);
% title('重构高通滤波器');
file_t = fopen('波高数据3.txt','r');
A = fscanf(file_t,'%d');
subplot(2,2,1);
% figure(1);
plot(A(1:256));
x=A(1:256);
hold on;

% N=100;fs=1000; n=0:N-1; t=n/fs;
% x=sin(60*pi*t)+cos(100*pi*t); %原信号
%subplot(2,2,1); plot(x,'-r','LineWidth',1.5);

dim=4;
[cA1,cD1] = mydwt(x,Lo_D,Hi_D,dim);
[cA2,cD2]=mydwt(cA1,Lo_D,Hi_D,dim);
[cA3,cD3]=mydwt(cA2,Lo_D,Hi_D,dim);
[cA4,cD4]=mydwt(cA3,Lo_D,Hi_D,dim);

for i=1:length(cA)
if(abs(cA(i))<100) cA(i)=0;
end
cA(i)=floor (cA(i));
end

for i=1:length(cD)
if(abs(cD(i))<100) cD(i)=0;
end
cD(i)=floor (cD(i));
end

y1 = myidwt(cA1,cD1,Lo_R,Hi_R);
y2 = myidwt(cA2,cD2,Lo_R,Hi_R);
y3 = myidwt(cA3,cD3,Lo_R,Hi_R);
y4= myidwt(cA4,cD4,Lo_R,Hi_R);

subplot(2,2,2);
plot(y(40:200),'r','LineWidth',1.5);
subplot(2,2,3); stem(cA);
title('平均部分小波系数');
subplot(2,2,4); stem(cD);
title('细节部分小波系数');

1个回答

啥也不说了,直接上程序,三维小波分解与重建程序如下
load 波高数据3.txt;
s=nelec(1:256);
[c,l]=wavedec(s,3,'db3');
subplot(421);plot(s);
title('原始信号');
[cd1,cd2,cd3]=detcoef(c,l,[1 2 3]);
ca1=appcoef(c,l,'db1',1);
ca2=appcoef(c,l,'db1',2);
ca3=appcoef(c,l,'db1',3);
subplot(423);plot(cd3);title('第3层高频分解');ylabel('cd3');
subplot(425);plot(cd2);title('第2层高频分解');ylabel('cd2');
subplot(427);plot(cd1);title('第1层高频分解');ylabel('cd1');
subplot(424);plot(ca3);title('第3层低频分解');ylabel('ca3');
subplot(426);plot(ca2);title('第2层低频分解');ylabel('ca2');
subplot(428);plot(ca1);title('第1层低频分解');ylabel('ca1');
X=waverec(c,l,'db1')
subplot(422);plot(X);title('重构信号')
% 从C中重建1、2、3层逼近信号
A1 = wrcoef('a',c,l,'db3',1);
A2 = wrcoef('a',c,l,'db3',2);
A3 = wrcoef('a',c,l,'db3',3);
figure(2),plot(A1);title('第一层逼近信号')
figure(3),plot(A2);title('第二层逼近信号')
figure(4),plot(A3);title('第三层逼近信号')
% 从C中重建1、2、3层细节信号
D1 = wrcoef('d',c,l,'db3',1);title('第一层细节信号')
D2 = wrcoef('d',c,l,'db3',2);title('第二层细节信号')
D3 = wrcoef('d',c,l,'db3',3);title('第三层细节信号')
figure(5),plot(D1);
figure(6),plot(D2);
figure(7),plot(D3);

manfengyu
manfengyu s=nelec(1:256)还要改为s=X____3(1:256);
接近 5 年之前 回复
manfengyu
manfengyu db3改为db4就可以了
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐