dinar_heu 发表于 2007-8-23 15:44

小波实时滤波的问题

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

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

破凰 发表于 2007-8-23 22:28

用非抽样小波变换,就可以避免抽取。
可见杨福生的《小波变换的工程分析与应用》
更详细的可以去看外国外献,就是trous algorithm那篇!

dinar_heu 发表于 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;
    = swt(s(i),3,'db1');
end

SWT是一维平稳小波分解,也就是trous算法. 书上说的:(

dinar_heu 发表于 2007-8-25 18:44

:@(
没有人回吗?

破凰 发表于 2007-8-25 22:08

你这个是matlab程序编写的问题
只是对一个点进行SWT,当然不行啊。
使用SWT时,信号的长度好像必须是滤波器长度的2倍以上。
估计不能一点一点的降,应该针对一段数据。

dinar_heu 发表于 2007-8-26 09:48

数据长度是2^level次方,level是分解级数
如果我自己写分解重构的代码呢?应该结果是一样的,都是通过滤波器,卷积什么的。。。

谢谢破凰!~~

jytan 发表于 2007-8-27 20:29

个人认为对单个点进行小波变换显然是不现实的,
就算是非抽样的小波变换,也是要交叉计算的。
swt这个连续小波变换也不能做单个点的小波变换。

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

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

dinar_heu 发表于 2007-8-28 11:12

a trous也不进行隔二抽取:(

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

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

大侠们有没有好的idea?

wuyuzi 发表于 2007-11-28 16:45

声明先:我不懂递归小波变换,看到有论文里说它可以适时计算.
所以我想也许递归小波变换可以考虑!
页: [1]
查看完整版本: 小波实时滤波的问题