声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2546|回复: 8

[小波] 小波实时滤波的问题

[复制链接]
发表于 2007-8-23 15:44 | 显示全部楼层 |阅读模式

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

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

x
我刚学习小波,时间不长,因为有些数据想尝试用小波处理,但是又觉得不可行,请各位学友不吝赐教。
   具体是这样的:通常我们用小波降噪都是基于一串数据,整体处理,如阈值法,每次都进行抽取,所以数据点数越来越少,我现在想对一组数据进行实时消噪处理,即:每接收一个数据,立刻得用小波变换对其进行降噪处理。

比如:信号s(n)的处理过程如下:
    for i = 1:n
        对s(i)进行降噪处理
        保存处理结果
    end
据说多孔算法可以实时处理,我也看了这个算法,觉得好像不可以这么做。不知是否理解有误。
回复
分享到:

使用道具 举报

发表于 2007-8-23 22:28 | 显示全部楼层
用非抽样小波变换,就可以避免抽取。
可见杨福生的《小波变换的工程分析与应用》
更详细的可以去看外国外献,就是trous algorithm那篇!

评分

1

查看全部评分

 楼主| 发表于 2007-8-24 21:00 | 显示全部楼层
可是我在用MATLAB的SWT时会出现错误:
2^Level has to divide the length of the signal.
*************************************************

??? Error using ==> swt
Too many output arguments.
信号长度显然不对。

clc;
clear all;
load noisbloc;
s = noisbloc;
N = length(s);
for i = 1:N;
   [swa,swd] = swt(s(i),3,'db1');
end

SWT是一维平稳小波分解,也就是trous算法. 书上说的:(
 楼主| 发表于 2007-8-25 18:44 | 显示全部楼层
:@(
没有人回吗?
发表于 2007-8-25 22:08 | 显示全部楼层
你这个是matlab程序编写的问题
只是对一个点进行SWT,当然不行啊。
使用SWT时,信号的长度好像必须是滤波器长度的2倍以上。
估计不能一点一点的降,应该针对一段数据。
 楼主| 发表于 2007-8-26 09:48 | 显示全部楼层
数据长度是2^level次方,level是分解级数
如果我自己写分解重构的代码呢?应该结果是一样的,都是通过滤波器,卷积什么的。。。

谢谢破凰!~~
发表于 2007-8-27 20:29 | 显示全部楼层
个人认为对单个点进行小波变换显然是不现实的,
就算是非抽样的小波变换,也是要交叉计算的。
swt这个连续小波变换也不能做单个点的小波变换。

我觉得应该把以前的点保留下来一起算。
没有其他点的参考,根本不可能知道噪声和原始信号的分界。

另外你看看冗余小波的资料吧,
冗余小波变换在进行分解计算时,信号经过扩展后的高通滤波器和低通滤波器滤波后,不进行隔二抽取运算,直接将滤波后的信号作为逼近信号和细节信号。由于不进行隔二抽取运算,冗余小波变换得到的逼近信号和细节信号与原始信号的长度相同,保留的信号信息更丰富。

评分

1

查看全部评分

 楼主| 发表于 2007-8-28 11:12 | 显示全部楼层
a trous也不进行隔二抽取:(

再就是,滤除以后的数值会用来参与其它的计算,实时处理的,所以把以前的点保留下来一起计算的话,应该行不通。

其实我就是想把常规滤波器通带内的噪声去掉。:@( ,本来小波是个很不错的选择,可惜需要实时处理,就变麻烦了。

大侠们有没有好的idea?
发表于 2007-11-28 16:45 | 显示全部楼层
声明先:我不懂递归小波变换,看到有论文里说它可以适时计算.
所以我想也许递归小波变换可以考虑!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-18 19:49 , Processed in 0.064425 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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