wxk8000 发表于 2008-1-9 16:19

小波与hilbert变换结合进行信号包络谱分析

这是我自己搞的一个仿真信号用小波与hilbert变换进行信号包络谱分析的程序
大家看一下,给点意见啊。我是结合书上的编的,有几个地方一直不懂,
1,许多论文上说hilbert变换是这样进行的:原始信号X(t)带通滤波,进行hilbert变换得到x^(t),作为虚部,
然后用w(t)= x(t)+jx^(t)作为解析信号。包络谱的求法是:a(t)=X(t)和x^(t)的平方和再开放.但是这个程序里面怎么没有这个功能??
2,plot((0:nfft/2-1)/nfft*fs,p(1:nfft/2));这句程序有点难懂,麻烦哪位编程高手解释一下??


程序如下:
t=0:0.005:1*pi;
fs=10000
s=4*sin(2*200*pi*t).*(sin(2*4500*pi*t))+25*(sin(2*4500*pi*t));
subplot(411);plot(t,s)
=wavedec(s,1,'db10');
d1=wrcoef('d',c,l,'db10');
a1=0;
subplot(412);plot(d1);title('重构高频信号');
y=hilbert(d1);
y1=abs(y);
ydata=y-mean(y);
nfft=1024;
p=abs(fft(y1,nfft));
figure(2);
plot((0:nfft/2-1)/nfft*fs,p(1:nfft/2));
xlabel('频率');
ylabel('功率谱');

ytq 发表于 2008-1-13 21:46

1   叙述的没错,我机子上没装matlab不好查,再仔细看看hilbert.m,估计是问题不大
2 这句是画图,肯定都明白;我想不明白的是为什么/2,这是因为频谱是对称的,我们只要画正半轴,所以/2

wxk8000 发表于 2008-1-24 15:33

ydata=y-mean(y);
这句是做什么用的??

叶风 发表于 2008-3-21 09:26

plot((0:nfft/2-1)/nfft*fs,p(1:nfft/2));这句话好像是把你的采样信号转换为频率,并且保证横纵坐标的点数是一样的

zxq198206 发表于 2008-3-21 19:34

不错,你这个程序根本就不能实现包络分析的功能,求包络可以用三次样条插值来拟合,
至于包络点你已经知道怎么求解了
那就很容易得到它的包络图了

nishoulong 发表于 2012-9-18 20:29

要正半轴呀

liuxianming456 发表于 2012-12-16 11:50

“ 这句是画图,肯定都明白;我想不明白的是为什么/2,这是因为频谱是对称的,我们只要画正半轴,所以/2”
因为数据的采集都是一个转换过程,采样都需要遵守一个采样定理,因为有这个采样定理,所以你最后要是不将频谱/2,你得到的频谱图就是一个对称的。
页: [1]
查看完整版本: 小波与hilbert变换结合进行信号包络谱分析