electronicsfreak
Member
So,
For a hobby project, I'm making a spectrum analyzer using an 8 bit datapath in a MCU.
I wanted to learn more about how the FFT/FHT works, so I am taking a stab at my own attempt at both an FFT and FHT. I have both an 8bit forced datapath FFT and FHT "working" in python, and it's "working!".....well sortof.
Anyways,
here's what I have. The attached image is a pre-generated test sin wave pattern running through my FHT and the magnitude output of the result. There is quite a bit of low end "noise/stuff", and I am trying to come up with a way to get rid of it.
Applying a Hann or Hamming window to the input helps to reduce the spectral leakage of the single tone, but the low end "stuff" remains. I don't want to just ignore/hide it, especially when it's that large in magnitude. I could raise the knee of my high pass filter, but I want to try to keep the low notes present in the result. Similarly, adding a higher noise "floor" will be quite noticeable once this is on a DB-ish scale (graphs are currently on a linear scale)
Anyways,
Anything come to mind? I'm hoping there may be a particular filter or windowing scheme that could be used. I'm sure the "stuff" could be partly due to a limited 8bit signed "int/char" datapath.
-EF
For a hobby project, I'm making a spectrum analyzer using an 8 bit datapath in a MCU.
I wanted to learn more about how the FFT/FHT works, so I am taking a stab at my own attempt at both an FFT and FHT. I have both an 8bit forced datapath FFT and FHT "working" in python, and it's "working!".....well sortof.
Anyways,
here's what I have. The attached image is a pre-generated test sin wave pattern running through my FHT and the magnitude output of the result. There is quite a bit of low end "noise/stuff", and I am trying to come up with a way to get rid of it.
Applying a Hann or Hamming window to the input helps to reduce the spectral leakage of the single tone, but the low end "stuff" remains. I don't want to just ignore/hide it, especially when it's that large in magnitude. I could raise the knee of my high pass filter, but I want to try to keep the low notes present in the result. Similarly, adding a higher noise "floor" will be quite noticeable once this is on a DB-ish scale (graphs are currently on a linear scale)
Anyways,
Anything come to mind? I'm hoping there may be a particular filter or windowing scheme that could be used. I'm sure the "stuff" could be partly due to a limited 8bit signed "int/char" datapath.
-EF