Signal Correction on the fly using Inverse Transfer Function

This is more of a conceptual question rather than asking for a specific solution. I'm new to signal processing so I didn't manage to come up with anything yet.
My task: Correct an incoming (realtime measured) signal from a tubing + pressure sensor system using the inverse transfer function (ITF) on the fly. Feed the corrected data forward into the existing data processor
What I have: I have a transfer function estimate for the tubing + pressure sensor system (obtained by comparing it to measurements without tubing). I have a stream of data while measuring which is going through an existing signal processor. However I now want to feed that signal processor the corrected signal (corrected using the ITF).
My idea: I should be able to build a buffer of N samples of the incoming signal x. I can then apply Short Time Fourier Transform to that chunk (should I use a tapered window?). In the spectral space I can apply the IFT to get the corrected spectrum. I would then inverse Fourier Transform to get N samples of the corrected signal y. Next step is to take the next N samples (should I use an overlap?) of signal x and repeat the process. I would then just chain the new y values to my existing 'stream' of y values (using overlap-add?). I could then continuously feed the y signal to the existing signal processor. I don't care if there is a delay, as long as I can do the process on the fly and not in post-processing
So my method would be:
  1. Wait for N samples of incoming signal x
  2. STFT (maybe using a window) to obtain F(x)
  3. Apply ITF to F(x) to obtain F(y)
  4. Inverse STFT to obtain y
  5. Overlap-add (maybe using a window)
  6. Advance buffer of incoming signal to next N samples (maybe using an overlap) and proceed with step 2.
It would be super helpful if you gave me some advice. Am I on the right way? Is there a fundamental issue with my idea? I reckon there must be a simple way as real time sound processors (e.g. filters) do exactly the same thing, right?

Answers (0)

Products

Release

R2020a

Asked:

on 12 Nov 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!