mirror of
https://github.com/jankae/LibreVNA.git
synced 2026-04-04 22:17:31 +00:00
Fix impedance renormalization + add unit tests
This commit is contained in:
parent
523946447a
commit
50bde261af
9 changed files with 114 additions and 2 deletions
|
|
@ -62,7 +62,19 @@ double Util::distanceToLine(QPointF point, QPointF l1, QPointF l2, QPointF *clos
|
|||
}
|
||||
|
||||
std::complex<double> Util::SparamToImpedance(std::complex<double> d, std::complex<double> Z0) {
|
||||
return Z0 * (1.0 + d) / (1.0 - d);
|
||||
if (d != 1.0) {
|
||||
return Z0 * (1.0 + d) / (1.0 - d);
|
||||
} else {
|
||||
return std::complex<double>(std::numeric_limits<double>::infinity(), 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
std::complex<double> Util::ImpedanceToSparam(std::complex<double> Z, std::complex<double> Z0) {
|
||||
if(std::isinf(Z.real())) {
|
||||
return 1.0;
|
||||
} else {
|
||||
return (Z-Z0)/(Z+Z0);
|
||||
}
|
||||
}
|
||||
|
||||
double Util::dBmTodBuV(double dBm)
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ namespace Util {
|
|||
return SparamToVSWR(abs(d));
|
||||
}
|
||||
std::complex<double> SparamToImpedance(std::complex<double> d, std::complex<double> Z0 = 50.0);
|
||||
std::complex<double> ImpedanceToSparam(std::complex<double> Z, std::complex<double> Z0 = 50.0);
|
||||
// all these conversions assume series connection of real and imag part
|
||||
static inline double SparamToResistance(std::complex<double> d, std::complex<double> Z0 = 50.0) {
|
||||
return SparamToImpedance(d, Z0).real();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue