|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
外行请教,看了一些书和论坛上的东西,但是实际解决起问题来还是有很多没有办法下手的地方,希望大家多多指教
需要解决的问题:根据测得的振动源的加速度,来求在一定距离处的A计权声压级
所测振动源有不封闭的外壳,所测点位于外壳之外的一定距离处。
为了找到振动源加速度和一定距离处A计权声压级之间的关系,给振动源固定频率100Hz的驱动力(由于驱动中含有线圈,所以驱动力实际为100Hz的整数倍),下附图为振动加速度信号和声压信号的fft图,从图中可以看出振动加速度信号和声压信号都分布在100Hz的整数倍处,但是要如何找这两者之间的关系,我还是无从下手,希望高手指点。
另外,我想从声压信号得到A集权的声压级,下面为所编MATLAB程序
data=csvread('F0068CH2.CSV',0,3);
noi=data(:,2);
[p,ff]=oct3bank(noi);
plot(ff,p);
Cj=[-50.5 -44.7 -39.4 -34.6 -30.2 -26.2 -22.5 -19.1 -16.1 -13.4 -10.9 -8.6 -6.6 -4.8 -3.2 -1.9 -0.8 0 0.6 1.0 1.2 1.3 1.2 1.0 0.5 -0.1 -1.1 -2.5 -4.3 -6.6]
La=0;
Lj=zeros(1,30);
for n=1:30
Lj(n)=10^(0.1*(10*log10(p(n)/(10*exp(-12)))+Cj(n)));
end
La=10*log10(sum(Lj));
function [p,ff] = oct3bank(noi);
pi = 3.14159265358979;
Fs = 500000; % Sampling Frequency
N = 3; % Order of analysis filters.
ff=[20 25 31.5 40 50 63 80 100 125 160 200 250 315 400 500 630 800 1000 1250 1600 2000 2500 3150 4000 5000 6300 8000 10000 12500 16000]
p = zeros(1,30);
% Design filters and compute RMS powers in 1/3-oct. bands
for i = 1:30
[B,A] = oct3dsgn(ff(i),Fs,N);
y = filter(B,A,noi); %<-----滤波器
p(i) = sqrt(var(y)); %得到rms
end
function [B,A] = oct3dsgn(Fc,Fs,N);
pi = 3.14159265358979;
f1 = Fc/(2^(1/6));
f2 = Fc*(2^(1/6));
Qr = Fc/(f2-f1);
Qd = (pi/2/N)/(sin(pi/2/N))*Qr;
alpha = (1 + sqrt(1+4*Qd^2))/2/Qd;
W1 = Fc/(Fs/2)/alpha;
W2 = Fc/(Fs/2)*alpha;
[B,A] = butter(N,[W1,W2]);
算出来的值与用声级计测出来的值相差甚远,希望大家能帮我看看程序,问题到底处在什么地方?谢谢! |
-
振动信号fft
-
噪声信号fft
|