05-18-2010 10:45 PM
Hi,
I doing offline data analysis for the human heart beat. i need helps to clear some doubts and questions here:
Q1. From attachment .vi, the first FFT graph show the combinations of signal merging & second FFT show the human movement noise (x,y,z). So, how can i remove those unwanted signal cause by the movement noise as show in attachment pic??
Q2. If i want to use filter on FFT to remove the those unwanted signal & also those signal below 1Hz and above 5 Hz, how can i do it??
Q3. I hv apply the bandpass butterworth filter to my raw data before plot into FFT, is very strange that the filter does not remove the low frequency components as still reflect on FFT.
My sample rate = 20 samples per sec
Attach with zip files.
Thanks in advance.
regards,
Simon
05-19-2010 03:01 AM
05-19-2010 03:48 AM
Q2. If i want to use filter on FFT to remove the those unwanted signal & also those signal below 1Hz and above 5 Hz, how can i do it??
Simple try out: If you already have the FFT (Re and Im) simply set all unwanted freq bins to zero and do a inverse FFT . Your result will have small waves at regions that where flat before, however maybe still worth a try.
05-19-2010 04:11 AM
What is your signal source? Can you tell us more about the full measurement setup?
--------------------------------------------------------------------------------------------------
We using the light sensor to detect the blood flow + movement. The data collect, processing & send through BT to the PC for further signal analysis as you can see from the raw data text files attach.
As can see from raw data, there's dc components there compare to ECG which make signal analysis tougher.
05-19-2010 04:30 AM
Hi Henrik,
How going to "set all unwanted freq bins to zero and do a inverse FFT "??
Can you show me some example??
thanks and regards,
Simon
05-19-2010 05:08 AM
How good are your FFT knowledge? If they are somewhat basic I give you some links that will be helpfull in the further discussion.
http://zone.ni.com/devzone/cda/tut/p/id/4278
http://zone.ni.com/devzone/cda/tut/p/id/4541
05-19-2010 08:52 PM
Hi Coq Rouge,
Thanks for the links here. I do have some basic on FFT.
05-20-2010 01:27 AM
Increase the order to narrow the transition band will reduce the low frequency component.
Also make sure that you set sampling frequency, and other configuration correctly (you claim your fs=20, but you set it to 60).
05-20-2010 04:10 AM
Hi KateB,
You're right, it solve my doubt here on Q3.
I noticed that whenever i set the low freq, there's still a small peak follow the low freq setting.
thanks and regards,
05-20-2010 03:18 PM
Simon,
I think the reasons the low frequency component dominates are (1) that there is a huge DC component. Take the mean and subtract it before filtering . And (2) that even with the mean removed a large low frequency signal remains. Look at a graph of the time domain signal. The mean is around 8900. The heart rate component is about 200 peak to peak and the low frequency part varies from 8200 to over 9000. So the mean is 40 times the desired signal and the low frequency part is 3 times the desired signal.
If you cannot clean up the data collection process to reduce these undesired components, you will have a lot of trouble getting good data.
Also, you do not have any ECG signals. You may to have a pulse oximeter. You can get heart rate from that but not much information about the heart electrical activity.
Consider using subVIs in your program. You do the same things multiple times with only differences in the data. A subVI in a for loop is a much cleaner way to program this. Also you can read the data from the file and convert it to an array of numbers in one step with the Read from Spreadsheet File.vi. Set the format string to "%x" and the delimiter to space. The datatype is Double.
Lynn