声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 801|回复: 0

[综合讨论] 求教小波多孔算法遇到的误差问题

[复制链接]
发表于 2008-5-7 09:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我使用小波进行谐波分析,刚开始采用了Mallat多分辨率算法,可是由于2抽取会使数据量大大减小,不利于以后的基频提取,所以现在采用了多孔算法。可是新的问题是分解以后的信号波形不是从横轴坐标零点开始,而是有一个很大的偏移,且这些偏移的数值不是零,这对于我判断信号的起点会造成很大的误差,请问这是小波里的什么问题,如何解决?下面是主要的程序和基波信号的波形:
function[cA,cD]=mytrous(x,dim);
%函数[cA,cD]=MYTROUS(X,DIM)对输入序列x进行一维离散小波分解,输出分解序列[cA,cD]
%输入参数: x---输入序列;
%         dim---小波分解级数;
%输出参数:cA---平均部分的小波分解系数;
%         cD---细节部分的小波分解系数。
figure(10000)
plot(x);
title('输入信号')

cA=x; %初始化cA,cD
cD=[];
N=length(cA);

l1=wfilters('db5','l')*sqrt(2)/2; %参考低通滤波器
h1=wfilters('db5','h')*sqrt(2)/2; %参考高通滤波器

for i=1:dim
    l1_zeros=[l1,zeros(1,N-length(l1))]; %低通滤波器1
    h1_zeros=[h1,zeros(1,N-length(h1))]; %高通滤波器1
    low=conv(cA,l1_zeros);
    high=conv(cA,h1_zeros);
   
    figure(i)
    subplot(2,1,1)
    plot(real(low));
    title('分解信号1')
    subplot(2,1,2)
    plot(real(high));
    title('分解信号2')
   
    cA=low; %下抽样后的平均系数进入下一层分解
    cD=[cD,high]; %将本层分解所得到的细节部分系数存入序列cD
    l1=dyadup(l1); %原滤波器插值
    h1=dyadup(h1); %原滤波器插值
end

file:///D:/1.jpg

[ 本帖最后由 eight 于 2008-5-7 11:13 编辑 ]
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 06:03 , Processed in 0.055712 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表