dBuV axis option for spectrum analyzer

This commit is contained in:
Jan Käberich 2022-03-15 15:52:57 +01:00
parent cece0080ed
commit 754ded1d08
5 changed files with 17 additions and 1 deletions

View File

@ -885,7 +885,8 @@ QString TraceXYPlot::AxisTypeToName(TraceXYPlot::YAxisType type)
{
switch(type) {
case YAxisType::Disabled: return "Disabled";
case YAxisType::Magnitude: return "Magnitude";
case YAxisType::Magnitude: return "Magnitude (dB/dBm)";
case YAxisType::MagnitudedBuV: return "Magnitude (dBuV)";
case YAxisType::MagnitudeLinear: return "Magnitude (linear)";
case YAxisType::Phase: return "Phase";
case YAxisType::UnwrappedPhase: return "Unwrapped Phase";
@ -999,6 +1000,9 @@ QPointF TraceXYPlot::traceToCoordinate(Trace *t, unsigned int sample, TraceXYPlo
case YAxisType::Magnitude:
ret.setY(Util::SparamTodB(data.y));
break;
case YAxisType::MagnitudedBuV:
ret.setY(Util::dBmTodBuV(Util::SparamTodB(data.y)));
break;
case YAxisType::MagnitudeLinear:
ret.setY(abs(data.y));
break;
@ -1263,6 +1267,7 @@ QString TraceXYPlot::AxisUnit(TraceXYPlot::YAxisType type)
} else if(source == TraceModel::DataSource::SA) {
switch(type) {
case TraceXYPlot::YAxisType::Magnitude: return "dBm";
case TraceXYPlot::YAxisType::MagnitudedBuV: return "dBuV";
default: return "";
}
}
@ -1297,6 +1302,7 @@ QString TraceXYPlot::AxisPrefixes(TraceXYPlot::YAxisType type)
} else if(source == TraceModel::DataSource::SA) {
switch(type) {
case TraceXYPlot::YAxisType::Magnitude: return " ";
case TraceXYPlot::YAxisType::MagnitudedBuV: return " ";
default: return " ";
}
}

View File

@ -16,6 +16,7 @@ public:
Disabled,
// S parameter options
Magnitude,
MagnitudedBuV,
MagnitudeLinear,
Phase,
UnwrappedPhase,

View File

@ -257,6 +257,7 @@ std::set<TraceXYPlot::YAxisType> XYplotAxisDialog::supportedYAxis(TraceXYPlot::X
switch(type) {
case TraceXYPlot::XAxisType::Frequency:
ret.insert(TraceXYPlot::YAxisType::Magnitude);
ret.insert(TraceXYPlot::YAxisType::MagnitudedBuV);
break;
default:
break;

View File

@ -65,3 +65,10 @@ double Util::distanceToLine(QPointF point, QPointF l1, QPointF l2, QPointF *clos
std::complex<double> Util::SparamToImpedance(std::complex<double> d) {
return Preferences::getInstance().Acquisition.refImp * (1.0 + d) / (1.0 - d);
}
double Util::dBmTodBuV(double dBm)
{
double uVpower = 0.000001*0.000001/Preferences::getInstance().Acquisition.refImp;
double dBdiff = 10*log10(uVpower*1000);
return dBm - dBdiff;
}

View File

@ -31,6 +31,7 @@ namespace Util {
static inline double SparamTodB(std::complex<double> d) {
return SparamTodB(abs(d));
}
double dBmTodBuV(double dBm);
static inline double SparamToDegree(std::complex<double> d) {
return (arg(d) * 180.0 / M_PI);
}