Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
пояснений немножечко не хватает. Вы пишете с расчетом на читателя, который прекрасно разбирается в оконных функциях, а наверно, стоило бы немного пояснить подробнее, зачем они нужны, для тех, кто не занимается ежедневно обработкой сигналов и просто заглянул из любопытстваПояснения к статье должны быть достаточно краткими для того, чтобы не отвлекать от сути. Я исходил из того, что если читатель не знаком с обработкой сигналов, то статью можно рассматривать просто как математическую задачу с решением.
почему оконные функции не делают в виде скругленного с краев прямоугольного импульса, чтобы почти вся она равнялась единице и вносила минимум искажений в сигнал?Потому что умножение сигнала на оконную функцию равносильно свёртке их спектров, и чем больше окно «квадратное», тем выше уровень боковых лепестков после FFT, что затрудняет спектральный анализ.
А то ваши оконные функции похожи на горки и сигнал без изменений остается только в серединке.Процент перекрытия может быть и меньше 50%. Я не стал заострять на этом внимание, потому что это казалось очевидным (каюсь):

И еще вопрос, может вы знаете ответ, раз уж занимаетесь обработкой сигналов. Если есть сигнал неизвестного вида, который может содержать частоту X + шумы и щелчки, и мы хотели бы получить на выходе амплитуду этой частоты X в сигнале, то есть увидеть, где она есть, где ее нет, где ее больше — есть какой-то готовый простой алгоритм, без вычисления FFT? Какой-то простой фильтр, может быть? Нужно для определения задержки прохождения сигнала через звуковую карту и ее драйвера.На мой взгляд, вопрос некорректно поставлен. Для определения задержки прохождения сигнала через звуковую карту и ее драйвера не нужно анализировать амплитуду частот, нужно обеспечить точку отсчёта и прогонять единичный импульс или ЛЧМ. Задача достаточно сложная, чтобы можно было дать на неё исчерпывающий ответ в комментарии.
И интересно, где вообще нужны нестандартные оконные функции, особенно несимметричной формы?При нелинейной обработке сигнала через FFT результат сильно зависит от оконной функции. Если после обработки возникает артефакт в виде реверберации или «звона», то несимметричная форма окна позволяет его сфокусировать в правой части импульса, что может дать более естественное звучание. Отличия те же, что и между фазолинейными и минимально-фазовыми фильтрами.
И еще вопрос, может вы знаете ответ, раз уж занимаетесь обработкой сигналов. Если есть сигнал неизвестного вида, который может содержать частоту X + шумы и щелчки, и мы хотели бы получить на выходе амплитуду этой частоты X в сигнале, то есть увидеть, где она есть, где ее нет, где ее больше — есть какой-то готовый простой алгоритм, без вычисления FFT? Какой-то простой фильтр, может быть? Нужно для определения задержки прохождения сигнала через звуковую карту и ее драйвера.
Спасибо, интересная статья. Взял на заметку.
А в чем вы рисовали графики?
За счёт симметричности функции косинуса при сложении они суммируются в единицу:






static av_cold void init_imdct_window(void)
{
int i, j;
for (i = 0, j = 255; i < 128; i++, j--)
{
float wi = sin(((i + 0.5) / 256.0 - 0.5) * M_PI) + 1.0;
float wj = sin(((j + 0.5) / 256.0 - 0.5) * M_PI) + 1.0;
float w = 0.5 * (wi * wi + wj * wj);
mdct_window[i] = mdct_window[511 - i] = wi / w;
mdct_window[j] = mdct_window[511 - j] = wj / w;
}
}



потому что при умножении сигнала на окно происходит свёртка их спектровтак же верно и для mdct?










Проектирование оконных функций, суммирующихся в единицу с заданным уровнем перекрытия