Path: utzoo!attcan!uunet!cs.utexas.edu!wuarchive!emory!att!pacbell.com!tandem!netcom!mcmahan From: mcmahan@netcom.UUCP (Dave Mc Mahan) Newsgroups: comp.dsp Subject: Creating Samples by stuffing & filtering Summary: Can I just duplicate and FIR filter? Message-ID: <16311@netcom.UUCP> Date: 6 Nov 90 07:34:56 GMT Organization: Dave McMahan @ NetCom Services Lines: 50 The Problem: I have been given a task of smoothing an ECG (electro-cardiogram) signal that needs to be sent to a strip chart recorder. Currently, the system outputs 250 samples, although the next generation will provide only 125 samples on two channels. The goal is to provide two benefits: smoother strip chart recordings and peak restoration. Current strip chart output shows definate steps for each sample, especially when viewed at a high paper speed. The current sampling does not always sample at the exact peak (obviously) and it is desirable to re-create it. The signal is low pass filtered before sampling to avoid aliasing. Although it isn't a great rolloff, the low pass filter starts cutting off about 52 Hz and is 8 dB down at 62 Hz. What I have done: To create more samples, I assumed that I could just read in one sample, duplicate it to the output the desired number of times for the proper expansion factor (currently, an expansion factor of 4 samples out for each sample in seems to be about right) and then pass the expanded data through a digital filter to low pass filter it and smooth the final output. I am using a 33 tap filter for this. I need to use an FIR filter because I need to ensure linear phase response (and constant time delay) of all frequencies in the signal. The final signal does look much better and original peaks are restored, although I do get a bit of "Gibb's Phenomena" showing up in areas where there is a very high rate of change in the input signal. I assume this is due to using such a short FIR filter length and could be made to go away if I increased the number of taps. The process will eventually have to run on a 68000 in real time, so the number of taps (and the resulting number of multiplications per second) is of concern. My Question: Does this make sense, or is there a better way? The results I get now look pretty good, but I was wondering if there is a better or more efficient way to generate the desired data samples. I plan on using as many tricks as possible in software to actually implement the filter with minimum math overhead. I thought about just doing straight line interpolation of the samples, but then I wouldn't get any peak restoration. All thoughts or ideas are appreciated. -dave -- Dave McMahan mcmahan@netcom.uucp {apple,amdahl,claris}!netcom!mcmahan