Main Content


Make N-port S-parameters passive



sparams_passive = makepassive(sparams) alters non-passive N-port S-parameters to make them passive. makepassive will error if the singular values at a frequency are too large. Reference impedance for S-parameters are assumed real and positive.


collapse all

Convert measured.s2p to S-parameter object.

S = sparameters('measured.s2p');

Check if the S-parameter object is passive.

ans = logical

Make the S-parameters data passive using makepassive function.

S_new = makepassive(S);

Check if the new S-parameter object is passive.

ans = logical

Input Arguments

collapse all

S-parameters specified as one of the following:

  • A scalar S-parameters object

  • A complex N-by-N-by-K array for N-port S-parameters data.

Output Arguments

collapse all

Passive S-parameters, returned as an s-parameter object.


The makepassive function uses a purely mathematical method to calculate sparams_passive. As a result, the array sparams_passive does not represent the same network as sparams, unless sparams and sparams_passive are equal. The more closely sparams represents a passive network, the better the approximation sparams_passive is to that network. Therefore, makepassive generates the most realistic results when sparams is active only due to small numerical errors.

Version History

Introduced in R2010a