Как с помощью fft ускорить звук
Перейти к содержимому

Как с помощью fft ускорить звук

  • автор:

Быстрое преобразование Фурье

Быстрое преобразование Фурье — один из самых важных алгоритмов XX века, если не самый важный.

Оно применяется, как можно догадаться, для вычисления преобразований Фурье, которые в свою очередь используются для обработки звука, электромагнитных волн, задач оптики, сжатия данных, физического моделирования и прочих сложных математических и физических задач.

В этой статье же мы подойдем немного с другой стороны и рассмотрим алгоритм быстрого преобразования Фурье в контексте задачи умножения чисел и многочленов, часто встречающейся в олимпиадах.

#Умножение через интерполяцию

Многочлен степени $(n — 1)$ можно однозначно задать не только своими коэффициентами, но и значениями в $n$ различных точках.

При прямом перемножении многочленов, заданных своими коэффициентами, нужно потратить $O(n^2)$ операций. Но если многочлены заданы своими значениями в $2n$ точках, то их можно перемножить за $O(n)$: значение многочлена-произведения $A(x) \cdot B(x)$ в точке $x_i$ просто становится равным $A(x_i) \cdot B(x_i)$.

Основная идея алгоритма заключается в том, что если мы посчитаем значения в каких-то различных $(n + m)$ точках для обоих многочленов $A$ и $B$, то, попарно перемножив их, мы за $O(n + m)$ операций можем получить значения в тех же точках для многочлена $A(x) \cdot B(x)$, и с их помощью интерполяцией получить коэффициенты многочлена-произведения и решить задачу.

Если притвориться, что evaluate и interpolate работают за линейное время, то такое умножение тоже будет работать за линейное время. Но, к сожалению, непосредственное вычисление значений требует $O(n^2)$ операций, а интерполяция — как методом Гаусса, так и через символьное вычисление многочлена Лагранжа — и того больше, $O(n^3)$.

Но что, если бы мы могли вычислять значения в точках и делать интерполяцию быстрее? Выясняется, что это можно сделать, если рассматривать не произвольные точки, а только специальные — а именно, комплексные корни из единицы.

#Корни из единицы

Факт. Для любого натурального $n$ есть ровно $n$ «корней из единицы», то есть чисел $w_k$, для которых

$$ w_k^n = 1 $$ А именно, это будут числа вида $$ w_k = e^> $$

На комплексной плоскости эти числа располагаются на единичном круге на равном расстоянии друг от друга:

Первый корень $w_1$ (точнее второй — единицу считаем нулевым корнем) называют образующим корнем степени $n$ из единицы. Возведение его в нулевую, первую, вторую и так далее степени порождает последовательность нужных корней единицы, при этом на $n$-ном элементе последовательность зацикливается:

Будем обозначать $w_1$ как просто $w$.

#Дискретное преобразование Фурье

Дискретным преобразованием Фурье собственно и называется вычисление значений многочлена в комплексных корнях из единицы:

Обратным дискретным преобразованием Фурье называется, как можно догадаться, обратная операция — интерполяция коэффициентов $x_i$ по значениям $y_i$.

Утверждение. Обратное ДПФ можно вычислить по формуле

$$ x_j = \frac \sum_^ y_k e^> = \frac \sum_^ y_k w_^ $$ Доказательство. При вычислении ПФ мы фактически применяем матрицу к вектору: $$ \begin w^0 & w^0 & w^0 & w^0 & \dots & w^0 \\ w^0 & w^1 & w^2 & w^3 & \dots & w^ \\ w^0 & w^2 & w^4 & w^6 & \dots & w^ \\ w^0 & w^3 & w^6 & w^9 & \dots & w^ \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ w^0 & w^ & w^ & w^ & \dots & w^1 \end \begin a_0 \\ a_1 \\ a_2 \\ a_3 \\ \vdots \\ a_ \end = \begin y_0 \\ y_1 \\ y_2 \\ y_3 \\ \vdots \\ y_ \end $$

То есть преобразование Фурье — это просто линейная операция над вектором: $W a = y$. Значит, обратное преобразование можно записать так: $a = W^y$.

Как будет выглядеть эта $W^$? Автор не будет пытаться изображать логичный способ рассуждений о её получении и сразу её приведёт:

$$ W^ = \dfrac 1 n \begin w^0 & w^0 & w^0 & w^0 & \dots & w^0 \\ w^0 & w^ & w^ & w^ & \dots & w^ \\ w^0 & w^ & w^ & w^ & \dots & w^ \\ w^0 & w^ & w^ & w^ & \dots & w^ \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ w^0 & w^ & w^ & w^ & \dots & w^ \end $$

Проверим, что при перемножении $W$ и $W^$ действительно получается единичная матрица:

  1. Значение $i$-того диагонального элемента будет равно $\frac\sum_k w^ w^ = \fracn = 1$.
  2. Значение любого недиагонального ($i \neq j$) элемента $(i, j)$ будет равно

Последний переход верен, потому что все комплексные корни суммируются в ноль, то есть $\sum w^k = 0$.

Внимательный читатель заметит симметричность форм $W$ и $W^$, а также формул для прямого и обратного преобразования. Эта симметрия нам сильно упростит жизнь: для обратного преобразования Фурье можно использовать тот же алгоритм, только вместо $w^k$ использовать $w^$, а в конце результат поделить на $n$.

#Алгоритм

Напомним, что мы изначально хотели перемножать многочлены следующим алгоритмом:

  1. Посчитаем значения в $(n+m)$ каких-нибудь точках обоих многочленов.
  2. Перемножим эти значения попарно за $O(n + m)$.
  3. Интерполяцией получим многочлен-произведение.

В общем случае быстро посчитать интерполяцию и даже просто посчитать значения в точках нельзя, но для корней единицы — можно. Если научиться быстро считать значения в корнях и интерполировать (прямое и обратное преобразование Фурье), но мы сможем решить исходную задачу.

Соответствующий алгоритм и называется быстрым преобразованием Фурье (англ. fast Fourier transform). Он использует парадигму «разделяй-и-властвуй» и работает за $O(n \log n)$.

#Схема Кули-Тьюки

Обычно, алгоритмы «разделяй-и-властвуй» делят задачу на две половины: на первые $\frac$ элементов и вторые $\frac$ элементов. Здесь же мы поступим по-другому: поделим все элементы на чётные и нечётные.

Представим многочлен в виде $P(x)=A(x^2)+xB(x^2)$, где $A(x)$ состоит из коэффициентов при чётных степенях $x$, а $B(x)$ — из коэффициентов при нечётных.

Пусть $n = 2k$. Тогда заметим, что для любого целого числа $t$

$$ w^ = w^ = w^ = w^ <2(t \bmod k)>$$ Зная это, исходную формулу для значения многочлена в точке $w^t$ можно записать так: $$ P(w^t) = A(w^) + w^t B(w^) = A\left(w^<2(t\bmod k)>\right)+w^tB\left(w^<2(t\bmod k)>\right) $$

Ключевое замечание: различных корней вида $w^$, значения в которых нам потребуются для пересчета, будет в два раза меньше, а также в обоих многочленах будет в два раза меньших коэффициентов — значит, мы только что успешно разбили нашу задачу на две, каждая из которых в два раза меньше.

Сам алгоритм заключается в следующем: рекурсивно посчитаем БПФ для многочленов $A$ и $B$ и объединим ответы с помощью формулы выше. При этом в рекурсии нам нужно считать значения на корнях степени не $n$, а $k = \frac$, то есть на всех «чётных» корнях степени $n$ (вида $w^$). Заметим, что если $w$ это образующий корень степени $n = 2k$ из единицы, то $w^2$ будет образующим корнем степени $k$, то есть в рекурсию мы можем просто передать другое значение образующего корня.

Таким образом, мы свели преобразование размера $n$ к двум преобразованиям размера $\dfrac n 2$, и, следовательно, общее время вычисления БПФ составит

$$ T(n)=2T\left(\dfrac n 2\right)+O(n)=O(n\log n) $$

Отметим также, что предположение о делимости $n$ на $2$ имело существенную роль. Значит, $n$ должно быть чётным на каждом уровне, кроме последнего, из чего следует, что $n$ должно быть степенью двойки.

#Реализация

Приведём код, вычисляющий БПФ по схеме Кули-Тьюки:

      При изначальном запуске следует дополнить массив до степени двойки:
Как обсуждалось ранее, обратное преобразование Фурье удобно выразить через прямое:
 Теперь мы умеем перемножать два многочлена за $O(n \log n)$:
Приведённый выше код, являясь корректным и имея асимптотику $O(n \log n)$, имеет весьма большую константу — в основном из-за рекурсии и дополнительных аллокаций.

#Оптимизированная версия

Попробуем избавиться от аллокаций вообще. Сейчас они происходят, потому что мы каждый раз разбиваем массив на два. Что произойдет, если вместо того, чтобы создавать новые массивы, просто сдвинуть все четные элементы в левую половину, а нечетные — в правую, и запуститься рекурсивно от половин?

Наблюдение. Элемент с индексом k на последнем уровне рекурсии будет записан в ячейку revbits(k) , где функция revbits(x) «разворачивает» биты числа x .

Действительно, первой итерации все четные элементы (с нижним битом, равным нулю) будут записаны в первую половину (в позицию с верхним битом, равным нулю), а для нечетных наоборот. Дальше, все элементы со вторым самым младшим битом равным нулю будут внутри своих половин записаны в меньшую половину (со вторым самым старшим битом, равным нулю), и так далее.

Это число простое, и при этом является ровно на единицу больше числа, делящегося на большую степень двойки. При $n=2^$ подходящим $g$ является число $31$. Заметим, что, как и для комплексных чисел, если для некоторого $n=2^k$ первообразный корень $g$, то для $n=2^$ первообразным корнем будет $(g^2 \bmod m)$. Таким образом, для $m=998244353$ и $n=2^k$ первообразный корень будет равен $g=31^> \bmod m$.

Реализация при этом практически не отличается: нужно просто использовать модулярную арифметику во всех операциях и страшные предподсчитанные константы для $w$ и $w^$.

Также с недавнего времени некоторые проблемсеттеры начали использовать именно этот модуль вместо стандартного $10^9+7$, чтобы намекнуть (или сбить с толку), что задача на FFT.

FFT (быстрое преобразование Фурье)

При работе со звуком возможно ли вычислить только часть звукового спектра, не вычисляя всю остальную? Если это возможно, то был бы рад ссылкам на движки, желательно Open Source.

Отслеживать
8,677 18 18 золотых знаков 74 74 серебряных знака 183 183 бронзовых знака
задан 13 ноя 2011 в 15:04
Vladimir4152 Vladimir4152
70 1 1 серебряный знак 7 7 бронзовых знаков

Что значит часть спектра? Как это? А opensource fft — «Fastest Fourier Transform in the West.» www.fftw.org

13 ноя 2011 в 15:52

Про этот вариант реализации реализацию — мне известно. Возникла проблема с интеграцией. Возможно ли получить часть спектра, то есть не вычислять все значения, а получить необходимый диапазон, в целях оптимизации.

13 ноя 2011 в 21:10

Что значит «необходимый диапазон»? fft вычисляет значения в диапазоне от 0 до половины частоты дискретизации. Вам нужна часть значений? Берите часть. Если бы речь шла просто о DFT (дискретном преобразовании Фурье), то имело бы смысл заморачиваться на эту тему, а оптимизации fft, как мне кажется, сводят смысл операции на нет. Но разумеется, Вы можете сами посчитать DFT по нужной части спектра без всяких библиотек, просто я не уверен, что овчинка стоит выделки.

14 ноя 2011 в 3:03

В целях оптимизации можно только уменьшить разрешение спектра, т.е. уменьшить число гармоник. Спектр будет строиться очень быстро на 100-200 гармониках, хотя, при этом, конечно теряется его точность. Выбирайте: скорость или детализация спектра.

Навигация по частотной области: FFCS для продвинутой обработки

Обработка частотной области — это мощный метод, используемый в различных областях, включая обработку сигналов, обработку изображений и обработку аудио.Он включает в себя анализ и манипулирование сигналами в частотной области, а не в области времени.Конвертируя сигналы от временной области в частотную область, мы можем получить ценную информацию и выполнить расширенные задачи обработки, которые нелегко достичь только в только временной области.

2. Преобразование Фурье: ключ к обработке частотной домены

Преобразование Фурье — это математический инструмент, который играет центральную роль в обработке частотной области.Это позволяет нам преобразовать сигнал из временной области в частотную область, выявляя базовые частотные компоненты, которые составляют сигнал.Разместив сигнал на его частотные компоненты, мы можем анализировать и манипулировать конкретными частотами или частотными диапазонами, обеспечивая более глубокое понимание характеристик сигнала.

Например, при обработке аудио преобразование Фурье помогает нам определить различные музыкальные ноты в данном звуке.При обработке изображений это позволяет нам обнаруживать края, текстуры и шаблоны, анализируя частотное содержание изображения.Используя силу преобразования Фурье, мы можем извлечь значимую информацию из сигналов и выполнить широкий спектр передовых методов обработки.

3. Применение обработки частотной доменной домены

Обработка частотной области находит приложения в различных областях.Вот несколько примеров:

А) Обработка речи: в системах распознавания речи обработка частотной области используется для извлечения соответствующих функций из речевых сигналов, таких как формант и высота.Затем эти особенности используются для таких задач, как идентификация динамиков, синтез речи и улучшение речи.

Б) Улучшение изображения: применяя частотные доменные фильтры, такие как фильтры с высокой частотой или низкочастоты, мы можем улучшить конкретные функции в изображении.Например, фильтр с высокой частотой может отточить края и улучшать детали, в то время как фильтр низкого уровня может сгладить шум и уменьшать артефакты изображения.

C) Сжатие сигнала: обработка частотной домены широко используется в методах сжатия данных, таких как JPEG для изображений и MP3 для аудио.Отбрасывая или квантовать менее важные частотные компоненты, мы можем значительно уменьшить размер хранения сигналов при сохранении качества восприятия.

4. Советы по эффективной обработке доменов частотной домены

Чтобы получить максимальную отдачу от частотной доменной обработки, рассмотрите следующие советы:

А) Выберите соответствующую функцию оконного окна: при применении преобразования Фурье часто необходимо для уменьшения спектральной утечки и артефактов.Различные функции окна, такие как Ханнинг, Хэмминг или Блэкман, имеют разные характеристики, поэтому выберите тот, который лучше всего подходит для вашего приложения.

Б) Понимание эффектов псевдонима: псевдоним происходит, когда частота исходного сигнала превышает частоту Nyquist (половина скорости отбора проб).Чтобы избежать псевдонима, крайне важно надлежащим образом отбрасывать сигнал и применить фильтры с антиалиатами при необходимости.

C) Объедините время и частотную доменную обработку: в то время как обработка частотной области предлагает ценную информацию, часто полезно объединить ее с методами обработки временной области для более полного анализа.Например, при выравнивании звука мы можем манипулировать конкретными частотами в частотной области, рассматривая временные характеристики сигнала.

5. Пример из исследования: разоблачение аудиосигнала

Давайте рассмотрим тематическое исследование, в котором обработка частотной области используется для денорирования аудиосигнала.Применяя преобразование Фурье к шумному аудиосигналу, мы можем идентифицировать частотные компоненты, в которых преобладает шум.Затуполивая или удаляя эти компоненты шума в частотной области, а затем преобразование сигнала обратно в домену временного уровня, используя обратное преобразование Фурье, мы можем получить более чистый аудиосигнал.

Обработка частотной области — это мощный метод, который позволяет нам анализировать и манипулировать сигналами в частотной области.Понимая основы преобразования Фурье и исследуя его приложения, мы можем разблокировать широкий спектр передовых задач обработки.Не забудьте применять предоставленные советы и рассмотреть реальные тематические исследования для улучшения навыков обработки частотной области.

Введение в обработку частотной области - Навигация по частотной области: FFCS для продвинутой обработки

Введение в обработку частотной области — Навигация по частотной области: FFCS для продвинутой обработки

2. Понимание быстрого преобразования Фурье (FFT)

1. Введение в быстрое преобразование Фурье (FFT)

Fast Fourier Transform (FFT) является фундаментальной концепцией в обработке сигналов, которая позволяет нам анализировать сигналы в частотной области.Преобразуя сигнал из домена времени в частотную область, мы получаем ценную информацию о его спектральных компонентах, позволяя нам извлекать полезную информацию и выполнять расширенные методы обработки.В этом разделе мы рассмотрим тонкости БПФ, исследуя его приложения, принцип работы и практические советы для эффективной реализации.

2. Принцип работы БПФ

FFT — это алгоритм, который вычисляет дискретное преобразование Фурье (DFT) последовательности, что позволяет нам анализировать частотное содержание сигнала.Это достигает этого путем деления DFT на более мелкие подпрограммы через процесс, известный как уничтожение во времени.Рекурсивно применяя это разделение, алгоритм уменьшает количество необходимых вычислений, что приводит к значительному повышению эффективности по сравнению с традиционным расчетом DFT.Выход алгоритма FFT представляет собой сложный спектр, представляющий амплитуду и фазу каждого частотного компонента, присутствующего в входном сигнале.

3. Применение БПФ

Приложения FFT простираются в различных областях, включая обработку аудио, анализ изображений, телекоммуникации и научные исследования.Например, при обработке звука БПФ широко используется для таких задач, как сжатие звука, снижение шума и выравнивание.В телекоммуникациях FFT играет решающую роль в методах модуляции и демодуляции, что позволяет передавать и принять сложные сигналы.Кроме того, FFT обнаруживает широкое использование в анализе медицинских сигналов, сейсмических данных и прогнозирования погоды, чтобы назвать несколько.

4. Практические советы для эффективной реализации БПК

Чтобы обеспечить эффективную реализацию БПФ, важно рассмотреть несколько ключевых факторов.Во -первых, выбор соответствующего размера БПФ имеет решающее значение.Размер БПФ должен быть силой 2, чтобы в полной мере воспользоваться эффективностью алгоритма.Кроме того, заполнение входного сигнала с помощью нулей для достижения желаемого размера БПФ может обеспечить более частотное разрешение.Кроме того, использование оптимизированных библиотек БПФ, таких как самое быстрое преобразование фурье на Западе (FFTW) или библиотека математических ядра Intel (MKL), может значительно повысить вычислительные характеристики.Наконец, методы параллелизации, такие как использование многопоточного ускорения или ускорения графического процессора, могут дополнительно ускорить скорость обработки алгоритмов FFT.

5. Тематическое исследование: выравнивание звука с использованием FFT

Давайте рассмотрим практическое пример для иллюстрации применения БПФ в обработке аудио.Предположим, мы хотим выполнить выравнивание на аудиосигнал для улучшения определенных полос частот.Применяя FFT к аудиосигналу, мы можем получить его частотный спектр.Затем мы можем манипулировать спектром путем усиления или ослабления определенных частотных компонентов для достижения желаемого эффекта выравнивания.Наконец, применяя обратный БПФ, мы можем преобразовать модифицированный спектр обратно в домен времени, что приводит к сравнению с выравниваемым аудиосигналом.

6. Заключение

Понимание быстрого преобразования Фурье (FFT) имеет решающее значение для навигации по частотной области и выполнения задач обработки расширенных сигналов.Используя FFT, мы можем получить ценную информацию о частотном содержании сигналов и извлечь полезную информацию для различных приложений.Эффективно внедряя FFT и, учитывая практические советы, мы можем оптимизировать его производительность и повысить скорость обработки.Будь то обработка аудио, телекоммуникации или научные исследования, FFT остается мощным инструментом для анализа и манипулирования сигналами в частотной области.

Понимание быстрого преобразования Фурье \(FFT\) - Навигация по частотной области: FFCS для продвинутой обработки

Понимание быстрого преобразования Фурье \(FFT\) — Навигация по частотной области: FFCS для продвинутой обработки

3. Приложения обработки частотной доменной домены

1. Фильтрация и удаление шума. Одним из наиболее распространенных применений обработки частотной домены является фильтрация и удаление шума.Анализируя частотное содержание сигнала, мы можем идентифицировать и устранить нежелательный шум или помехи.Например, при обработке аудио можно применять фильтр с высоким частотом для удаления низкочастотного шума, в то время как фильтр низкого уровня может удалять высокочастотный шум.Обработка частотной области позволяет нам избирательно ослаблять или усилить определенные частотные компоненты, что приводит к более чистым и более понятным сигналам.

2. Улучшение изображения: обработка частотной области также широко используется в обработке изображений для повышения качества изображений.Применяя методы, такие как преобразование Фурье, изображения могут быть преобразованы из пространственной области в частотную область.Это преобразование позволяет нам манипулировать частотными компонентами изображения, чтобы улучшить ясность, резкость и контрастность.Например, путем усиления высокочастотных компонентов мы можем улучшить мелкие детали в изображении, в то время как ослабление низкочастотных компонентов может снизить размытие или шум.

3. Сжатие речи и аудио: обработка частотной домены играет решающую роль в алгоритмах сжатия речи и аудио, таких как mp3.Анализируя частотное содержание аудиосигнала, может быть идентифицирована и удалена избыточная или нерелевантная информация.Эта техника сжатия использует тот факт, что человеческое ухо менее чувствительно к определенным частотным компонентам.Выборочно отбрасывая менее важную информацию, аудиофайлы могут быть значительно сжаты без значительной потери воспринимаемого качества.

4. Обработка радиолокационных и сонарных сигналов: обработка частотной области широко используется в системах радара и сонарных систем для обнаружения и отслеживания целей.Анализируя частотную реакцию эхо или отражений, можно определить наличие объектов или препятствий.Применяя различные методы фильтрации и обработки в частотной области, становится возможным различать различные типы мишеней или подавлять нежелательный беспорядок.Это обеспечивает более точное обнаружение цели и локализацию в таких приложениях, как управление воздушным движением или подводное картирование.

5. Медицинская визуализация: при медицинской визуализации обработка частотной области используется в таких методах, как компьютерная томография (КТ) и магнитно -резонансная томография (МРТ).Эти методы включают получение необработанных данных в частотной области, а затем реконструирование изображений в пространственном домене.Анализируя частотное содержание полученных данных, медицинские работники могут получить подробные изображения внутренних структур, обнаруживать аномалии и помощь в диагностике.Обработка частотной области обеспечивает извлечение ценной информации из сложных сигналов, способствуя достижениям в области технологии медицинской визуализации.

Советы по обработке доменной домены:

Ознакомьтесь с преобразованием Фурье и другими соответствующими математическими понятиями, чтобы лучше понять обработку частотной области.

Экспериментируйте с различными типами фильтров (например, низкопроходной, высокой частотной, полосовой пасс), чтобы понять их влияние на сигналы или изображения.

Рассмотрим компромисс между уровнем снижения шума и потенциальной потерей важной информации сигнала при применении методов обработки частотной области.

Исследуйте специализированные программные инструменты или библиотеки, которые предлагают предварительно внедренные алгоритмы обработки частотной домены для эффективных и точных результатов.

Тема исследования: дженонирование изображения

Давайте рассмотрим случай, когда обработка частотной домены применяется для денорирования изображения.Преобразуя изображение в частотную область, используя такие методы, как дискретное преобразование Фурье (DFT) или быстрое преобразование Фурье (FFT), можно определить частотные компоненты, содержащие шум.Избирательно ослабляя эти компоненты и выполняя обратное преобразование, изображение может быть реконструировано с уменьшенным шумом.Этот метод может значительно улучшить качество изображений, полученных в условиях низкого освещения или влияя на шум датчика.

Обработка частотной домены предлагает широкий спектр приложений в различных областях, включая обработку сигналов и изображений, сжатие, радиолокационные и сонарские системы, а также медицинскую визуализацию.Используя мощность частотного анализа, мы можем извлечь ценную информацию, удалять нежелательный шум, повысить качество изображения и улучшить производительность различных систем и технологий.

Приложения обработки частотной доменной домены - Навигация по частотной области: FFCS для продвинутой обработки

Приложения обработки частотной доменной домены — Навигация по частотной области: FFCS для продвинутой обработки

4. Преимущества обработки частотной доменной домены при расширенной обработке

1. Улучшенный анализ сигналов. Одним из ключевых преимуществ обработки частотной доменной домены в расширенных методах обработки является способность получить более глубокое понимание характеристик сигнала.Преобразуя сигнал во временной области в его частотные компоненты, мы можем более эффективно проанализировать частоту частоты сигнала.Это может быть особенно полезно в таких приложениях, как обработка аудио, обработка изображений и телекоммуникации, где понимание частотного распределения сигнала имеет решающее значение.

2. Фильтрация шума и удаление: методы обработки частотной домены предлагают мощные инструменты для фильтрации шума и удаления.Идентифицируя и изолируя компоненты шума в частотной области, мы можем применить методы целевой фильтрации для ослабления или устранения нежелательного шума от сигнала.Например, при обработке аудио методы частотной домены, такие как спектральная вычитание или фильтрация винера, могут эффективно снизить фоновый шум, что приводит к более чистому и более четкому выводу аудио.

3. Эффективное сжатие: обработка частотной домены играет значительную роль в алгоритмах сжатия данных, что позволяет эффективно хранение и передачу информации.Такие методы, как сжатие на основе преобразования Фурье, обычно используемые в сжатии изображений и видео, используют избыточность и нерелевантность в частотной области, чтобы уменьшить размер данных без значительной потери качества.Это обеспечивает более быструю передачу, сокращение требований к хранению и улучшение использования полосы пропускания.

4. Адаптивная фильтрация и выравнивание: обработка частотной области обеспечивает адаптивную фильтрацию и выравнивание, которые необходимы во многих приложениях.Например, в телекоммуникациях методы выравнивания используются для компенсации искажения сигнала, вызванного передачей через различные среды или каналы.Анализируя частотную характеристику канала и применяя соответствующее выравнивание в частотной области, мы можем восстановить исходное качество сигнала, что приведет к повышению надежности связи.

5. Спектральный анализ и извлечение признаков: обработка частотной домены позволяет выполнять эффективный спектральный анализ и извлечение признаков из сигналов.Изучив частотные компоненты сигнала, мы можем идентифицировать конкретные спектральные шаблоны или функции, которые имеют отношение к конкретному применению.Например, при распознавании речи частота -домен может использоваться для извлечения форманта, которые имеют решающее значение для различения различных фонем.Точно так же при обработке изображений методы частотной домены, такие как быстрое преобразование Фурье (FFT), могут выявлять характеристики изображения, такие как текстура или края.

6. Тематическое исследование: Медицинская визуализация: Обработка частотной области находит обширные применения в медицинской визуализации, где она играет решающую роль в различных методах диагностики.Например, в магнитно-резонансной визуализации (МРТ) методы основанных на преобразовании Фурье используются для преобразования необработанных данных, полученных из сканера в представление частотной области.Это позволяет реконструкции изображений с высоким разрешением путем выборочного объединения желаемых частотных компонентов.

7. Советы по эффективной частотной доменной обработке: чтобы максимально использовать методы обработки частотной области, важно рассмотреть несколько советов:

Правильно выберите соответствующее представление частотной области, такое как преобразование Фурье или вейвлет -преобразование, на основе характеристик сигнала и требований к обработке.

Понять компромисс между разрешением времени и частоты.Увеличение разрешения частоты (более узкие частоты) может уменьшить разрешение времени и наоборот.

Будьте внимательны к потенциальным артефактам, введенным в соответствии с обработкой частотной области, такими как спектральная утечка или псевдоним, и примените соответствующие методы для их смягчения.

Обработка частотной домены предлагает многочисленные преимущества в приложениях для обработки сигналов.От улучшенного анализа сигнала до фильтрации шума, сжатия, адаптивной фильтрации и спектрального анализа, понимание и эффективное использование частотного домена могут значительно расширить возможности обработки в различных областях.

Преимущества обработки частотной доменной домены при расширенной обработке - Навигация по частотной области: FFCS для продвинутой обработки

Преимущества обработки частотной доменной домены при расширенной обработке — Навигация по частотной области: FFCS для продвинутой обработки

5. Методы реализации обработки частотной домены

1. Частотная область является мощным инструментом для передовой обработки сигналов, предлагая другую перспективу анализа и манипулирования сигналами.Преобразуя сигналы от временной области в частотную область, мы можем получить ценную информацию о их спектральных компонентах и реализовать различные методы для улучшения или их изменения.В этом разделе мы рассмотрим некоторые эффективные методы реализации обработки частотной области, включая примеры, советы и тематические исследования.

2. Быстрое преобразование Фурье (FFT): FFT является фундаментальным алгоритмом для преобразования сигнала из временной области в частотную область.Он эффективно вычисляет дискретное преобразование Фурье (DFT) сигнала, предоставляя нам представление частотного спектра.Выполняя БПФ на сигнале, мы можем проанализировать его частотное содержание и идентифицировать доминирующие частоты или спектральные закономерности.Например, при обработке звука БПФ может использоваться для извлечения отдельных музыкальных нот из сложного звука.

3. Фильтрация в частотной области: одним из ключевых преимуществ работы в частотной области является возможность применения различных фильтров для манипулирования спектральными компонентами сигнала.Изменив частотный спектр, мы можем выборочно улучшить или подавить определенные частоты.Например, фильтр низкого частоты может использоваться для ослабления высокочастотного шума, в то время как фильтр с высоким частотом может удалить низкочастотные помехи.Комбинируя различные типы фильтра, мы можем создать более сложные частотные ответы, адаптированные к конкретным приложениям.

4. Окно: при выполнении обработки частотной доменной домены важно решить проблему спектральной утечки.Спектральная утечка происходит, когда частотные компоненты сигнала выходят за рамки проанализированной части, что приводит к нежелательным артефактам.Методы окна могут помочь смягчить эту проблему, снижая сигнал по краям, уменьшая утечку спектра.Общие функции окончания включают окна Хамминга, Ханнинга и Блэкмена.Выбор подходящей формы и размера окна имеет решающее значение для достижения точного частотного анализа.

5. Спектральное улучшение и выравнивание: обработка частотной области позволяет нам улучшать конкретные спектральные компоненты или выравнивать общую частотную характеристику сигнала.Подчеркивая определенные частоты, мы можем повысить ясность речи или музыкальных инструментов в аудиосигналах.Выравнивание позволяет нам регулировать относительные амплитуды различных полос частот, компенсируя дефицит системы или адаптируя звук к конкретным предпочтениям.Например, в производстве звука выравнивание часто используется для баланса частоты баса, среднего и высокого уровня.

6. Пример: Снижение шума в обработке изображений: методы частотной области не ограничиваются аудиосигналами;Они также могут быть применены к обработке изображений.Одним из распространенных применений является снижение шума.Преобразуя изображение в частотную домену с использованием таких методов, как 2D FFT, мы можем идентифицировать и ослабить нежелательные частотные компоненты, соответствующие шуму.Этот подход особенно эффективен для снижения периодического шума, такой как помехи, вызванные электрическими системами или артефактами датчиков.

7. Советы по реализации обработки частотной домены:

АПонять компромиссы: обработка частотной области может вводить артефакты и искажения, поэтому важно тщательно рассмотреть желаемый результат и потенциальное влияние на сигнал.

БеременныйВыберите соответствующие параметры анализа: выбор правильного размера окна, перекрытия и скорости отбора проб имеет решающее значение для точного частотного анализа и предотвращения эффектов псевдонима.

ВРассмотрим вычислительную сложность: обработка частотной области может быть вычислительно интенсивной, особенно для больших сигналов или анализа высокого разрешения.Оптимизируйте вашу реализацию для эффективности, если требуется обработка в реальном времени.

ДюймовыйУтвердите результаты: всегда проверяйте эффективность ваших методов обработки частотной области, сравнивая обработанный сигнал с исходным сигналом и оценивая желаемые улучшения.

8. Заключение: (не приведено в соответствии с инструкциями)

Методы реализации обработки частотной домены - Навигация по частотной области: FFCS для продвинутой обработки

Методы реализации обработки частотной домены — Навигация по частотной области: FFCS для продвинутой обработки

6. Проблемы и ограничения частотной доменной обработки

1. Ограниченное время разрешения. Одной из основных проблем, с которыми сталкивается обработка частотной области, является ограниченное время.При анализе сигналов в частотной области мы теряем способность точно определять время событий.Это может быть особенно проблематичным в приложениях, где время имеет решающее значение, например, при обработке аудио или распознавание речи.Например, если мы применим фильтр частотного домена для удаления фонового шума из речевого сигнала, мы можем непреднамеренно ввести задержку, что приведет к несоответствию между движениями губ и соответствующим аудио.

2. Псевдоним и утечка спектра: псевдоним происходит, когда частотное содержание сигнала искажается из -за недостаточной выборки.В частотной области это проявляется как перекрывающиеся спектральные компоненты, что затрудняет точную идентификацию истинных частот, присутствующих в сигнале.Утечка спектра, с другой стороны, возникает, когда частотные компоненты сигнала «утечка» в соседние частоты, что приводит к искаженному представлению спектра сигнала.Как псевдоним, так и утечка спектра могут значительно повлиять на точность алгоритмов обработки частотной области, особенно в таких приложениях, как радар или медицинская визуализация.

3. Артефакты окна: окно — это общий метод, используемый в обработке частотной области для смягчения спектральной утечки.Применяя функцию окна к сигналу перед выполнением преобразования Фурье, мы можем уменьшить влияние спектральной утечки.Тем не менее, окно вводит свой собственный набор проблем.Выбор функции окон и ее параметров может значительно повлиять на точность и разрешение анализа частотной области.Неправильный выбор или неправильное использование оконного использования могут привести к артефактам в обработанном сигнале, таких как боковые плоды или звонки, которые могут скрывать истинное содержание частоты.

4. Нестационарные сигналы: обработка частотной области предполагает, что сигналы являются стационарными, что означает, что их статистические свойства не меняются со временем.Тем не менее, многие реальные сигналы не являются стационарными, что означает, что их характеристики меняются со временем.Это создает проблему при применении методов частотных доменов, поскольку предположение о стационарности может не сохраняться.Например, при анализе сигналов электрокардиограммы (ЭКГ) частотное содержание сердца может меняться со временем из -за физиологических факторов, что затрудняет точное извлечение соответствующей информации с использованием только обработки частотной области.

5. Вычислительная сложность: обработка частотной области часто включает в себя сложные математические операции, такие как преобразование Фурье, которое может быть вычислительно интенсивным.Поскольку размер сигнала увеличивается или желаемое частотное разрешение становится более тонким, вычислительные требования растут в геометрической прогрессии.Это может создавать ограничения в приложениях или системах в реальном времени с ограниченной мощностью обработки.Важно рассмотреть компромисс между точностью и сложностью вычислительной техники при реализации алгоритмов обработки частотной области.

Обработка частотной области предлагает мощные инструменты для анализа и манипулирования сигналами в различных приложениях.Тем не менее, важно знать о проблемах и ограничениях, связанных с этим подходом.Понимая эти ограничения и используя соответствующие методы, мы можем эффективно ориентироваться в частотной области и использовать ее преимущества для передовой обработки сигналов.

Проблемы и ограничения частотной доменной обработки - Навигация по частотной области: FFCS для продвинутой обработки

Проблемы и ограничения частотной доменной обработки — Навигация по частотной области: FFCS для продвинутой обработки

7. Реальные приложения обработки частотной домены

1. Введение

В мире обработки сигналов частотная область играет решающую роль в анализе и манипулировании сигналов.Преобразуя сигналы от временной области в частотную область, мы можем раскрыть скрытые закономерности, удалить нежелательный шум и повысить общее качество сигнала.В этом разделе мы рассмотрим некоторые реальные приложения обработки частотной домены посредством тематических исследований, предлагая представление о том, как этот мощный метод может использоваться в различных областях.

2. Тематическое исследование: выравнивание звука

Одним из распространенных применений обработки частотной области является выравнивание звука, которое включает в себя настройку амплитуд различных частотных компонентов в аудиосигнале.Анализируя частотное содержание сигнала с использованием таких методов, как быстрое преобразование Фурье (FFT), мы можем определить конкретные диапазоны частот, которые необходимо увеличить или ослаблять.Например, в живом концертном концерте аудио -инженер может использовать обработку частотной домены, чтобы уменьшить обратную связь, вызванную резонансными частотами на месте, что приведет к более четкому звуку для аудитории.

3. Тематическое исследование: улучшение изображения

Обработка частотной области не ограничивается аудиосигналами;Это также может быть применено к обработке изображений.Преобразуя изображение в его частотное представление, используя такие методы, как дискретное косинусное преобразование (DCT), мы можем манипулировать частотными компонентами изображения для повышения его качества.Например, при медицинской визуализации обработка частотной области может использоваться для удаления шума из рентгеновских или МРТ-изображений, улучшения видимости важных деталей и помощи в точных диагнозах.

4. Пример из исследования: распознавание речи

Системы распознавания речи в значительной степени полагаются на обработку частотной области добычи для извлечения соответствующих функций из речевых сигналов.Анализируя спектральное содержание речевого сигнала, эти системы могут идентифицировать различные фонетические компоненты и сопоставить их с известными речевыми паттернами.Это позволяет приложениям, таким как голосовые помощники, службы транскрипции и даже системы безопасности, которые используют распознавание голоса для аутентификации.Обработка частотной области помогает повысить точность и надежность этих систем путем эффективного захвата уникальных характеристик речи.

5. Советы по эффективной обработке доменной домены

Выберите соответствующий метод преобразования частотной области на основе конкретных характеристик применения и сигнала.Выбор между БПФ, DCT или другими методами зависит от таких факторов, как тип сигнала, желаемая точность и вычислительная эффективность.

Обратите внимание на выбор функций окончания при применении методов обработки частотной домены.Различные функции окна могут повлиять на компромисс между частотным разрешением и локализацией времени, влияя на качество обработанного сигнала.

Рассмотрим компромисс между резолюциями времени и частоты.Более высокое время разрешения обеспечивает лучшую временную анализ, в то время как более высокое частотное разрешение предоставляет более точную частоту информации.поиск правильного баланса имеет решающее значение, в зависимости от конкретных требований приложения.

6. Заключение

Обработка частотной области предлагает мощный набор инструментов для анализа и манипулирования сигналами в различных приложениях реального мира.Понимая принципы этих методов и изучая тематические исследования, такие как выравнивание звука, улучшение изображения и распознавание речи, мы можем использовать потенциал обработки частотной области для повышения качества и надежности наших систем.Будь то в аудиоинженерии, медицинской визуализации или распознавании речи, частотная область обладает огромным потенциалом для передовой обработки сигналов.

Реальные приложения обработки частотной домены - Навигация по частотной области: FFCS для продвинутой обработки

Реальные приложения обработки частотной домены — Навигация по частотной области: FFCS для продвинутой обработки

8. Будущие тенденции в обработке частотной области

1. Будущее обработки частотной области

Поскольку технология продолжает продвигаться по беспрецедентной скорости, обработка области частотной области готова для значительного роста и инноваций.В этом сообщении в блоге рассматриваются некоторые из будущих тенденций, которые, как ожидается, будут формировать эту область, революционизируя способ обработки и анализа сигналов.Итак, давайте погрузимся прямо в захватывающий мир обработки частотной области и узнаем, что ждет впереди!

2. Интеграция машинного обучения и искусственного интеллекта

Одной из наиболее перспективных тенденций в обработке частотной области является интеграция методов машинного обучения и искусственного интеллекта (ИИ).Благодаря возможности обрабатывать огромные объемы данных и выявлять сложные закономерности, эти технологии могут значительно повысить эффективность и точность алгоритмов обработки частотной области.Например, алгоритмы, способствующие AI, могут автоматически обнаруживать и классифицировать различные типы сигналов, что облегчает выявление и смягчение помех или извлекать соответствующую информацию из шумных сигналов.

3. Адаптивная фильтрация для динамической обработки сигналов

Методы адаптивной фильтрации являются еще одной областью фокуса в будущем обработки частотной области.Эти алгоритмы могут динамически регулировать свои параметры на основе характеристик входного сигнала, что позволяет обрабатывать в реальном времени и оптимальную производительность в изменяющихся средах.Адаптивная фильтрация особенно полезна в таких приложениях, как шумоподавление, подавление эхо и выравнивание.Непрерывно адаптируясь к изменяющимся условиям сигнала, эти алгоритмы могут обеспечить улучшение качества сигнала и повышение производительности.

4. Многомерная обработка сигналов

Традиционно обработка частотной области в основном была сосредоточена на одномерных сигналах.Однако с развитием технологий многомерные сигналы становятся все более распространенными в различных приложениях.Примеры включают обработку изображений и видео, где сигналы представлены в виде двухмерных или трехмерных массивов.Будущие тенденции в обработке частотной области будут включать в себя разработку эффективных алгоритмов, которые могут обрабатывать эти многомерные сигналы, открывая новые возможности для таких приложений, как распознавание изображений, сжатие видео и медицинская визуализация.

5. Эффективная обработка больших данных

Экспоненциальный рост данных в последние годы создал значительные проблемы для алгоритмов обработки сигналов.В частотной области обработка крупномасштабных наборов данных требует эффективных алгоритмов, которые могут справиться с вычислительными требованиями.Будущие тенденции в обработке частотной области будут сосредоточены на разработке масштабируемых и параллелизируемых алгоритмов, которые могут эффективно обрабатывать большие данные.Эти достижения позволят анализировать массовые наборы данных в реальном времени, открывая новые возможности в таких областях, как телекоммуникации, финансы и здравоохранение.

6. Тематическое исследование: обработка частотной области в беспроводной связи

Чтобы проиллюстрировать практическое влияние этих будущих тенденций, давайте рассмотрим тематическое исследование в области беспроводной связи.В этом сценарии обработка частотной области играет решающую роль в смягчении помех и улучшении качества беспроводных сигналов.Применяя методы адаптивной фильтрации, обнаружение интерференции с AI, и многомерную обработку сигналов, системы беспроводной связи могут достигать более высоких скоростей передачи данных, повышения спектральной эффективности и повышения общей производительности.

7. Советы по будущему успеху

Поскольку обработка частотной области продолжает развиваться, важно оставаться в курсе последних достижений и тенденций в этой области.Вот несколько советов по обеспечению будущего успеха:

Оставайтесь в курсе: следуйте исследовательским документам, посещайте конференции и взаимодействуйте с сообществом обработки частотной области, чтобы быть в курсе последних событий.

Охватите машинное обучение и ИИ: ознакомьтесь с методами машинного обучения и ИИ, поскольку они будут играть жизненно важную роль в будущем обработки частотной области.

Исследуйте многомерные сигналы: экспериментируйте с методами многомерной обработки сигналов, чтобы расширить ваши возможности и изучить новые приложения.

Инвестируйте в вычислительные ресурсы. Поскольку большие данные становятся более распространенными, убедитесь, что у вас есть доступ к достаточным вычислительным ресурсам для эффективного решения требований обработки.

Будущее обработки частотной области обладает огромным потенциалом для достижения в различных областях.Интегрируя машинное обучение, адаптивную фильтрацию и многомерную обработку сигналов, мы можем ожидать повышения производительности, повышения эффективности и захватывающих новых приложений.Поскольку технология продолжает развиваться, оставаться в курсе этих будущих тенденций станет ключом к успеху в навигации по частотной области.

Будущие тенденции в обработке частотной области - Навигация по частотной области: FFCS для продвинутой обработки

Будущие тенденции в обработке частотной области — Навигация по частотной области: FFCS для продвинутой обработки

9. Использовать силу FFC для продвинутой обработки

5. Сила FFC для передовой обработки не может быть переоценена.На протяжении всей этой серии блогов мы изучали концепцию систем вычислительных систем с частотой (FFCS) и то, как они могут революционизировать способ обрабатывания данных.От их способности адаптироваться к различным частотам к их потенциалу для энергоэффективности, FFCS оказался переосмыслением игры в области передовой обработки.В этом заключительном разделе мы суммируем ключевые выводы и выделим практические применения FFC.

6. Одним из наиболее значительных преимуществ FFC является его адаптивность к различным частотам.Традиционные вычислительные системы предназначены для работы на фиксированной частоте, что ограничивает их производительность в динамических средах.FFCS, с другой стороны, может скорректировать свою частоту на основе требований рабочей нагрузки, что позволяет обеспечить оптимальную эффективность обработки.Например, в сценариях, где требуется высокочастотная операция, например, обработка видео в реальном времени, FFC могут увеличить свою частоту для обеспечения необходимой производительности.И наоборот, в периоды низкой рабочей нагрузки FFCS может снизить свою частоту, чтобы сохранить энергию, не жертвуя возможностями обработки.

7. Экономическая эффективность является еще одним важным аспектом FFC.Динамически корректируя их частоту, FFCS может оптимизировать энергопотребление на основе требований рабочей нагрузки.Эта возможность особенно ценна в приложениях, в которых ограничения питания являются проблемами, такими как мобильные устройства или устройства Интернета вещей (IoT).Например, в тематическом исследовании, проведенном исследователями из Стэнфордского университета, FFCS был реализован в носимых устройствах, что привело к снижению энергопотребления на 30% по сравнению с традиционными системами фиксированной частоты.Эта экономия энергии не только продлевает срок службы батареи устройства, но и снижает воздействие на окружающую среду, связанное с потреблением энергии.

8. Гибкость FFCS также открывает возможности для консолидации рабочей нагрузки и распределения ресурсов.В многозадачной среде FFCS может эффективно выделять ресурсы на различные приложения на основе их конкретных потребностей.Например, в облачных вычислительных средах,

Использовать силу FFC для продвинутой обработки - Навигация по частотной области: FFCS для продвинутой обработки

Использовать силу FFC для продвинутой обработки — Навигация по частотной области: FFCS для продвинутой обработки

Этот блог автоматически переводится с помощью нашего сервиса искусственного интеллекта. Приносим извинения за возможные ошибки перевода. Оригинал статьи на английском языке можно найти здесь:
Navigating the Frequency Domain FFCS for Advanced Processing

Загадки быстрого преобразования Фурье

Алгоритм быстрого преобразования Фурье (БПФ) — важный инструмент для анализа и обработки сигналов различной природы.

Он позволяет реконструировать амплитудный и фазовый спектры сигнала в частотной области представления по его амплитудным отсчётам во временной, при этом метод вычислительно оптимизированный при скромном расходе памяти.

Хотя в процессе преобразования никакая информация о сигнале не утрачивается (вычисления обратимы до округлений) алгоритму присущи некоторые особенности:

  1. разрешающая способность, своего рода, «дискретная пикселизация» наподобие гистограммы
  2. эффект спектральной утечки, обуславливающий характерное растекание информации по столбикам гистограммы для тех гармоник сигнала, частота которых не попадает весьма точно на деления дискретной частотной решётки

Эти факторы затрудняют высокоточный анализ и тонкую обработку результатов в дальнейшем.

Рисунок 1: частота гармоники C 5 (516.88 Гц) близка к одному из делений дискретной частотной решётки, что проявляется чётким пиком, напротив частота гармоники G 6 (1594.46 Гц) находится между двумя делениями дискретной решётки, что вызывает ярко выраженный эффект спектральной утечки

В статье представлен действенный способ преодоления таких «неудобных» особенностей алгоритма.

Материалы снабжены иллюстрациями, однако для более глубокого погружения в тему рекомендуется скачать десктоп-приложение Solfeggio для высокоточной обработки и визуализации сигналов. С его помощью можно в деталях рассмотреть сигнал и «прощупать» его спектры на различных уровнях масштаба: от общей картинки вплоть до отдельных дискретных отсчётов.

ВАЖНО! Программа и алгоритмические наработки бесплатны для учебного и некоммерческого использования, однако есть ряд важных ограничений на области применения. Пожалуйста, перед внедрением представленных наработок в какие-либо проекты внимательно прочтите небольшое соглашение.

Именно в процессе создания Solfeggio были выявлены закономерности, которые в результате привели к разработке алгоритма фазово-амплитудной интерполяции для быстрого преобразования фурье (ФАИ для БПФ). При этом были сформулированы нерешённые задачи.

Теперь кратко пройдёмся по основным этапам и положениям теории обработки сигналов:

Рисунок 2

  1. приёмник (микрофон или иной датчик) улавливает аналоговый сигнал и преобразует его в эквивалентные колебания напряжения электрического тока
  2. аналогово-цифровой преобразователь (АЦП) с заданной частотой (то есть через равные интервалы времени) измеряет уровень напряжения входного сигнала и формирует массив (кадр) его временнЫх дискретных отсчётов, квантованных по уровню амплитуды
  1. затем на основе сформированного кадра выполняется вычисление прямого БПФ, в результате которого на выходе получается массив спектральных данных, который даёт некоторое представление о гармониках исходного аналогового сигнала (амплитудах и фазах доминирующих частот), что с определённой погрешностью позволяет реконструировать свойства исходного аналогового сигнала (см. рис. 1)

Как упоминалось ранее, поскольку спектральное представление является дискретным, а не аналоговым, ему присуща разрешающая способность, своего рода, пикселизация наподобие столбиков гистограммы, а также может наблюдаться спектральная утечка, которая обуславливает характерное растекание информации о гармониках сигнала, частота которых не попадает довольно точно в деления дискретной частотной решётки. Эти явления на практике затрудняют последующую реконструкцию и анализ исходных сигналов.

Важно отметить, что применение обратного БПФ к полученному массиву спектральных данных позволяет однозначно восстановить исходный дискретный сигнал во временной области (с точностью до округлений), что указывает на то, что в процессе преобразования никакая информация из сигнала не утрачивается. Это означает, что вычисления обратимы.

В свою очередь согласно теореме Найквиста-ШеннонаКотельникова аналоговый сигнал может быть однозначно и без искажений восстановлен по своим дискретным временным отсчётам, когда частота дискретизации как минимум в два раза превышает частоту наиболее высокочастотной гармоники сигнала. Это наводит на мысль, что, интерполировав дискретный сигнал во временной области (обратно превратив в аналоговый) и повысив частоту дискретизации (повторно передискретизировав), можно достичь более высокого разрешения в фазо-частотной области представления за счёт увеличения вычислительной сложности и повышения потребления памяти. Этот подход применим, однако не всегда удобен на практике.

Но раз возможна интерполяция сигнала во временной области представления, может быть, существует какой-то метод интерполяции в частотной? Хотя на момент написания статьи математического обоснования этой гипотезе нет, экспериментальные данные указывают на то, что для малозашумленных сигналов подобный подход существует, и для многих распространённых практических ситуаций даёт он весьма точные и надёжные результаты.

Хотя точность метода высока, однако и ему присуща некоторая погрешность. Возможно, эту погрешность можно снизить, уточнив формулы. Вопрос также остаётся открытым.

Метод интерполяции интуитивен и на удивление вычислительно прост. Он был экспериментально обнаружен во время разработки программы-инструмента Solfeggio для высокоточного спектрального анализа.

Итак, сначала рассмотрим классический алгоритм быстрого преобразования Фурье на языке C#. Ниже представлены две модификации операции «бабочка» (с прореживанием по времени и по частоте), которые различаются порядком и структурой циклов, но в итоге ведут к одному результату

 private static void DecimationInFrequency(ref Complex[] sample, bool direct) < if (sample.Length < 2) return; var length = sample.Length / 2; // sample.Length >> 1 var sampleA = new Complex[length]; var sampleB = new Complex[length]; var abs = (Pi.Single / length).InvertSign(direct); var rotorBase = new Complex(Cos(abs), Sin(abs)); var rotor = Complex.One; // rotor = rotorBase.Pow(0) for (int i = 0, j = length; i < length; i++, j++) < var a = sample[i]; var b = sample[j]; sampleA[i] = a + b; sampleB[i] = (a - b) * rotor; rotor *= rotorBase; // rotor = rotorBase.Pow(i + 1) >DecimationInFrequency(ref sampleA, direct); DecimationInFrequency(ref sampleB, direct); for (int i = 0, j = 0; i < length; i++) // j += 2 < sample[j++] = sampleA[i]; sample[j++] = sampleB[i]; >> 
 private static void DecimationInTime(ref Complex[] sample, bool direct) < if (sample.Length < 2) return; var length = sample.Length / 2; // sample.Length >> 1 var sampleA = new Complex[length]; var sampleB = new Complex[length]; var abs = (Pi.Single / length).InvertSign(direct); var rotorBase = new Complex(Cos(abs), Sin(abs)); var rotor = Complex.One; // rotor = rotorBase.Pow(0) for (int i = 0, j = 0; i < length; i++) // j+=2 < sampleA[i] = sample[j++]; sampleB[i] = sample[j++]; >DecimationInTime(ref sampleA, direct); DecimationInTime(ref sampleB, direct); for (int i = 0, j = length; i < length; i++, j++) < var a = sampleA[i]; var b = sampleB[i] * rotor; sample[i] = a + b; sample[j] = a - b; rotor *= rotorBase; // rotor = rotorBase.Pow(i + 1) >> 

Нормализация значений после операции «бабочка» выполняется следующим образом

 public static partial class Butterfly < public static Complex[] Transform(this IEnumerablesample, bool direct, bool inTime = false) < var workSample = sample.ToArray(); if (inTime) DecimationInTime(ref workSample, direct); else DecimationInFrequency(ref workSample, direct); double factor = direct ? workSample.Length / 2 : 2; for (var i = 0; i < workSample.Length; i++) workSample[i] /= factor; return workSample; >> 

Метод фазово-амплитудной интерполяции (ФАИ)

Теперь рассмотрим метод фазово-амплитудной интерполяции (ФАИ).

Рисунок 3: упрощенно, суть алгоритма ФАИ состоит в поиске вершин с обрезанными пиками на амплитудном спектре в сочетании с характерными скачками на фазовом для дальнейшей реконструкции пиков по определённым формулам

public static IEnumerable Interpolate(this IList spectrum, List resonances = default) < resonances?.Clear(); var count = spectrum.Count / 2 - 4; for (var i = 0; i < count; i++) < /* Frequency (F); Magnitude (M); Phase (P); */ spectrum[i + 0].Deconstruct(out var aF, out var aM, out var aP); spectrum[i + 1].Deconstruct(out var bF, out var bM, out var bP); spectrum[i + 2].Deconstruct(out var cF, out var cM, out var cP); spectrum[i + 3].Deconstruct(out var dF, out var dM, out var dP); double GetPeakProbabilityByPhase() =>Math.Abs(cP - bP) / Pi.Single; double GetPeakProbabilityByMagnitude() < var bcM = (bM + cM) - (aM + dM) / Pi.Half; return (aM < bcM && bcM >dM) && (bM * 0.95 < bcM && bcM >cM * 0.95) ? 0.95 : 0.05; > var peakProbabilityByPhase = GetPeakProbabilityByPhase(); var peakProbabilityByMagnitude = GetPeakProbabilityByMagnitude(); var peakProbability = peakProbabilityByPhase * peakProbabilityByMagnitude; if (peakProbabilityByMagnitude > 0.5 && peakProbabilityByPhase < 0.5) resonances?.Add(i); if (peakProbability >0.5) < /* var halfStepF = (cF - bF) / 2; var bcMiddleF = (bF + cF) / 2; var bcOffsetScale = (cM - bM) / (cM + bM); var bcF = bcMiddleF + bcOffsetScale * halfStepF; */ var bcF = (bF * bM + cF * cM) / (bM + cM); var bcM = (bM + cM) - (aM + dM) / Pi.Half; var bcP = bP + (bcF - bF) * (cP - bP) / (cF - bF); /* y(x) = y0 + ( x - x0) * (y1 - y0) / (x1 - x0) */ var abF = aF + (bcF - bF); var abM = aM; var abP = aP; var dcF = dF + (bcF - cF); var dcM = dM; var dcP = dP; yield return new(in abF, in abM, in abP); yield return new(in bcF, in bcM, in bcP); yield return new(in dcF, in dcM, in dcP); i += 3; >else < yield return new(in aF, in aM, in aP); >> > 

Точное определение частоты, амплитуды и фазы гармоник сигнала

Ключевыми являются три строчки

 var bcF = (bF * bM + cF * cM) / (bM + cM); var bcM = (bM + cM) - (aM + dM) / Pi.Half; var bcP = bP + (bcF - bF) * (cP - bP) / (cF - bF); /* y(x) = y0 + ( x - x0) * (y1 - y0) / (x1 - x0) */ 

Именно по этим формулам с довольно высокой точностью вычисляется частота, амплитуда и фаза размытой по спектру гармоники. Первая и треться формулы для частоты и фазы выведены интуитивно, вторая для амплитуды подобрана экспериментальным путём. На момент написания статьи строго математического обоснования этим формулам не найдено.

Примечательно, что представленные формулы наилучшим образом работают для прямоугольного окна, то есть не требуют дополнительной предобработки дискретного кадра. Применение каких-либо других оконных функций лишь снижает их точность.

Наличие нескольких близлежащих гармоник в спектре может вносить дополнительные искажения в точность интерполяции, но для отдалённых друг от друга гармоник погрешности снижаются к минимуму.

Из каких наблюдений получены формулы?

Рассмотрим амплитудный и фазовый спектры единичной гармоники при попадании частоты на деление дискретной решётки, а также в разные части интервала между двумя близлежащими делениями.

Частоту i-того деления решётки можно рассчитать по следующей формуле

 var binToFrequency = sampleRate / frameSize; var binFrequency = i * binToFrequency;

Рисунок 4: сдвиг гармоники от 516.08 до 566.08 Гц с шагом в 10 Гц

При попадании гармоники в деление решётки на амплитудном спектре наблюдается чёткий пик, а эффект спектрального размытия отсутствует, значёния амплитуд на остальных делениях близки к нулевым. Значение фазы также определяются с высокой точностью, однако на фазовом спектре начинают наблюдаться резкие фазовые скачки.

При лёгком сдвиге частоты в интервал между двумя делениями решётки на амплитудном спектре начинает проявляться эффект утечки и характерный срез пика у гармоники, который достигает своего максимума на средине интервала. При этом интересная картина наблюдается на фазовом спектре: значение фазы гармоники теперь лежит на прямой, которая соединяет значения на двух близлежащих делениях решётки, а остальная часть фазового спектра образует гладкие кривые.

Рисунок 5: сдвиг с рисунка 4 в более детальном представлении

Внимательное рассмотрение процесса сдвига раскрывает следующую закономерность

 var halfStepF = (cF - bF) / 2; var bcMiddleF = (bF + cF) / 2; var bcOffsetScale = (cM - bM) / (cM + bM); var bcF = bcMiddleF + bcOffsetScale * halfStepF; 

Выполнение подстановок и преобразований с упрощениями приводит к следующим выражениям для расчёта точной частоты гармоники и её фазы

 var bcF = (bF * bM + cF * cM) / (bM + cM); var bcP = bP + (bcF - bF) * (cP - bP) / (cF - bF); /* y(x) = y0 + ( x - x0) * (y1 - y0) / (x1 - x0) */

Значение амплитуды угадать немного сложнее, но с достаточно высокой точность оно описывается выражением

 var bcM = (bM + cM) - (aM + dM) / Pi.Half;

Необходимо упомянуть методы выявления размытых пиков в сигнале для их дальнейшей интерполяции. Существует два характерных признака по которым можно определить кандидата: срезанный пик на амплитудном спектре и скачок на фазовом. Но более надёжным является комбинированный вероятностный подход.

 double GetPeakProbabilityByPhase() => Math.Abs(cP - bP) / Pi.Single; double GetPeakProbabilityByMagnitude() < var bcM = (bM + cM) - (aM + dM) / Pi.Half; return (aM < bcM && bcM >dM) && (bM * 0.95 < bcM && bcM >cM * 0.95) ? 0.95 : 0.05; > var peakProbabilityByPhase = GetPeakProbabilityByPhase(); var peakProbabilityByMagnitude = GetPeakProbabilityByMagnitude(); var peakProbability = peakProbabilityByPhase * peakProbabilityByMagnitude; if (peakProbabilityByMagnitude > 0.5 && peakProbabilityByPhase < 0.5) resonances?.Add(i); if (peakProbability >0.5)

Выявление резонансов

Следует отметить, что характерные амплитудные срезы могут также возникать при резонансах, когда две или более значимые гармоники лежат в одном или близлежащих интервалах дискретной решётки, но в таком случае на фазовом спектре начинает возникать эффект слияния двух скачков, что позволяет отличить резонанс от явления спектральной утечки.

В общем случае резонирующими являются две любые гармоники, просто характерный эффект биений начинает становится наиболее заметным, когда их частоты достаточно близки.

Рисунок 6: резонансные биения

Интересное наблюдение: резонанс очень напоминает амплитудную модуляцию низкочастотного сигнала высокочастотным, например, резонанс 440 и 444 герц похож на 4 герцевый сигнал (или частоты такого порядка), модулированной частотой примерно в 442 герца. Данное предположение требует исследования, уточнений и дальнейшей проверки.

На заключительном этапе, после выполнения ФАИ, из спектральных данных легко выделить чистые гармонические составляющие, которые уже имеют не попиксельное, а растровое представление (частота/амплитуда/фаза).

 public static IEnumerable EnumeratePeaks(this IList spectrum, double silenceThreshold = 0.01) < var count = spectrum.Count - 3; for (var i = 0; i < count; i++) < spectrum[i + 0].Deconstruct(out var aF, out var aM, out var aP); spectrum[i + 1].Deconstruct(out var bF, out var bM, out var bP); spectrum[i + 2].Deconstruct(out var cF, out var cM, out var cP); if ((aM + cM) * 0.25d < bM && aM < bM && bM >cM && bM > silenceThreshold) yield return spectrum[i + 1]; > >

Метод позволяет выявить набор наиболее выраженных гармоник исходного сигнала, после чего их легко представить в виде комплексных чисел либо косинусоид для дальнейшей высокоточной обработки с помощью базовых математических операций.

В некоторых случаях это обеспечивает ощутимое информационное сжатие сигналов за счёт потери малозначимых и шумовых гармоник, благодаря чему можно производить дальнейшие вычисления и преобразования более компактно и оптимально, чем при работе с исходными растровыми массивами.

Метод фазово-амплитудной интерполяции открывает новые возможности в области обработки и сжатия сигналов, поскольку позволяет из дискретно-растрового представления сигнала выделить с высокой точностью его аналого-векторную информационную составляющую.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *