mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-12-23 01:55:48 -05:00
Scope: Added derivative of magnitude squared to the list of projections
This commit is contained in:
parent
b93f9459c9
commit
3b969ac058
@ -60,6 +60,15 @@ Real Projector::run(const Sample& s)
|
||||
v = re*re + im*im;
|
||||
}
|
||||
break;
|
||||
case ProjectionDMagSq:
|
||||
{
|
||||
Real re = s.m_real / SDR_RX_SCALEF;
|
||||
Real im = s.m_imag / SDR_RX_SCALEF;
|
||||
Real curMagSq = re*re + im*im;
|
||||
v = curMagSq - m_prevVal;
|
||||
m_prevVal = curMagSq;
|
||||
}
|
||||
break;
|
||||
case ProjectionMagDB:
|
||||
{
|
||||
Real re = s.m_real / SDR_RX_SCALEF;
|
||||
@ -235,6 +244,13 @@ Real Projector::run(const std::complex<float>& s)
|
||||
case ProjectionMagSq:
|
||||
v = std::norm(s);
|
||||
break;
|
||||
case ProjectionDMagSq:
|
||||
{
|
||||
Real curMagSq = std::norm(s);
|
||||
v = curMagSq - m_prevVal;
|
||||
m_prevVal = curMagSq;
|
||||
}
|
||||
break;
|
||||
case ProjectionMagDB:
|
||||
{
|
||||
Real magsq = std::norm(s);
|
||||
|
@ -33,6 +33,7 @@ public:
|
||||
ProjectionImag, //!< Extract imaginary part
|
||||
ProjectionMagLin, //!< Calculate linear magnitude or modulus
|
||||
ProjectionMagSq, //!< Calculate linear squared magnitude or power
|
||||
ProjectionDMagSq, //!< Calculate time derivative of linear squared magnitude or power
|
||||
ProjectionMagDB, //!< Calculate logarithmic (dB) of squared magnitude
|
||||
ProjectionPhase, //!< Calculate phase
|
||||
ProjectionDOAP, //!< Calculate ambiguous DOA from phase as phase difference (assuming positive)
|
||||
@ -60,6 +61,7 @@ private:
|
||||
static Real normalizeAngle(Real angle);
|
||||
ProjectionType m_projectionType;
|
||||
Real m_prevArg;
|
||||
Real m_prevVal;
|
||||
Real *m_cache;
|
||||
bool m_cacheMaster;
|
||||
};
|
||||
|
@ -1893,6 +1893,7 @@ void GLScope::setYScale(ScaleEngine &scale, uint32_t highlightedTraceIndex)
|
||||
break;
|
||||
case Projector::ProjectionMagLin:
|
||||
case Projector::ProjectionMagSq:
|
||||
case Projector::ProjectionDMagSq:
|
||||
if (amp_range < 1e-9) {
|
||||
scale.setRange(Unit::None, amp_ofs * 1e12, amp_range * 1e12 + amp_ofs * 1e12);
|
||||
} else if (amp_range < 1e-6) {
|
||||
|
@ -1315,6 +1315,7 @@ void GLScopeGUI::fillProjectionCombo(QComboBox* comboBox)
|
||||
comboBox->addItem("Imag", Projector::ProjectionImag);
|
||||
comboBox->addItem("Mag", Projector::ProjectionMagLin);
|
||||
comboBox->addItem("MagSq", Projector::ProjectionMagSq);
|
||||
comboBox->addItem("dMagSq", Projector::ProjectionDMagSq);
|
||||
comboBox->addItem("MagdB", Projector::ProjectionMagDB);
|
||||
comboBox->addItem("Phi", Projector::ProjectionPhase);
|
||||
comboBox->addItem("DOAP", Projector::ProjectionDOAP);
|
||||
|
Loading…
Reference in New Issue
Block a user