Additional option "impulse response magnitude" for time domain graph

This commit is contained in:
Jan Käberich 2020-12-06 15:37:16 +01:00
parent f3b6cffa68
commit 12ce07a970
4 changed files with 34 additions and 22 deletions

View File

@ -17,7 +17,8 @@ const set<TraceXYPlot::YAxisType> TraceXYPlot::YAxisTypes = {TraceXYPlot::YAxisT
TraceXYPlot::YAxisType::Magnitude, TraceXYPlot::YAxisType::Magnitude,
TraceXYPlot::YAxisType::Phase, TraceXYPlot::YAxisType::Phase,
TraceXYPlot::YAxisType::VSWR, TraceXYPlot::YAxisType::VSWR,
TraceXYPlot::YAxisType::Impulse, TraceXYPlot::YAxisType::ImpulseReal,
TraceXYPlot::YAxisType::ImpulseMag,
TraceXYPlot::YAxisType::Step, TraceXYPlot::YAxisType::Step,
TraceXYPlot::YAxisType::Impedance}; TraceXYPlot::YAxisType::Impedance};
@ -185,7 +186,8 @@ void TraceXYPlot::fromJSON(nlohmann::json j)
bool TraceXYPlot::isTDRtype(TraceXYPlot::YAxisType type) bool TraceXYPlot::isTDRtype(TraceXYPlot::YAxisType type)
{ {
switch(type) { switch(type) {
case YAxisType::Impulse: case YAxisType::ImpulseReal:
case YAxisType::ImpulseMag:
case YAxisType::Step: case YAxisType::Step:
case YAxisType::Impedance: case YAxisType::Impedance:
return true; return true;
@ -357,17 +359,8 @@ void TraceXYPlot::draw(QPainter &p)
if(YAxis[i].type == YAxisType::Disabled) { if(YAxis[i].type == YAxisType::Disabled) {
continue; continue;
} }
QString labelY; QString labelY = AxisTypeToName(YAxis[i].type);
p.setPen(QPen(pref.General.graphColors.axis, 1)); p.setPen(QPen(pref.General.graphColors.axis, 1));
switch(YAxis[i].type) {
case YAxisType::Magnitude: labelY = "Magnitude"; break;
case YAxisType::Phase: labelY = "Phase"; break;
case YAxisType::VSWR: labelY = "VSWR"; break;
case YAxisType::Impulse: labelY = "Impulse Response"; break;
case YAxisType::Step: labelY = "Step Response"; break;
case YAxisType::Impedance: labelY = "Impedance"; break;
default: break;
}
auto xStart = i == 0 ? 0 : w.width() - AxisLabelSize * 1.5; auto xStart = i == 0 ? 0 : w.width() - AxisLabelSize * 1.5;
p.save(); p.save();
p.translate(xStart, w.height()-xAxisSpace); p.translate(xStart, w.height()-xAxisSpace);
@ -663,11 +656,14 @@ void TraceXYPlot::updateAxisTicks()
QString TraceXYPlot::AxisTypeToName(TraceXYPlot::YAxisType type) QString TraceXYPlot::AxisTypeToName(TraceXYPlot::YAxisType type)
{ {
switch(type) { switch(type) {
case YAxisType::Disabled: return "Disabled"; break;
case YAxisType::Magnitude: return "Magnitude"; break; case YAxisType::Magnitude: return "Magnitude"; break;
case YAxisType::Phase: return "Phase"; break; case YAxisType::Phase: return "Phase"; break;
case YAxisType::VSWR: return "VSWR"; break; case YAxisType::VSWR: return "VSWR"; break;
default: return "Unknown"; break; case YAxisType::ImpulseReal: return "Impulse Response (Real)"; break;
case YAxisType::ImpulseMag: return "Impulse Response (Magnitude)"; break;
case YAxisType::Step: return "Step Response"; break;
case YAxisType::Impedance: return "Impedance"; break;
default: return "Unknown";
} }
} }
@ -765,9 +761,12 @@ QPointF TraceXYPlot::traceToCoordinate(Trace *t, unsigned int sample, TraceXYPlo
ret.setY((1+abs(data.y)) / (1-abs(data.y))); ret.setY((1+abs(data.y)) / (1-abs(data.y)));
} }
break; break;
case YAxisType::Impulse: case YAxisType::ImpulseReal:
ret.setY(real(data.y)); ret.setY(real(data.y));
break; break;
case YAxisType::ImpulseMag:
ret.setY(abs(data.y));
break;
case YAxisType::Step: case YAxisType::Step:
ret.setY(t->sample(sample, Trace::SampleType::TimeStep).y.real()); ret.setY(t->sample(sample, Trace::SampleType::TimeStep).y.real());
break; break;
@ -908,7 +907,8 @@ QString TraceXYPlot::AxisUnit(TraceXYPlot::YAxisType type)
case TraceXYPlot::YAxisType::Magnitude: return "db"; break; case TraceXYPlot::YAxisType::Magnitude: return "db"; break;
case TraceXYPlot::YAxisType::Phase: return "°"; break; case TraceXYPlot::YAxisType::Phase: return "°"; break;
case TraceXYPlot::YAxisType::VSWR: return ""; break; case TraceXYPlot::YAxisType::VSWR: return ""; break;
case TraceXYPlot::YAxisType::Impulse: return ""; break; case TraceXYPlot::YAxisType::ImpulseReal: return ""; break;
case TraceXYPlot::YAxisType::ImpulseMag: return ""; break;
case TraceXYPlot::YAxisType::Step: return ""; break; case TraceXYPlot::YAxisType::Step: return ""; break;
case TraceXYPlot::YAxisType::Impedance: return "Ohm"; break; case TraceXYPlot::YAxisType::Impedance: return "Ohm"; break;
default: return ""; break; default: return ""; break;

View File

@ -18,9 +18,10 @@ public:
Phase = 2, Phase = 2,
VSWR = 3, VSWR = 3,
// TDR options // TDR options
Impulse = 4, ImpulseReal = 4,
Step = 5, ImpulseMag = 5,
Impedance = 6, Step = 6,
Impedance = 7,
Last, Last,
}; };
static const std::set<YAxisType> YAxisTypes; static const std::set<YAxisType> YAxisTypes;

View File

@ -178,7 +178,8 @@ std::set<TraceXYPlot::YAxisType> XYplotAxisDialog::supportedYAxis(TraceXYPlot::X
break; break;
case TraceXYPlot::XAxisType::Time: case TraceXYPlot::XAxisType::Time:
case TraceXYPlot::XAxisType::Distance: case TraceXYPlot::XAxisType::Distance:
ret.insert(TraceXYPlot::YAxisType::Impulse); ret.insert(TraceXYPlot::YAxisType::ImpulseReal);
ret.insert(TraceXYPlot::YAxisType::ImpulseMag);
ret.insert(TraceXYPlot::YAxisType::Step); ret.insert(TraceXYPlot::YAxisType::Step);
ret.insert(TraceXYPlot::YAxisType::Impedance); ret.insert(TraceXYPlot::YAxisType::Impedance);
break; break;

View File

@ -72,7 +72,12 @@
</item> </item>
<item> <item>
<property name="text"> <property name="text">
<string>Impulse Response</string> <string>Impulse Response (real)</string>
</property>
</item>
<item>
<property name="text">
<string>Impulse Response (mag)</string>
</property> </property>
</item> </item>
<item> <item>
@ -237,7 +242,12 @@
</item> </item>
<item> <item>
<property name="text"> <property name="text">
<string>Impulse Response</string> <string>Impulse Response (real)</string>
</property>
</item>
<item>
<property name="text">
<string>Impulse Response (mag)</string>
</property> </property>
</item> </item>
<item> <item>