Design a filter given the magnitude / frequency array pair

8 views (last 30 days)
Hello all,
This might be a silly question but I could not find something online to help me find an answer.
I have the frequency response data of a transducer.
A small (fictional) example is as follows:
frequency = [100 1000 2000 3000]; % Frequency samples
responce = [120 100 80 30]; % Magnitude of transducer output in decibels at the previous frequency samples
I used the frd function to get the Frequency Response Data model
sysfrd = frd(responce,frequency,'Units','Hz');
where sysfrd is an frd object.
Now the question is; if I have a time varying input signal, how do I compute the output signal of this transducer, given the transducer's frequency response? I'm not quite sure how to proceed with the frd object formulation.
Any help, or suggestions of a different approach, are greatly appreciated,
Thanks in advance,
A.

Answers (1)

Star Strider
Star Strider on 11 May 2017
Unfortunately, with a frd model, it seems you’re stuck with its myriad limitations. I experimented with options to recover transfer function data from it, convert it to a transfer function, state space representation, and everything else I could think of, including using lsim. No joy with any of these. I cannot figure any way to convert it to a more useful system object unless you have the System Identification Toolbox and can use those functions and begin afresh with a new approach. (I don’t use frd models for this reason.)
  2 Comments
Andreas Prokopiou
Andreas Prokopiou on 12 May 2017
Thank you for your reply! I was afraid this might be case.
I had a look at the System Identification Toolbox. I'm not sure how it can help me with the proposed problem. The description says that it needs input-output data and will give you a proposed model. My problem is that I have frequency response data, and I want to get the input-output data relation.
Star Strider
Star Strider on 12 May 2017
My pleasure.
The only option I can suggest is the Signal Processing Toolbox invfreqz (link) function. It will return transfer function polynomials from your frequency data (assuming a linear system) that you can then use to create a tf object in the Control System Toolbox. From there, you have a much more versatile system that you can use with lsim.
That would be my approach.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!