jycyglxt 2015-09-01 06:58 采纳率: 0%
浏览 2650

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条回答 默认 最新

  • manfengyu 2015-09-02 08:32
    关注

    啥也不说了,直接上程序,三维小波分解与重建程序如下
    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);

    评论

报告相同问题?

悬赏问题

  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 请教一下c语言的代码里有一个地方不懂
  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档