关于信号处理的一些问题
我在做故障诊断,在实验过程中需要处理数据,提取故障特征,主要是应用FFT,我遇到一些问题,跟大家讨论一下我的试验数据是记录电涡流传感器的电压值,来换算成振动幅值的。一次试验中,采样频率1000HZ,转速2590转,碰摩试验,一共记录了 13000多个试验数据。
在进行完去掉直流分量后,我遇到几个问题
问题1、还要滤波吗,我还需要去除高频分量吗?这个试验中可能出现的最高频率不过是450HZ左右。
问题2、为了保证1HZ的分辨率,我做FFT时采用了1024个点,
三个问题:
1) 这1024个点不是整周期,对数据的处理影响大吗?
2) 1024个点做FFT效果不太好,如果我去8182个点做FFT,理论上可以吗?
3) 在截取这些数据点的时候,用对这些点进行加窗处理吗?不加窗,相当于加矩形窗,如果加窗,在matlab中,w=hanning(1024); 这是窗函数 y1=y1.*w;y1为1024个数据点,两者直接点乘对吗?还是说要对这1024个数据点中的每个周期分别加窗?
问题3、FFT的后续处理,在进行完FFT处理后,我要计算出0-0.39f0.39f-0.49f0.50f0.51f-0.99ff2f3f-5f大于5f,这8个频率段的振幅,f为工频。我的处理方法是,数据的FFT处理,将一个波,分解为频率从0一直道500HZ的各次谐波,这些谐波的模就是对应频率的幅值,通过FFT图可以看到从0-500HZ这整个频率段的振幅值,我就计算对应频率段的那些FFT的数据点,将他们的模相加即为需要计算的频率段的幅值和,这种计算方法有问题吗?
问题4、在通用的汽轮机故障诊断中应用的“故障病症与故障征兆表”,Sohre.J.S编写的那个表中,如图所示
(0.01~0.39)f
(0.40~0.49)f
0.50f
(0.51~0.99)f
1倍工频
2倍工频
(3~5)f
奇数倍频
>5f
转子初始不平衡
0.90
0.05
0.05
转子不对中
0.40
0.50
0.10
转子红套过盈不足
0.30
0.30
0.10
0.10
0.10
0.10
0.10
油膜涡动
0.10
0.80
0.10
油膜振荡
1.0
碰摩
0.10
0.10
0.10
0.10
0.25
0.10
0.15
0.10
0.10
0-0.39f0.39f-0.49f0.50f0.51f-0.99ff2f3f-5f大于5f 这些频率段对应的数字表示的是振幅值,功率值还是能量值
问题5、 我所计算的各段频率数据需要进行归一化,在不同的论文中我一共见过3中不同的归一化公式分别为 1)x(i)=(x(i)-x(min))/(x(max)-x(min)) x(i)第i个频段的幅值 x(max)所有有频段中的最大振幅 x(min)所有频段中的最小振幅。2)x(i)/(sum(x1+x2+...+x8)) 3)x(i)/sqrt(sum(x(i)^2)) 平方和再开根号
大家认为应该用哪个呢?
问题6、在FFT中,振幅大的地方,相邻的两个谐波会有过渡,这对计算一个频率段的幅值和有很大的影响,造成这一个频率段的幅值和是别的频率段的几倍,甚至十倍,这段诊断有影响吗?应该怎么做?
下面是我程序,试验数据太大了,传不上来。
fs=1000;%采样频率
f=2950/60;%计算工频
a=fs/f%一个周期的采样点数
a=floor(a)
=textread('E:\论文\论文主体结构\9 试验数据\data\data\pm11t.txt','%f%f%f%f%f');
m=length(a1)
t=(0:1/fs:(m-1)/fs)';%数据的时间
b1=polyfit(t,a1,4);
y1=(a1-polyval(b1,t))/80;%4阶去除趋势项,取出直流分量
y1=y1(1001:9192);%截取8182各数据点
m=length(y1)
t=(0:1/fs:(m-1)/fs)';%这些点的时间
plot(t,y1)
nfft=2^nextpow2(m)
w=hanning(nfft);%窗函数
y1=y1.*w;%加窗
plot(t,y1)
y=fft(y1,nfft)/nfft;%FFT计算
y=abs(y(1:nfft/2));
ff=fs*(0:(nfft-1)/2)/nfft;%计算频率
plot(ff,abs(y(1:nfft/2)));
c=floor((nfft/2)/(fs*((nfft-1)/2)/nfft))%1HZ在FFT的数据处理中占几个数据点
y11=floor(0.39*f*c);%0.39F所占的数据点
y1=sum(abs(y(1:y11)))%计算这些点的幅值和
y21=floor(0.39*f*c); %
y22=floor(0.49*f*c);
y2=sum(abs(y(y21:y22)))
y31=floor(0.50*f*c);
y3=sum(abs(y(y31-c:y31+c)))/3
y41=floor(0.51*f*c);%
y42=floor(0.99*f*c);
y4=sum(abs(y(y41:y42)))
y51=floor(f*c);
y5=sum(abs(y(y51-c:y51+c)))/3
y61=floor(2*f*c);
y6=sum(abs(y(y61-c:y61+c)))/3
y71=floor(3*f*c);%
y72=floor(5*f*c);
y7=sum(abs(y(y71:y72)))
y81=floor(5*f*c);%
y8=sum(abs(y(y81:nfft/2)))
谢谢大家的指导
[ 本帖最后由 benben767 于 2007-8-29 15:31 编辑 ] 1 如果不是想在时域上看去掉高频后的样子,那就没必要进行滤波了。
2 (1)影响还是比较大的,有必要精确的话,还是要做校正。
(2)增加点数可提高频率分辨率,拉开了各成分间的距离,也可减小干涉,但不能减小幅值和相位的最大可能误差。
(3)如果各频率成分相隔较近,频谱不够干净的话,还是加窗来减小干涉,直接点乘。
3 我觉得用应该功率相加,因为能量才能直接相加得到能量(功率和能量应该只差一常数),幅值相加后不具物理意义。
4 同3.
5 我比较认同3),理由同3。
6 过渡是什么意思,是不是过密发生干涉了。最好能上图。 问题2、我计算过记录一个周期要20个点,做1024个点得FFT,误差是4个点,这样误差应该不大吧,因为如果做FFT,必须是2得整数次幂,否则就要截断或者补零
问题4、那个公式,归一完了,几段频率之和不是1啊,这根表中数据有差距
问题6、我做了1024、8192个点得图发在帖子理了,比如在40HZ左右得几个点,都有幅值,加起来可就将近17了,太大了 2 4个点相对于基本周期的20个点已经有0.2的偏差了,相对于其谐次来说就更大了。要精确的话还是加校正,如果同步较好,加的窗是矩形窗的话,就不会出现6的问题,一个频率应该只对应一条谱线。
4这个你还是查查那个表是怎么规定的,不同定义法对应的经验值也会不同。
6 这还是由于不同步引起的,建议还是把功率谱相加,这样有帕什瓦尔定理支撑,而不要把这几个幅值相加。
探讨
楼上的偏差0.2好像计算不对。应该大约是4/1020,,可以取整周期函数模拟一下。也就是说,如果不是整周期采样,那么多采样几个周期可以降低偏差。 菜鸟级问题求教1、
f=2950/60;%计算工频为什么这样可以计算出工频,而且为什么要计算工频?
2、
a=fs/f%一个周期的采样点数为什么采样频率除以工频就能计算出采样点数?
页:
[1]