X-GM-THRID: 1222562985289797701 X-Gmail-Labels: rsgb lf Delivered-To: daveyxm@gmail.com Received: by 10.70.56.11 with SMTP id e11cs610321wxa; Wed, 13 Dec 2006 03:00:53 -0800 (PST) Received: by 10.78.183.15 with SMTP id g15mr498178huf.1166007652487; Wed, 13 Dec 2006 03:00:52 -0800 (PST) Return-Path: Received: from post.thorcom.com (post.thorcom.com [193.82.116.20]) by mx.google.com with ESMTP id 8si588270hug.2006.12.13.03.00.51; Wed, 13 Dec 2006 03:00:52 -0800 (PST) Received-SPF: neutral (google.com: 193.82.116.20 is neither permitted nor denied by best guess record for domain of owner-rsgb_lf_group@blacksheep.org) Received: from majordom by post.thorcom.com with local (Exim 4.14) id 1GuRld-0000v3-Eb for rs_out_1@blacksheep.org; Wed, 13 Dec 2006 10:55:17 +0000 Received: from [193.82.116.35] (helo=relay3.thorcom.net) by post.thorcom.com with esmtp (Exim 4.14) id 1GuRld-0000uu-1p for rsgb_lf_group@blacksheep.org; Wed, 13 Dec 2006 10:55:17 +0000 Received: from mout2.freenet.de ([194.97.50.155]) by relay3.thorcom.net with esmtp (Exim 4.63) (envelope-from ) id 1GuRlZ-0002mg-CZ for rsgb_lf_group@blacksheep.org; Wed, 13 Dec 2006 10:55:17 +0000 Received: from [194.97.55.147] (helo=mx4.freenet.de) by mout2.freenet.de with esmtpa (Exim 4.62) (envelope-from ) id 1GuRlY-0004SA-59 for rsgb_lf_group@blacksheep.org; Wed, 13 Dec 2006 11:55:12 +0100 Received: from p5486d095.dip.t-dialin.net ([84.134.208.149]:61074 helo=[192.168.0.101]) by mx4.freenet.de with esmtpa (ID dl4yhf@freenet.de) (port 25) (Exim 4.62 #12) id 1GuRlX-0008Um-Ra for rsgb_lf_group@blacksheep.org; Wed, 13 Dec 2006 11:55:12 +0100 Message-ID: <457FDC0C.1090709@freenet.de> Date: Wed, 13 Dec 2006 11:55:08 +0100 From: Wolf DL4YHF User-Agent: Thunderbird 1.5.0.8 (Windows/20061025) MIME-Version: 1.0 To: rsgb_lf_group@blacksheep.org References: <7D653C9C42F5D411A27C00508BF8803D073BABBB@mail.dstl.gov.uk> <457EDE5D.3070203@tele2.se> In-Reply-To: <457EDE5D.3070203@tele2.se> X-Spam-Score: 0.0 (/) X-Spam-Report: autolearn=disabled,none Subject: Re: LF: RE: SAQ Receiver for Window$ Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on post.thorcom.com X-Spam-Level: X-Spam-Status: No, hits=0.0 required=5.0 tests=none autolearn=no version=2.63 X-SA-Exim-Scanned: Yes Sender: owner-rsgb_lf_group@blacksheep.org Precedence: bulk Reply-To: rsgb_lf_group@blacksheep.org X-Listname: rsgb_lf_group X-SA-Exim-Rcpt-To: rs_out_1@blacksheep.org X-SA-Exim-Scanned: No; SAEximRunCond expanded to false Status: O X-Status: X-Keywords: X-UID: 3457 Hi Johan and group, You wrote.. > > Yes, but SAQrx uses a complex FIR filter for the main > selectivity so it will take some CPU power if you want: > > 1. narrow passband width AND... > 2. small ripple in the passband AND... > 3. steep skirts AND... > 4. large stopband attenuation > > i.e. a "brickwall" response. > > A complex FIR with, for example: > > Passband width = 100 Hz > Passband ripple <= 0.1 dB > Stopband width = 150 Hz > Stopband attenuation = 80 dB (either side of +/-75 Hz) > > designed with Parks-McClellan requires 2 * 1526 = 3052 taps. > The main filter in SAQrx is run at Fs = 11025 Hz. > I think ~3000 taps would work OK on a fast machine although > I haven't checked it. The existing 1000Hz filter has 2*206 taps. > As an alternative (since you already have the forward and inverse FFT in your C-library) you could use FFT convolution for the filter, which *greatly* speeds up large filter kernels. The basic principle is to split up the incoming signal into overlapping FFTs (with say 4096 to 16384 points), preferably using 50 % overlap and a raised cosine window, then do the filtering by multiplying the spectra with the filter's amplitude, and finally transform back to the time domain using the 'inverse' FFT. Because (sin(x)^2) + (cos(x)^2) = 1, there is no unwanted amplitude modulation caused by the FFT windowing if a 50 % overlap is used. I use this method in my own application, and it allows to run filters in 'real time' which are impossible with the classic FIR implementation (with convolution in the time domain). You don't even need to design the filter coefficients; all the algorithm needs is the filter's frequency response. A similar method is described in 'The Scientist's Guide to Digital Signal Processing" (look for the overlap/add method in chapter 18; it's available online for free ). Cheers, Wolf DL4YHF (happy to be back from hospital)