- #1
olbert
- 3
- 0
I guess this is programming and physics all combined into one but hopefully I can get some help anyway.
I am doing some signal analysis of real-time streaming sensor data. I would like to do a DFFT on the data in real time as it streams in. So far pretty easy, however, there are a number of issues that make it more complicated - not the least of which is that I haven't dealt with FFT's since university.
Firstly I only want to do a transform on the most recent block of data, ie, I only want to know the frequencies from the last 10 seconds. Any data older than that is already out of date and useless.
Speed is a major issue as I want the spectrum of the data to be always up to date. Every new sample that comes in I want a new spectrum.
I was hoping that there was a function that calculate the transform one sample at a time and also remove a sample once it's too old. So in other words, in my program call the function 'FFT = FFT_Add_New_Sample(newSample);' and then call the function 'FFT = FFT_Remove_Old_Sample(oldSample);' once a sample becomes to old.
The idea would be that the whole FFT would not be recalculated with every new sample, just modified speedily with the new data coming in and old data going out.
I have no idea if this is even mathematically possible but if it was, it would be a great help!
I am doing some signal analysis of real-time streaming sensor data. I would like to do a DFFT on the data in real time as it streams in. So far pretty easy, however, there are a number of issues that make it more complicated - not the least of which is that I haven't dealt with FFT's since university.
Firstly I only want to do a transform on the most recent block of data, ie, I only want to know the frequencies from the last 10 seconds. Any data older than that is already out of date and useless.
Speed is a major issue as I want the spectrum of the data to be always up to date. Every new sample that comes in I want a new spectrum.
I was hoping that there was a function that calculate the transform one sample at a time and also remove a sample once it's too old. So in other words, in my program call the function 'FFT = FFT_Add_New_Sample(newSample);' and then call the function 'FFT = FFT_Remove_Old_Sample(oldSample);' once a sample becomes to old.
The idea would be that the whole FFT would not be recalculated with every new sample, just modified speedily with the new data coming in and old data going out.
I have no idea if this is even mathematically possible but if it was, it would be a great help!