Design a filter given the magnitude / frequency array pair
显示 更早的评论
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');
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.
回答(1 个)
Star Strider
2017-5-11
0 个投票
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 个评论
Andreas Prokopiou
2017-5-12
Star Strider
2017-5-12
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.
类别
在 帮助中心 和 File Exchange 中查找有关 Model Interconnection 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!