5
$\begingroup$

enter image description here I have the frequency response of two signals shown above. One is uncontaminated, and the other is the same signal contaminated by a multiplicative distortion with two poles and two zeros. I need to find/estimate the transfer function values of the contaminating filter in order to equalize the contamination. How do I accomplish this in MATLAB? Thanks.

$\endgroup$
2
  • 1
    $\begingroup$ Multiplicative in Frequency Domain or Time Domain? I guess in frequency but it is better to explicitly say it. As then it is not a multiplicative distortion but a Filter. $\endgroup$
    – Royi
    Commented Dec 6, 2020 at 5:38
  • 1
    $\begingroup$ Can you share a CSV file with your measurements? $\endgroup$
    – Royi
    Commented Dec 7, 2020 at 5:31

1 Answer 1

1
$\begingroup$

Basically the transfer function is given by (Continuous time case):

$$ H \left( j \omega \right) = K \frac{ \left( j \omega - {q}_{1} \right) \left( j \omega - {q}_{2} \right) }{ \left( j \omega - {p}_{1} \right) \left( j \omega - {p}_{2} \right) } $$

Now, given your frequency data sampled an $ N $ points $ {\left\{ {\omega}_{i} \right\}}_{i = 1}^{N} $ we need to use the discrete-time form of the transfer function over the Z domain (Z Transform).
Hence the model becomes:

$$ H \left( z \right) {\mid}_{z = {e}^{j \omega}} = K \frac{ \left( z - {q}_{1} \right) \left( z - {q}_{2} \right) }{ \left( z - {p}_{1} \right) \left( z - {p}_{2} \right) }{\Bigg|}_{z = {e}^{j \omega}} = K \frac{ \left( {e}^{j \omega} - {q}_{1} \right) \left( {e}^{j \omega} - {q}_{2} \right) }{ \left( {e}^{j \omega} - {p}_{1} \right) \left( {e}^{j \omega} - {p}_{2} \right) } $$

you may set a system of $ N $ complex equations and use non linear solver to find the 5 parameters ($ K $, $ {q}_{1} $, $ {q}_{2} $, $ {p}_{1} $, $ {p}_{2} $) you need.

In case the measurements are noisy you may use Least Squares.

Remark
The above solves the problem from the data of @jmcd in frequency domain. In practice, using the data domain one could use simpler System Identification (See System Identification: An Overview) methods to get the equivalent ARMA model.
Regarding Frequency Domain based methods for System Identification have a look at Rik Pintelon - System Identification: A Frequency Domain Approach.

$\endgroup$
6
  • $\begingroup$ is this problem in continuous time or discrete time? $s$ domain or $z$ domain? $\endgroup$ Commented Dec 6, 2020 at 19:33
  • $\begingroup$ You are right, I should have used a domain syntax to be clearer. $\endgroup$
    – Royi
    Commented Dec 6, 2020 at 20:47
  • $\begingroup$ but Royi, the question is still there. it's pretty clear to me that you are suggesting an answer (i think it's sorta a partial answer because no final solution is given, even with the Least Squares, but that's fine) that is in the continuous-time domain ($H(s)\Big|_{s=j\omega}$). perhaps the transfer function the OP is looking for is in the discrete-time domain $H(z)\Big|_{z=e^{j\omega T}}$. that will be a slightly different looking frequency response and the LS algorithm might come up with different poles and zeros (given the mapping $z=e^{sT}$). $\endgroup$ Commented Dec 7, 2020 at 3:43
  • $\begingroup$ may i modify your answer to cover both bases? $\endgroup$ Commented Dec 7, 2020 at 3:45
  • $\begingroup$ Yes, of course. I'd be honored. $\endgroup$
    – Royi
    Commented Dec 7, 2020 at 5:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.