purplejack 发表于 2009-12-14 10:56

已知低通和高通数据怎样得带通数据

我对滤波不太懂但现在要用lanczos带通滤波。前几天我找到了一个lanczosfilter()的程序,但程序只能实现低通或者高通的功能,我可以调用两次得到低通和高通的数据但我要的是带通的数据,接下来应该怎么弄?用二者平均行吗?好像没这个道理吧
举个例子,主程序代码如下:
dT = 30; % min
   N = 7*24*60/dT; t = (0:N-1)*dT; % data for 7 days
pnoise = 0.30; T1 = 12.4*60; T2 = 24*60; T3 = 15*24*60; Tc = 10*60; % min
   xn = 5 + 3*cos(2*pi*t/T1) + 2*cos(2*pi*t/T2) + 1*cos(2*pi*t/T3);
   xn = xn + pnoise*max(xn-mean(xn))*(0.5 - rand(size(xn)));   
    = lanczosfilter(xn,dT,1/Tc,[],'low');
    = lanczosfilter(xn,dT,1/Tc/2,[],'high');
%xs3=xs2-xs; c3=c2-c; h3=h2-h; Cx3=Cx2-Cx; f3=f2-f;
   subplot(211), plot(t,xn,t,xs), legend('noisy','smooth'), axis tight
   subplot(212), plot(f,h,f,h2,f,abs(Cx)/max(abs(Cx)),...
      /Tc,,'-.',...
      ,(<=1/Tc),'o'); axis tight;
图可以画出来也可以得到低通滤波后的序列xs和高通滤波后的序列xs2,怎样得到带通滤波的序列?请高手指点!!非常感谢!

purplejack 发表于 2009-12-14 16:45

突然想出来了,其实很简单,只要把第二个滤波中的xn换成xs就行了

fighterjzh 发表于 2009-12-14 18:22

描述问题的过程,也是解决问题的一部分。
一个低通滤波器和一个高通滤波器串联即可得到一个带通滤波器,将低通滤波器的截止频率设置成带通滤波器的上限,高通滤波器的截止频率设置成带通滤波器的下限即可。

purplejack 发表于 2009-12-18 09:18

谢谢fighterjzh。但结果出来后我觉得有问题,主要是高通滤波后均值发生了漂移。请看附件中的图。程序代码如下:
dT = 30; % min
   N = 7*24*60/dT; t = (0:N-1)*dT; % data for 7 days
pnoise = 0.30; T1 = 12.4*60; T2 = 24*60; T3 = 15*24*60; Tc = 10*60; % min
   xn = 5 + 3*cos(2*pi*t/T1) + 2*cos(2*pi*t/T2) + 1*cos(2*pi*t/T3);
   xn = xn + pnoise*max(xn-mean(xn))*(0.5 - rand(size(xn)));   
    = lanczosfilter(xn,dT,1/Tc,[],'low');
    = lanczosfilter(xs,dT,1/Tc/2,[],'high');
subplot(211),plot(t,xn,'r',t,xs,'b',t,xs2,'k'); legend('xn','xs','xs2');%axis tight
subplot(212),plot(f,h,f,h2,f,abs(Cx)/max(abs(Cx)),/Tc,,'-.',...
      ,(<=1/Tc),'o');
请问这个结果正确吗?
请大家不吝指教。多谢!!

purplejack 发表于 2009-12-20 11:15

难道没人会吗?这对信号处理的应该不难啊:'(
页: [1]
查看完整版本: 已知低通和高通数据怎样得带通数据