求助关于FIR软件滤波
我用PCI5102卡采集到的信号,采样率为10MS/s,希望能够将50Hz的工频电信号滤掉,从别人那里拷来的滤波程序,但对其中的参数设置没搞懂,向大侠们请教,程序如下:void FIRFilter(double *input, double *output)
{
char errorflag=0;
intstatus, firtype=1, firtaps=501, daqrecordlength;
double firfl, firfh, *temp, *FIRCoeffs;
daqrecordlength=(int)(setsamprate/setvolfrequency);
temp = malloc(sizeof(double)*(daqrecordlength+firtaps));
FIRCoeffs = malloc(firtaps*sizeof(double));
firfl=50.0;
firfh=setsamprate/2;
Clear1D(FIRCoeffs,firtaps);
status = FIR_Coef (firtype, setsamprate, firfl, firfh, firtaps, FIRCoeffs);
if (status != NoAnlysErr)
{
MessagePopup(" 错误", "FIR滤波参数设置有误!");
errorflag = 1;
}
if (errorflag!=1)
{
Clear1D(temp,daqrecordlength+firtaps);
Convolve (input, daqrecordlength, FIRCoeffs, firtaps, temp);
Copy1D (temp, daqrecordlength, output);
}
free(FIRCoeffs);
free(temp);
}
问题1:参数firtaps的值应设置为多少合适?改变firtaps的值会影响那些东西?
问题2:若要滤掉50Hz以下的信号,为什么firfl设置到5000以上才见到效果?
问题3:不论是低通方式还是高通方式,改变firfh的值似乎并不影响滤波效果,是这样吗? firfh是上截止频率,低通和高通只跟下截止频率有关。请问FIR_Coef 这个函数是从哪里得到的,lvanlys.dll?但是这个动态链接库可以在labview平台外,如vb里调用吗?我现在也在做关于滤波的一个课题。急需FIR_Coef 这个函数的使用,请帮忙!!!
回复 #2 xingzhi 的帖子
在“高级分析库”下面的“信号处理”下面的“ FIR滤波”里有这个函数 这个函数是被包含在labview下的lvanlys.dll中,好像不能在vc中调用该dll,说是只能在labview才能使用。有其他办法解决吗?谢谢
页:
[1]