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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题