|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 wdhd 于 2016-8-23 10:49 编辑
本人刚接触信号处理方面的知识,遇到的问题求解一组检测信号的是1/3倍频程。因为主要关心振源产生的振动对精密仪器的影响,因此主要关心的频率段为1~80Hz范围,也就是相对较低的部分。
此前认真搜索了本论坛这方面的知识,遇到了几个问题,还希望各位高人能够予以指点。
首先是在gogo885的帖子,
http://forum.vibunion.com/thread-49623-1-1.html
其中程序的核心部分也根据songzy41老师的建议,部分程序如下:
sf=500;
f=[1.00 1.25 1.60 2.00 2.50 3.15 4.00 5.00 6.30 8.00];
fc=[f,10*f,100*f];
oc6=2^(1/6);
nc=length(fc);
n=length(x);
nfft=2^nextpow2(n);
freqStep=sf/n;
freq=freqStep*(-(n-1)/2:(n-1)/2);
a1= fft(a,nfft);
a2=abs(a1);
a3=fft(a,nfft)*2/n;
a4=abs(a3);
for j=1:nc
fl=fc(j)/oc6;
fu=fc(j)*oc6;
nl=round(fl*nfft/sf+1);
nu=round(fu*nfft/sf+1);
if fu > sf/2
m=j-1;break
end
b=zeros(1,nfft);
b(nl:nu)=a1(nl:nu);
b(nfft-nu+1:nfft-nl+1)=a1(nfft-nu+1:nfft-nl+1);
c=ifft(b,nfft);
yc(j)=sqrt(var(real(c(1:n)))); <---疑问
end
主要的疑问是,上面的c(1:n)是否是c(1:nfft)呢??
此外,songzy41老师还推荐1/3倍频程的程序在MATHWORKS上给的函数,经简要改造后如下:
******************************************
function [B,A] = oct3dsgn(Fc,Fs,N);
if (nargin > 3) | (nargin < 2) %nargin变量的个数
error('Invalide number of arguments.');
end
if (nargin == 2)
N = 3;
end
if (Fc > 0.88*(Fs/2))
error('Design not possible. Check frequencies.');
end
% Design Butterworth 2Nth-order one-third-octave filter
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]);
********************************************
function [p,f] = oct3bank(x);
pi = 3.14159265358979;
Fs = 200; % Sampling Frequency
N = 3; % Order of analysis filters.
ff = ((2^(1/3)).^[0:19]); % Exact center freq.
p = zeros(1,20);
% Design filters and compute RMS powers in 1/3-oct. bands
for i = 1:20
[B,A] = oct3dsgn(ff(i),Fs,N);
y = filter(B,A,x); %<-----滤波器
p(i) = sqrt(var(y)); %得到rms
end
*****************************************
但是另外一个问题是,采用以上两种方法得到的结果,却总是和仪器自带软件的处理结果有一定差异,特别是在低频阶段差异较明显。仪器的说明上说是采用FIR滤波器,因此,在这里请教各位老师前辈:
采用滤波器对1/3倍频程的影响表现在那些方面?
建议采用哪种滤波器能适合这种较低频率的1/3倍频程求解???
[ 本帖最后由 hotman007 于 2008-4-17 16:24 编辑 ] |
|