qqvirile 发表于 2008-12-3 09:39

用改进小波做故障诊断

我在做故障诊断的论文 我使用的方法是dwt 和hht实现平台是labview 我的qq是7792937希望和大家交流
我在读杨建国老师的书时 看到有单子带重构算法 他给出一个例子是用400Hz取2048个点
我有点不明白
1 在matlab 如何实现采样频率是400hz
2 重构之后为什么要再次通过上采样+h滤波器
希望大家指点迷津!

qqvirile 发表于 2008-12-4 14:22

回复 楼主 qqvirile 的帖子

用matlab实现400的采样频率我已经做到了 但是我现在还是没有想明白单子带的算法 情知道者指点!谢谢

bkly 发表于 2008-12-5 15:23

2.所谓重构不是一次隔点插零+一次g(或者h)滤波器。
重构需要重构回原始Fs。
也就是分解过几层就需要按原先分解通过滤波器的逆序,一次次重构,得到该子带在原始信号中的重构信号。

从你发的图来看,该子带是(2,2)子带【按matlab的编号是(2,1)子带,matlab从(n,0)开始编号】,其一层分解通过一次h低通滤波,一次隔点采样,二层分解通过一次g高通滤波一次隔点采样;重构需要全部做逆运算

qqvirile 发表于 2008-12-5 21:05

回复 板凳 bkly 的帖子

我再问一句啊!你所说的和wrcoef应该不是一回事吧?能继续解释下么?
就我图上给出的dj+1到底是什么 如果像你说的 是不是就成了愿信号了啊?

qqvirile 发表于 2008-12-5 21:24

我的图

我的图 我补完整了

bkly 发表于 2008-12-7 15:19

额。。我看错了,以为你问的是小波包。。

不过,所谓重构的概念是一样的。

刚才重新看了下杨老师的书,找了下你的图的出处,发现你理解错了。

该图中aj+1的取得是通过:Aj+1,做(隔点插零,低通滤波h)j+1次得到的。
而dj+1的取得是通过:Aj+1,做一次(隔点插零,高通滤波g),然后做(隔点插零,低通滤波)j次得到的。

不知道,这下你明白了没?
就是说该图没有画全,只是区别对待了aj+1,dj+1的第一步,(一个做h,一个做g),后面是相同的,所以用。。。代替了。。。

bkly 发表于 2008-12-7 15:31

另外:
再解释下aj+1或者dj+1的含义。
这个直观上来看就是小波分解系数Aj+1,Dj+1的重构。
从信号角度来说,其实就是原始信号S(频域范围0~Fs/2),在0~Fs/2/2^j+1(aj+1)频段的信号提取。
所以重构是个n次卷积的过程,是需要重构回原始信号长度的。


对于wrcoef函数,我没有研究过它的定义,现在使用的电脑没装malab,明天回实验室,我看下wrcoef源程序,给你个答复,看matlab具体是怎么操作重构的。

bkly 发表于 2008-12-7 18:20

附上wrcoef,关键部分程序
“switch o
case 'a'
    % Extract approximation.
    x = appcoef(c,l,Lo_R,Hi_R,n);
    if n==0, return; end
    F1 = Lo_R;

case 'd'
    % Extract detail coefficients.
    x = detcoef(c,l,n);
    F1 = Hi_R;

otherwise
    error('Invalid argument value.');
end

imin = rmax-n;
x= upsconv1(x,F1,l(imin+1),dwtATTR);
for k=2:n , x = upsconv1(x,Lo_R,l(imin+k),dwtATTR); end”

可以很明显的看出,做case为‘a’的wrcoef,也就是求近似部分重构,是通过n次Lo_R卷积实现的
而case 为‘d’也就是求细节重构,是通过1次Hi_R卷积,和n-1次,Lo_R卷积实现。

qqvirile 发表于 2008-12-7 20:14

回复 8楼 bkly 的帖子

嗯 从程序上看 的确不是一个东西
单子带重构也是成为原来的长度,这点通过你的讲解我已经明白了
对于aj+1我也理解了一点
您的意思是不是说aj+1是Aj+1的重构并且长度与原来的长度是相同的
不知道是这样的不?谢谢

bkly 发表于 2008-12-7 21:05

没错,aj+1的长度是和原始信号S长度相同的。虽然只是S信号中某个频段的信-,但是反复重构隔点插零后,使得aj+1,长度与S相同-
页: [1]
查看完整版本: 用改进小波做故障诊断