::rfutilTop, Main, Index
CommandsTop, Main, Index
angle [::rfutil]Top, Main, Index
Calculates angle (phase) of complex number.
Parameters
-deg | Option to select angle in degrees units. |
data | List with complex data in form {real imag} |
Return value
Returns list of angles
proc ::rfutil::angle {args} {
# Calculates angle (phase) of complex number.
#
# data - List with complex data in form {real imag}
# -deg - Option to select angle in degrees units
#
# Returns list of angles
#
argparse -pfirst -help {Calculates angle (phase) of complex number. Returns list of angles} {
{data -help {List with complex data in form {real imag}}}
{-deg -boolean -help {Option to select output angle in degrees}}
}
variable radtodeg
set len [llength $data]
if {$deg} {
for {set i 0} {$i<$len} {incr i} {
lappend result [= {$radtodeg*[arg [@ $data $i]]}]
}
} else {
for {set i 0} {$i<$len} {incr i} {
lappend result [arg [@ $data $i]]
}
}
return $result
}compLen [::rfutil]Top, Main, Index
Check the lengths of lists of each dictionary's list
Parameters
dict | Input dictionary. |
proc ::rfutil::compLen {dict} {
# Check the lengths of lists of each dictionary's list
# dict - input dictionary
set keys [dkeys $dict]
set values [dvalues $dict]
set size [dsize $dict]
for {set i 0} {$i<[= {$size-1}]} {incr i} {
set keyA [@ $keys $i]
set keyB [@ $keys [= {$i+1}]]
set lenA [llength [@ $values $i]]
set lenB [llength [@ $values [= {$i+1}]]]
if {$lenA!=$lenB} {
error "Length of $keyA '$lenA' is not equal to length of $keyB '$lenB'"
}
}
return
}cxxPEq [::rfutil]Top, Main, Index
Calculates capacitive part equivalent P circuit elements values.
Parameters
freq | Frequency values list. |
yxx | Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Description
C3
| |
o-----o-----| |-----o-----o
. | | | | .
. | | .
P1 . C1--- C2--- . P2
. --- --- .
\./ | | \./
. | | .
o-----o-------------o-----o
Return value
Returns dictionary of the form {c1 list c2 list c3 list} with capacitive part of equivalent elements admittance
proc ::rfutil::cxxPEq {args} {
# Calculates capacitive part equivalent P circuit elements values.
#
# freq - Frequency values list
# yxx - Dictionary that contains 2-port matrix of y-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the form {c1 list c2 list c3 list} with capacitive part of equivalent elements
# admittance
#
# C3
# | |
# o-----o-----| |-----o-----o
# . | | | | .
# . | | .
# P1 . C1--- C2--- . P2
# . --- --- .
# \./ | | \./
# . | | .
# o-----o-------------o-----o
#
argparse -help {Calculates capacitive part equivalent P circuit elements values. Returns dictionary of the form {c1 list c2 list c3 list} with capacitive part of equivalent elements admittance} {
{freq -help {List of frequency values}}
{yxx -help {Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen [dict merge [dict create freq $freq] $yxx]
variable pi
set yEq [::rfutil::yPEq $yxx]
set len [llength $freq]
for {set i 0} {$i<$len} {incr i} {
set freqVal [@ $freq $i]
set y1 [@ [dget $yEq y1] $i]
set y2 [@ [dget $yEq y2] $i]
set y3 [@ [dget $yEq y3] $i]
lappend c1 [= {[imag $y1]/(2*$pi*$freqVal)}]
lappend c2 [= {[imag $y2]/(2*$pi*$freqVal)}]
lappend c3 [= {[imag $y3]/(2*$pi*$freqVal)}]
}
return [dict create c1 $c1 c2 $c2 c3 $c3]
}cxxTEq [::rfutil]Top, Main, Index
Calculates capacitive part equivalent T circuit elements values.
Parameters
freq | Frequency values list. |
zxx | Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Description
C1 C2
| | | |
o----| |-----o-----| |----o
. | | | | | .
. | .
P1 . C3--- . P2
. --- .
\./ | \./
. | .
o----------- o -----------o
Return value
Returns dictionary of the form {c1 list c2 list c3 list} with capacitive part of equivalent elements impedance
proc ::rfutil::cxxTEq {args} {
# Calculates capacitive part equivalent T circuit elements values.
#
# freq - Frequency values list
# zxx - Dictionary that contains 2-port matrix of z-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the form {c1 list c2 list c3 list} with capacitive part of equivalent elements
# impedance
#
# C1 C2
# | | | |
# o----| |-----o-----| |----o
# . | | | | | .
# . | .
# P1 . C3--- . P2
# . --- .
# \./ | \./
# . | .
# o----------- o -----------o
#
argparse -help {Calculates capacitive part equivalent T circuit elements values. Returns dictionary of the form {c1 list c2 list c3 list} with capacitive part of equivalent elements impedance} {
{freq -help {List of frequency values}}
{zxx -help {Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen [dict merge [dict create freq $freq] $zxx]
variable pi
set zEq [::rfutil::zTEq $zxx]
set 1c [complex 1 0]
set len [llength $freq]
for {set i 0} {$i<$len} {incr i} {
set freqVal [@ $freq $i]
set z1 [@ [dget $zEq z1] $i]
set z2 [@ [dget $zEq z2] $i]
set z3 [@ [dget $zEq z3] $i]
lappend c1 [= {-1/(2*$pi*$freqVal*[imag $z1])}]
lappend c2 [= {-1/(2*$pi*$freqVal*[imag $z2])}]
lappend c3 [= {-1/(2*$pi*$freqVal*[imag $z3])}]
}
return [dict create c1 $c1 c2 $c2 c3 $c3]
}deemb [::rfutil]Top, Main, Index
Procedure for deembedding of DUT from test fixture.
Parameters
sFixtL | S-parameters matrix of left fixture in dictionary form {11 list 12 list 21 list 22 list} |
sFixtR | S-parameters matrix of right fixture in dictionary form {11 list 12 list 21 list 22 list} |
sMeas | Measured s-parameters matrix in dictionary form {11 list 12 list 21 list 22 list} |
Description
┌ ┐ ┌ ┐-1 ┌ ┐ ┌ ┐-1 │ Tdut │ = │ Tfixtl │ x │ Tmeas │ x │ Tfixtr │ └ ┘ └ ┘ └ ┘ └ ┘
Return value
Returns dictionary of the same form as input dictionaries with deembedded DUT s-matrix
proc ::rfutil::deemb {args} {
# Procedure for deembedding of DUT from test fixture.
#
# sMeas - Measured s-parameters matrix in dictionary form {11 list 12 list 21 list 22 list}
# sFixtL - s-parameters matrix of left fixture in dictionary form {11 list 12 list 21 list 22 list}
# sFixtR - s-parameters matrix of right fixture in dictionary form {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the same form as input dictionaries with deembedded DUT s-matrix
#```
# ┌ ┐ ┌ ┐-1 ┌ ┐ ┌ ┐-1
# │ Tdut │ = │ Tfixtl │ x │ Tmeas │ x │ Tfixtr │
# └ ┘ └ ┘ └ ┘ └ ┘
#```
argparse -help {Procedure for deembedding of DUT from test fixture. Returns dictionary of the same form as input dictionaries with deembedded DUT s-matrix} {
{sMeas -help {Measured s-parameters matrix in dictionary form {11 list 12 list 21 list 22 list}}}
{sFixtL -help {s-parameters matrix of left fixture in dictionary form {11 list 12 list 21 list 22 list}}}
{sFixtR -help {s-parameters matrix of right fixture in dictionary form {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen [dict merge $sMeas $sFixtL $sFixtR]
set tMeas [s2t $sMeas]
set tFixtL [inv2x2 [s2t $sFixtL]]
set tFixtR [inv2x2 [s2t $sFixtR]]
set tDut [matMul2x2 [matMul2x2 $tFixtL $tMeas] $tFixtR]
set sDut [t2s $tDut]
return $sDut
}inv2x2 [::rfutil]Top, Main, Index
Calculates inverse matrix of input matrix with size 2x2.
Parameters
mat | Dictionary that contains 2-port matrix, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Return value
Returns dictionary of the same form as input dictionary with resulted matrix
proc ::rfutil::inv2x2 {args} {
# Calculates inverse matrix of input matrix with size 2x2.
#
# mat - Dictionary that contains 2-port matrix,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the same form as input dictionary with resulted matrix
#
argparse -help {Calculates inverse matrix of input matrix with size 2x2. Returns dictionary of the same form as input dictionary with resulted matrix} {
{mat -help {Dictionary that contains 2-port matrix, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen $mat
set len [llength [dget $mat 11]]
set 1c [complex 1 0]
set m1c [complex -1 0]
for {set i 0} {$i<$len} {incr i} {
set a [@ [dget $mat 11] $i]
set b [@ [dget $mat 12] $i]
set c [@ [dget $mat 21] $i]
set d [@ [dget $mat 22] $i]
set det [- [* $a $d] [* $b $c]]
if {([real $det]==0.0) && ([imag $det]==0.0)} {
error "Matrix can't be inverted"
}
set rec [/ $1c $det]
lappend 11 [* $rec $d]
lappend 12 [* $rec [* $m1c $b]]
lappend 21 [* $rec [* $m1c $c]]
lappend 22 [* $rec $a]
}
return [dict create 11 $11 21 $21 12 $12 22 $22]
}lxxPEq [::rfutil]Top, Main, Index
Calculates inductive part equivalent P circuit elements values.
Parameters
freq | Frequency values list. |
yxx | Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Description
L3
___
o-----o-----UUU-----o-----o
. | | .
. L1 C| L2 C| .
P1 . C| C| . P2
. C| C| .
\./ | | \./
. | | .
o-----o-------------o-----o
Return value
Returns dictionary of the form {l1 list l2 list l3 list} with inductive part of equivalent elements impedance
proc ::rfutil::lxxPEq {args} {
# Calculates inductive part equivalent P circuit elements values.
#
# freq - Frequency values list
# yxx - Dictionary that contains 2-port matrix of y-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the form {l1 list l2 list l3 list} with inductive part of equivalent elements
# impedance
#
# L3
# ___
# o-----o-----UUU-----o-----o
# . | | .
# . L1 C| L2 C| .
# P1 . C| C| . P2
# . C| C| .
# \./ | | \./
# . | | .
# o-----o-------------o-----o
#
argparse -help {Calculates inductive part equivalent P circuit elements values. Returns dictionary of the form {l1 list l2 list l3 list} with inductive part of equivalent elements impedance} {
{freq -help {List of frequency values}}
{yxx -help {Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen [dict merge [dict create freq $freq] $yxx]
variable pi
set yEq [::rfutil::yPEq $yxx]
set len [llength $freq]
for {set i 0} {$i<$len} {incr i} {
set freqVal [@ $freq $i]
set y1 [@ [dget $yEq y1] $i]
set y2 [@ [dget $yEq y2] $i]
set y3 [@ [dget $yEq y3] $i]
lappend l1 [= {-1/(2*$pi*$freqVal*[imag $y1])}]
lappend l2 [= {-1/(2*$pi*$freqVal*[imag $y2])}]
lappend l3 [= {-1/(2*$pi*$freqVal*[imag $y3])}]
}
return [dict create l1 $l1 l2 $l2 l3 $l3]
}lxxTEq [::rfutil]Top, Main, Index
Calculates inductive part equivalent T circuit elements values.
Parameters
freq | Frequency values list. |
zxx | Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Description
L1 L2
___ ___
o----UUU-----o-----UUU----o
. | .
. L3 C| .
P1 . C| . P2
. C| .
\./ | \./
. | .
o----------- o -----------o
Return value
Returns dictionary of the form {l1 list l2 list l3 list} with inductive part of equivalent elements impedance
proc ::rfutil::lxxTEq {args} {
# Calculates inductive part equivalent T circuit elements values.
#
# freq - Frequency values list
# zxx - Dictionary that contains 2-port matrix of z-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the form {l1 list l2 list l3 list} with inductive part of equivalent elements
# impedance
#
# L1 L2
# ___ ___
# o----UUU-----o-----UUU----o
# . | .
# . L3 C| .
# P1 . C| . P2
# . C| .
# \./ | \./
# . | .
# o----------- o -----------o
#
argparse -help {Calculates inductive part equivalent T circuit elements values. Returns dictionary of the form {l1 list l2 list l3 list} with capacitive part of equivalent elements impedance} {
{freq -help {List of frequency values}}
{zxx -help {Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen [dict merge [dict create freq $freq] $zxx]
variable pi
set zEq [::rfutil::zTEq $zxx]
set len [llength $freq]
for {set i 0} {$i<$len} {incr i} {
set freqVal [@ $freq $i]
set z1 [@ [dget $zEq z1] $i]
set z2 [@ [dget $zEq z2] $i]
set z3 [@ [dget $zEq z3] $i]
lappend l1 [= {[imag $z1]/(2*$pi*$freqVal)}]
lappend l2 [= {[imag $z2]/(2*$pi*$freqVal)}]
lappend l3 [= {[imag $z3]/(2*$pi*$freqVal)}]
}
return [dict create l1 $l1 l2 $l2 l3 $l3]
}mag [::rfutil]Top, Main, Index
Calculates magnitude of complex number.
Parameters
-db | Option to select output magnitude in db scale. |
data | List with complex data in form {real imag} |
Return value
Returns list of magnitudes
proc ::rfutil::mag {args} {
# Calculates magnitude of complex number.
#
# data - List with complex data in form {real imag}
# -db - Option to select output magnitude in db scale
#
# Returns list of magnitudes
#
argparse -pfirst -help {Calculates magnitude of complex number. Returns list of magnitudes} {
{data -help {List with complex data in form {real imag}}}
{-db -boolean -help {Option to select output magnitude in db scale}}
}
set len [llength $data]
if {$db} {
for {set i 0} {$i<$len} {incr i} {
lappend result [= {20*log10([mod [@ $data $i]])}]
}
} else {
for {set i 0} {$i<$len} {incr i} {
lappend result [mod [@ $data $i]]
}
}
return $result
}matMul2x2 [::rfutil]Top, Main, Index
Calculates multiply matrices with 2x2 size.
Parameters
mat1 | First matrix in dictionary form {11 list 12 list 21 list 22 list} |
mat2 | Second matrix in dictionary form {11 list 12 list 21 list 22 list} |
Return value
Returns dictionary of the same form as input dictionaries with resulted matrix
proc ::rfutil::matMul2x2 {args} {
# Calculates multiply matrices with 2x2 size.
#
# mat1 - First matrix in dictionary form {11 list 12 list 21 list 22 list}
# mat2 - Second matrix in dictionary form {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the same form as input dictionaries with resulted matrix
#
argparse -help {Calculates multiply matrices with 2x2 size. Returns dictionary of the same form as input dictionaries with resulted matrix} {
{mat1 -help {First matrix in dictionary form {11 list 12 list 21 list 22 list}}}
{mat2 -help {Second matrix in dictionary form {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen [dict merge $mat1 $mat2]
set len1 [llength [dget $mat1 11]]
::rfutil::compLen $mat1
::rfutil::compLen $mat2
for {set i 0} {$i<$len1} {incr i} {
set a1 [@ [dget $mat1 11] $i]
set b1 [@ [dget $mat1 12] $i]
set c1 [@ [dget $mat1 21] $i]
set d1 [@ [dget $mat1 22] $i]
set a2 [@ [dget $mat2 11] $i]
set b2 [@ [dget $mat2 12] $i]
set c2 [@ [dget $mat2 21] $i]
set d2 [@ [dget $mat2 22] $i]
lappend 11 [+ [* $a1 $a2] [* $b1 $c2]]
lappend 12 [+ [* $a1 $b2] [* $b1 $d2]]
lappend 21 [+ [* $c1 $a2] [* $d1 $c2]]
lappend 22 [+ [* $c1 $b2] [* $d1 $d2]]
}
return [dict create 11 $11 21 $21 12 $12 22 $22]
}s2t [::rfutil]Top, Main, Index
Converts 2-port s-parameters to transfer parameters.
Parameters
sxx | Dictionary that contains 2-port matrix of s-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Return value
Returns dictionary of the same form as input dictionary with transfer parameters
proc ::rfutil::s2t {args} {
# Converts 2-port s-parameters to transfer parameters.
#
# sxx - Dictionary that contains 2-port matrix of s-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the same form as input dictionary with transfer parameters
#
argparse -help {Converts 2-port s-parameters to transfer parameters. Returns dictionary of the same form as input dictionary with transfer parameters} {
{sxx -help {Dictionary that contains 2-port matrix of s-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen $sxx
set len [llength [dget $sxx 11]]
set 1c [complex 1 0]
set m1c [complex -1 0]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $sxx 11] $i]
set 21 [@ [dget $sxx 21] $i]
set 12 [@ [dget $sxx 12] $i]
set 22 [@ [dget $sxx 22] $i]
lappend t11 [- $12 [/ [* $11 $22] $21]]
lappend t12 [/ $11 $21]
lappend t21 [* $m1c [/ $22 $21]]
lappend t22 [/ $1c $21]
}
return [dict create 11 $t11 21 $t21 12 $t12 22 $t22]
}s2y [::rfutil]Top, Main, Index
Converts 2-port s-parameters to y-parameters.
Parameters
sxx | Dictionary that contains 2-port matrix of s-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
z0 | Reference impedance in form of {real imag}, default is {50 0}, optional. |
Return value
Returns dictionary of the same form as input dictionary with y-parameters
proc ::rfutil::s2y {args} {
# Converts 2-port s-parameters to y-parameters.
#
# sxx - Dictionary that contains 2-port matrix of s-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
# z0 - Reference impedance in form of {real imag}, default is {50 0}, optional
#
# Returns dictionary of the same form as input dictionary with y-parameters
#
argparse -help {Converts 2-port s-parameters to y-parameters. Returns dictionary of the same form as input dictionary with y-parameters} {
{sxx -help {Dictionary that contains 2-port matrix of s-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
{z0 -optional -default {50.0 0.0} -help {Reference impedance in form of {real imag}}}
}
::rfutil::compLen $sxx
set len [llength [dget $sxx 11]]
set 1c [complex 1 0]
set 2c [complex 2 0]
set m2c [complex -2 0]
set y0 [pow $z0 [complex -1 0]]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $sxx 11] $i]
set 21 [@ [dget $sxx 21] $i]
set 12 [@ [dget $sxx 12] $i]
set 22 [@ [dget $sxx 22] $i]
lappend y11 [* $y0 [/ [+ [* [- $1c $11] [+ $1c $22]] [* $12 $21]] [- [* [+ $1c $11] [+ $1c $22]] [* $12 $21]]]]
lappend y12 [* $y0 [/ [* $m2c $12] [- [* [+ $1c $11] [+ $1c $22]] [* $12 $21] ]]]
lappend y21 [* $y0 [/ [* $m2c $21] [- [* [+ $1c $11] [+ $1c $22]] [* $12 $21] ]]]
lappend y22 [* $y0 [/ [+ [* [+ $1c $11] [- $1c $22]] [* $12 $21]] [- [* [+ $1c $11] [+ $1c $22]] [* $12 $21]]]]
}
return [dict create 11 $y11 21 $y21 12 $y12 22 $y22]
}s2z [::rfutil]Top, Main, Index
Converts 2-port s-parameters to z-parameters.
Parameters
sxx | Dictionary that contains 2-port matrix of s-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
z0 | Reference impedance in form of {real imag}, default is {50 0}, optional. |
Return value
Returns dictionary of the same form as input dictionary with z-parameters
proc ::rfutil::s2z {args} {
# Converts 2-port s-parameters to z-parameters.
#
# sxx - Dictionary that contains 2-port matrix of s-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
# z0 - Reference impedance in form of {real imag}, default is {50 0}, optional
#
# Returns dictionary of the same form as input dictionary with z-parameters
#
argparse -help {Converts 2-port s-parameters to z-parameters. Returns dictionary of the same form as input dictionary with z-parameters} {
{sxx -help {Dictionary that contains 2-port matrix of s-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
{z0 -optional -default {50.0 0.0} -help {Reference impedance in form of {real imag}}}
}
::rfutil::compLen $sxx
set len [llength [dget $sxx 11]]
set 1c [complex 1 0]
set 2c [complex 2 0]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $sxx 11] $i]
set 21 [@ [dget $sxx 21] $i]
set 12 [@ [dget $sxx 12] $i]
set 22 [@ [dget $sxx 22] $i]
lappend z11 [* $z0 [/ [+ [* [+ $1c $11] [- $1c $22]] [* $12 $21]] [- [* [- $1c $11] [- $1c $22]] [* $12 $21]]]]
lappend z12 [* $z0 [/ [* $2c $12] [- [* [- $1c $11] [- $1c $22]] [* $12 $21] ]]]
lappend z21 [* $z0 [/ [* $2c $21] [- [* [- $1c $11] [- $1c $22]] [* $12 $21] ]]]
lappend z22 [* $z0 [/ [+ [* [- $1c $11] [+ $1c $22]] [* $12 $21]] [- [* [- $1c $11] [- $1c $22]] [* $12 $21]]]]
}
return [dict create 11 $z11 21 $z21 12 $z12 22 $z22]
}t2s [::rfutil]Top, Main, Index
Converts 2-port transfer parameters to s-parameters.
Parameters
txx | Dictionary that contains 2-port matrix of transfer parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Return value
Returns dictionary of the same form as input dictionary with s-parameters
proc ::rfutil::t2s {args} {
# Converts 2-port transfer parameters to s-parameters.
#
# txx - Dictionary that contains 2-port matrix of transfer parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
# Returns dictionary of the same form as input dictionary with s-parameters
#
argparse -help {Converts 2-port transfer parameters to s-parameters. Returns dictionary of the same form as input dictionary with s-parameters} {
{txx -help {Dictionary that contains 2-port matrix of transfer parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen $txx
set len [llength [dget $txx 11]]
set 1c [complex 1 0]
set m1c [complex -1 0]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $txx 11] $i]
set 21 [@ [dget $txx 21] $i]
set 12 [@ [dget $txx 12] $i]
set 22 [@ [dget $txx 22] $i]
lappend s11 [/ $12 $22]
lappend s12 [- $11 [/ [* $12 $21] $22]]
lappend s21 [/ $1c $22]
lappend s22 [* $m1c [/ $21 $22]]
}
return [dict create 11 $s11 21 $s21 12 $s12 22 $s22]
}y2s [::rfutil]Top, Main, Index
Converts 2-port y-parameters to s-parameters.
Parameters
yxx | Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
z0 | Reference impedance in form of {real imag} |
Return value
Returns dictionary of the same form as input dictionary with s-parameters
proc ::rfutil::y2s {args} {
# Converts 2-port y-parameters to s-parameters.
#
# yxx - Dictionary that contains 2-port matrix of y-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
# z0 - Reference impedance in form of {real imag}
#
# Returns dictionary of the same form as input dictionary with s-parameters
#
argparse -help {Converts 2-port y-parameters to s-parameters. Returns dictionary of the same form as input dictionary with s-parameters} {
{yxx -help {Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
{z0 -optional -default {50.0 0.0} -help {Reference impedance in form of {real imag}}}
}
::rfutil::compLen $yxx
set len [llength [dget $yxx 11]]
set 1c [complex 1 0]
set 2c [complex 2 0]
set m2c [complex -2 0]
set y0 [pow $z0 [complex -1 0]]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $yxx 11] $i]
set 21 [@ [dget $yxx 21] $i]
set 12 [@ [dget $yxx 12] $i]
set 22 [@ [dget $yxx 22] $i]
lappend s11 [/ [+ [* [- $y0 $11 ] [+ $y0 $22]] [* $12 $21]] [- [* [+ $y0 $11] [+ $y0 $22]] [* $12 $21]]]
lappend s12 [/ [* [* $m2c $12] $y0] [- [* [+ $y0 $11] [+ $y0 $22]] [* $12 $21]]]
lappend s21 [/ [* [* $m2c $21] $y0] [- [* [+ $y0 $11] [+ $y0 $22]] [* $12 $21]]]
lappend s22 [/ [+ [* [+ $y0 $11 ] [- $y0 $22]] [* $12 $21]] [- [* [+ $y0 $11] [+ $y0 $22]] [* $12 $21]]]
}
return [dict create 11 $s11 21 $s21 12 $s12 22 $s22]
}y2z [::rfutil]Top, Main, Index
Converts 2-port y-parameters to z-parameters.
Parameters
yxx | Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Return value
Returns dictionary of the same form as input dictionary with z-parameters
proc ::rfutil::y2z {args} {
# Converts 2-port y-parameters to z-parameters.
#
# yxx - Dictionary that contains 2-port matrix of y-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the same form as input dictionary with z-parameters
#
argparse -help {Converts 2-port y-parameters to z-parameters. Returns dictionary of the same form as input dictionary with z-parameters} {
{yxx -help {Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen $yxx
set len [llength [dget $yxx 11]]
set m1c [complex -1 0]
set 2c [complex 2 0]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $yxx 11] $i]
set 21 [@ [dget $yxx 21] $i]
set 12 [@ [dget $yxx 12] $i]
set 22 [@ [dget $yxx 22] $i]
lappend z11 [/ $22 [- [* $11 $22] [* $12 $21]]]
lappend z12 [/ [* $12 $m1c] [- [* $11 $22] [* $12 $21]]]
lappend z21 [/ [* $21 $m1c] [- [* $11 $22] [* $12 $21]]]
lappend z22 [/ $11 [- [* $11 $22] [* $12 $21]]]
}
return [dict create 11 $z11 21 $z21 12 $z12 22 $z22]
}yPEq [::rfutil]Top, Main, Index
Calculates equivalent P circuit elements values.
Parameters
yxx | Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Description
Y3
___
o-----o----|___|----o-----o
. | | .
. .-. .-. .
P1 . | | | | . P2
. Y1| | Y2| | .
. '-' '-' .
\./ | | \./
o-----o-------------o-----o
Return value
Returns dictionary of the form {y1 list y2 list y3 list} with impedances of equivalent elements
proc ::rfutil::yPEq {args} {
# Calculates equivalent P circuit elements values.
#
# yxx - Dictionary that contains 2-port matrix of y-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the form {y1 list y2 list y3 list} with impedances of equivalent elements
#
# Y3
# ___
# o-----o----|___|----o-----o
# . | | .
# . .-. .-. .
# P1 . | | | | . P2
# . Y1| | Y2| | .
# . '-' '-' .
# \./ | | \./
# o-----o-------------o-----o
#
argparse -help {Calculates equivalent P circuit elements values. Returns dictionary of the form {y1 list y2 list y3 list} with impedances of equivalent elements} {
{yxx -help {Dictionary that contains 2-port matrix of y-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen $yxx
set len [llength [dget $yxx 11]]
set m1c [complex -1 0]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $yxx 11] $i]
set 21 [@ [dget $yxx 21] $i]
set 22 [@ [dget $yxx 22] $i]
lappend y1 [+ $11 $21]
lappend y2 [+ $22 $21]
lappend y3 [* $m1c $21]
}
return [dict create y1 $y1 y2 $y2 y3 $y3]
}z2s [::rfutil]Top, Main, Index
Converts 2-port z-parameters to s-parameters.
Parameters
z0 | Reference impedance in form of {real imag}, default is {50 0}, optional. |
zxx | Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Return value
Returns dictionary of the same form as input dictionary with s-parameters
proc ::rfutil::z2s {args} {
# Converts 2-port z-parameters to s-parameters.
#
# zxx - Dictionary that contains 2-port matrix of z-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
# z0 - Reference impedance in form of {real imag}, default is {50 0}, optional
#
# Returns dictionary of the same form as input dictionary with s-parameters
#
argparse -help {Converts 2-port z-parameters to s-parameters. Returns dictionary of the same form as input dictionary with s-parameters} {
{zxx -help {Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
{z0 -optional -default {50.0 0.0} -help {Reference impedance in form of {real imag}}}
}
::rfutil::compLen $zxx
set len [llength [dget $zxx 11]]
set 1c [complex 1 0]
set 2c [complex 2 0]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $zxx 11] $i]
set 21 [@ [dget $zxx 21] $i]
set 12 [@ [dget $zxx 12] $i]
set 22 [@ [dget $zxx 22] $i]
lappend s11 [/ [- [* [- $11 $z0] [+ $22 $z0]] [* $12 $21]] [- [* [+ $11 $z0] [+ $22 $z0]] [* $12 $21]]]
lappend s12 [/ [* [* $2c $12] $z0] [- [* [+ $11 $z0] [+ $22 $z0]] [* $12 $21]]]
lappend s21 [/ [* [* $2c $21] $z0] [- [* [+ $11 $z0] [+ $22 $z0]] [* $12 $21]]]
lappend s22 [/ [- [* [+ $11 $z0] [- $22 $z0]] [* $12 $21]] [- [* [+ $11 $z0] [+ $22 $z0]] [* $12 $21]]]
}
return [dict create 11 $s11 21 $s21 12 $s12 22 $s22]
}z2y [::rfutil]Top, Main, Index
Converts 2-port z-parameters to y-parameters.
Parameters
zxx | Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Return value
Returns dictionary of the same form as input dictionary with y-parameters
proc ::rfutil::z2y {args} {
# Converts 2-port z-parameters to y-parameters.
#
# zxx - Dictionary that contains 2-port matrix of z-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the same form as input dictionary with y-parameters
#
argparse -help {Converts 2-port z-parameters to y-parameters. Returns dictionary of the same form as input dictionary with y-parameters} {
{zxx -help {Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen $zxx
set len [llength [dget $zxx 11]]
set m1c [complex -1 0]
set 2c [complex 2 0]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $zxx 11] $i]
set 21 [@ [dget $zxx 21] $i]
set 12 [@ [dget $zxx 12] $i]
set 22 [@ [dget $zxx 22] $i]
lappend y11 [/ $22 [- [* $11 $22] [* $12 $21]]]
lappend y12 [/ [* $12 $m1c] [- [* $11 $22] [* $12 $21]]]
lappend y21 [/ [* $21 $m1c] [- [* $11 $22] [* $12 $21]]]
lappend y22 [/ $11 [- [* $11 $22] [* $12 $21]]]
}
return [dict create 11 $y11 21 $y21 12 $y12 22 $y22]
}zTEq [::rfutil]Top, Main, Index
Calculates equivalent T circuit elements values.
Parameters
zxx | Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list} |
Description
Z1 Z2
___ ___
o---|___|----o----|___|---o
. | .
. .-. .
P1 . | | . P2
. Z3| | .
. '-' .
\./ | \./
o----------- o -----------o
Return value
Returns dictionary of the form {z1 list z2 list z3 list} with impedances of equivalent elements
proc ::rfutil::zTEq {args} {
# Calculates equivalent T circuit elements values.
#
# zxx - Dictionary that contains 2-port matrix of z-parameters,
# each matrix element is the list of values at different
# frequencies (or other parameter) in form of {real imag}.
# The form of dictionary is: {11 list 12 list 21 list 22 list}
#
# Returns dictionary of the form {z1 list z2 list z3 list} with impedances of equivalent elements
#
# Z1 Z2
# ___ ___
# o---|___|----o----|___|---o
# . | .
# . .-. .
# P1 . | | . P2
# . Z3| | .
# . '-' .
# \./ | \./
# o----------- o -----------o
#
argparse -help {Calculates equivalent T circuit elements values. Returns dictionary of the form {z1 list z2 list z3 list} with impedances of equivalent elements} {
{zxx -help {Dictionary that contains 2-port matrix of z-parameters, each matrix element is the list of values at different frequencies (or other parameter) in form of {real imag}. The form of dictionary is: {11 list 12 list 21 list 22 list}}}
}
::rfutil::compLen $zxx
set len [llength [dget $zxx 11]]
for {set i 0} {$i<$len} {incr i} {
set 11 [@ [dget $zxx 11] $i]
set 21 [@ [dget $zxx 21] $i]
set 22 [@ [dget $zxx 22] $i]
lappend z1 [- $11 $21]
lappend z2 [- $22 $21]
lappend z3 $21
}
return [dict create z1 $z1 z2 $z2 z3 $z3]
}