What approach can I take to design a filter that fits (approximately) the average power spectrum of multiple signals.

10 views (last 30 days)
The context provided by the figure adds clarity to this question. Depicted in blue are power spectra of signals, each having undergone bandpass filtering. The frequency bins are evenly distributed, and the red lines represent the average amplitude of these signals. My current objective is ot design a filter that closely matches the average amplitude of the power spectrum. I'm in search of approaches that avoid manually setting the cutoff frequencies, passbands, etc.
  1 Comment
Mathieu NOE
Mathieu NOE on 21 Nov 2023
hello
you can use invfreqs or invfreqz to "tune" your FIR or IIR filter to match the given amplitude
now the ramaining problem is that a filter has not only a gain but also a phase so I don"t know what will be the result if your target is only matching amplitudes

Sign in to comment.

Answers (1)

Paul
Paul on 21 Nov 2023
Hi G,
Do you have the amplitude and phase spectra for the red curve? If so, you can try using tfest, though that spike at around 60 Hz might be tricky. If you only have the amplitude for the red curve, the problem might still be tractable. If you upload the data, particularly for the red curve (use the paper clip icon on the Insert menu), it will be easier for someone to help.
  4 Comments
G
G on 21 Nov 2023
Edited: G on 21 Nov 2023
Hi Paul,
I looked through each of the functions suggested but haven't found much like. I'd like to reframe the question to see if there are any ideas on how to do this. I haven't seen anything in literature.
If I were to send you a filtered signal (time domain) and didn't give you any other information other than the filtered signal itself, what would you do to create a filter that closely emulates the one you suspect was applied to the signal? The ultimate goal of this is to remake a filter with minimal information and apply that filter to a different data set.
I appreciate your thoughtful responses. Thank you.
Paul
Paul on 21 Nov 2023
This is now quite a different question than was originally posed. For me, I don't see a clear path forward w/o additional information about the original signal, or the filter that was applied to the original signal, or both.
Suppose we have the equation
y = h * x
and I tell you that y = 8. How would you determine h without knowing anything about x?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!