How to test causality of system from time domain reflectometry (TDR) plot in RF Toolbox?

6 views (last 30 days)
I would like to test the causality of a set of S-Parameters by checking the impedance response of the system from the time domain reflectometry (TDR) plot prior to the impulse. I have tried using the "delay" and "impulse" functions to plot the TDR response before time t=0, as follows:
z49 = sparameters("default.s2p"); s11 = rfparam(z49,1,1); freq = z49.Frequencies; fit_data = rationalfit(freq,s11,'NPoles',1000); fit_data.Delay = 1e-11; [resp,t] = impulse(fit_data,1e-12,1e3); plot(t,resp)
This doesn't show the behavior I was looking for. Is there a way to create a plot that shows impedance in the time domain and allows me to see the response before the impulse/step, which would be non-zero if and only if the S-Parameters are non-causal?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 24 Jan 2025
Edited: MathWorks Support Team on 3 Feb 2025
As of MATLAB R2020b, the RF Toolbox does not provide built-in functionalities to test the causality of the system and to compute the impedance using impedance peeling methods.
The impulse function is not a recommended approach to compute the impedance for a couple of reasons:i) A rational fit might be non-passive even if the data is passive, thereby introducing numerical artifacts, andii) The impulse function forces zero.The discontinuity causes reflections which cannot be accounted for using simple transformation and therefore require the use of impedance peeling methods.
A possible workaround for determining the causality of the system is to test for the "passivity" of the rational fit output. The output of rational fit is guaranteed to be "stable". Therefore, by testing for the "passivity" of the output, we can determine "causality", since "stability" + "passivity" implies "causality".
Passivity is a property of the entire S-parameter matrix and cannot be tested only by looking at the reflection coefficient (s11). The shipped example titled "Passivity: Test, Visualize, and Enforce Passivity of rationalfit Output" provides the recommended approach to testing for passivity using the "ispassive" function.
For more details, you can access the release-specific documentation by executing the following command in the MATLAB R2020b command window:
>> web(fullfile(docroot, 'rf/ug/passivity-test-visualize-and-enforce-passivity-of-ratioanlfir-output.html'))
Please follow the link below to search for the required information regarding the current release:

More Answers (0)

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!