Skip to content

Commit

Permalink
windowinng from frequency ignores bad coherence and small magnitude
Browse files Browse the repository at this point in the history
  • Loading branch information
psmokotnin committed May 3, 2024
1 parent 3237df6 commit 5308152
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 6 deletions.
4 changes: 2 additions & 2 deletions src/math/fouriertransform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,9 @@ void FourierTransform::setAlign(Align newAlign)
m_align = newAlign;
}

void FourierTransform::setLogWindoDenominator(unsigned int newLogWindoDenominator)
void FourierTransform::setLogWindowDenominator(unsigned int newLogWindowDenominator)
{
m_logWindowDenominator = newLogWindoDenominator;
m_logWindowDenominator = newLogWindowDenominator;
}

long FourierTransform::f2i(double frequency, int sampleRate) const
Expand Down
2 changes: 1 addition & 1 deletion src/math/fouriertransform.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ class FourierTransform
void setAlign(Align newAlign);


void setLogWindoDenominator(unsigned int newLogWindoDenominator);
void setLogWindowDenominator(unsigned int newLogWindowDenominator);

private:
unsigned int m_size;
Expand Down
12 changes: 9 additions & 3 deletions src/source/sourcewindowing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,13 +171,13 @@ void Windowing::resizeData()
m_dataFT.setSampleRate(sampleRate());
switch (m_usedMode) {
case Mode::LTW1:
m_dataFT.setLogWindoDenominator(1);
m_dataFT.setLogWindowDenominator(1);
break;
case Mode::LTW2:
m_dataFT.setLogWindoDenominator(10);
m_dataFT.setLogWindowDenominator(10);
break;
case Mode::LTW3:
m_dataFT.setLogWindoDenominator(25);
m_dataFT.setLogWindowDenominator(25);
break;
}
m_dataFT.prepare();
Expand Down Expand Up @@ -275,6 +275,12 @@ void Windowing::updateFromFrequencyDomain()
c = c2;
}

static float threshold = powf(10, -20 / 20);
if (g < threshold || c < 0.7) {
g = 0;
p = 0;
c = 0;
}
auto complexMagnitude = i == 0 ? 0 : p * g;
m_ftdata[i].magnitude = g;
m_ftdata[i].phase = p;
Expand Down

0 comments on commit 5308152

Please sign in to comment.