采集到的时域信号如何求出有效值
对于求有效值的方法仍是不大明白,先再发一帖,希望经验丰富的老师们指点一二。附件中是保存的采样后的数据信息,附件下载后将文件后缀名.txt 改为 .rar(数据较大传不上来,所以压缩了,请以压缩文件打开)
采样频率30KHZ,采样时间1S。
最后分析频率也即计算有效值的频率段为50~10KHZ
有效值单位为dB,基准加速度a0=9.81×10^-3m/s^2
仪器上显示的有效值为31.1dB
我把数据用matlab做fft变换:y=abs(fft(data))*2/length(data),然后将50~10KHZ的幅值导入excel用公式:有效值=SQRT(SUMSQ(幅值)),
dB=20*log10(有效值/0.00981)
最后得出的结果有效值=6.245 dB=56.077dB,和31.1dB错那么远,我无论如何也得不到正确的结果,而且作出的时域图貌似也不对?
恳请高人指点,谢谢! 难道没人可以算出来么:@o:@o:@o 继续顶起,不信没人:@( :@( :@(
回复 楼主 byhu2008 的帖子
你这是什么数据,是振动数据吗?为什么正多负少?如果是振动数据应该将所有数值a减去平均值。
有效值的计算可以用下式计算,不用做FFT:
有效值=SQRT((a1^2+a2^2+a3^2+。。。。。。+an^2)/ n) 同意楼上的意见
data=data-mean(data);
rms=norm(data)/sqrt(length(data));
dB=20*log10(rms/0.00981);
回复 地板 hcharlie 的帖子
采集的是振动数据,至于为什么正多负少我也不知道,反正仪器保存后的数据就是这样。就是结果算不对。[ 本帖最后由 byhu2008 于 2010-8-6 21:47 编辑 ]
回复 5楼 kiddjiang 的帖子
可是这样结果算出来是dB =54.3518,而实际结果应该是31.1,为什么错那么远呢? 小的鄙见 +filter, try!?Ex:
function =BF(data)
n=4; %4 older
Wn_H=100/2500;
Wn_L=1000/2500;
=butter(n,Wn_H,'High');
y=filter(b1,a1,data);
=butter(n,Wn_L,'Low');
x=filter(b2,a2,y);
butter_filter=x;
[ 本帖最后由 korec2200 于 2010-8-7 00:22 编辑 ] .
有效值定义不是一个积分吗?等效“有效值=SQRT((a1^2+a2^2+a3^2+。。。。。。+an^2)/ n)”?
回复 楼主 byhu2008 9楼 欧阳中华 的帖子
有效值也定义为 SQRT((a1^2+a2^2+a3^2+。。。。。。+an^2)/ n)” !我算得平均值=7.405;去平均值以后的总RMS=5.120 m/s^2;54.35dB这个值应该是最直观的。
50~10K间的RMS应该小于5.12
[ 本帖最后由 hcharlie 于 2010-8-7 10:54 编辑 ]
回复 10楼 hcharlie 的帖子
现在问题是仪器上显示的实际值是31.1dB,这个值和54.35dB错的太远了,不知道问题在哪?回复 11楼 byhu2008 的帖子
你的0 dB=0.001g54dB=0.5g
31dB=0.036g
这两个振动量级相差14倍,你的实际振动究竟是哪个量级,你也没有数吗?RMSG=0.5g有点麻手,另一个很平静的!
顺便说一下,我替你做了,50~10000Hz内的RMS约等于总RMS 5.12的0.86倍,约为 4.40m/s2
[ 本帖最后由 hcharlie 于 2010-8-7 16:18 编辑 ]
回复 12楼 hcharlie 的帖子
31.1dB是正确的,我现在是想知道求有效值的正确方法,因为我算的结果也是很大的,无法得到正确的有效值。另外,传感器的灵敏度是43mV/(m/^2),但是把数值除以灵敏度后又会变得很小。真不知道是怎么回事。
还有数据正多负少的问题在减去平均值后就好了。
[ 本帖最后由 byhu2008 于 2010-8-7 18:39 编辑 ] 这是怎么回事呢!学习...... 我也困惑中。。。
页:
[1]
2