1
0
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:
f4exb 2023-11-30 14:10:36 +01:00
parent b93f9459c9
commit 3b969ac058
4 changed files with 20 additions and 0 deletions

View File

@ -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);

View File

@ -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;
};

View File

@ -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) {

View File

@ -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);