alterna ai
ALTERNA AI / ГЛАВА 11 · 04

11.4 Те же данные через частоты

На предыдущей странице: что меняется без переворота окна.

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

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

Та же операция в другом представлении

DFT преобразуетNотсчётов вNкомплексных коэффициентов:

X[k]=∑n=0N−1x[n]e−2πikn/N.X[k]=\sum_{n=0}^{N-1}x[n]e^{-2\pi i kn/N}.

В прямом преобразовании этой главы нет множителя1/N; он используется в обратном. Для отображения magnitude мы отдельно показываем |X[k]|/N. H08 фиксирует знак, нормировку и порядок положительных/отрицательных frequency bins. Прямой алгоритм лаборатории O(N²) — это DFT, не FFT.

Для x=[1,0,−1,0] коэффициенты равны[0,2,0,2]. При периоде4 основная ненулевая пара соответствует частотам±1/4цикла на отсчёт. Число2 в спектре не означает амплитуду2 исходного косинуса: положительная и отрицательная части делят вклад.

Для linear convolution верноY=XH, если обе последовательности дополнить нулями хотя бы доN+K−1. Без достаточного дополнения произведение DFT описывает circular convolution, где хвост заворачивается. Лаборатория вычисляет обе стороны тождества независимо и показывает residual.

Эксперимент. Для h=[.5,.5] частотный отклик H(ω)=.5+.5e^-iω: приω0он1, приωπон0. Это объясняет подавление чередующегося сигнала. Конечное окно наблюдения и непопадание частоты вbin могут создавать leakage; маленькие ненулевые численные остатки также не следует путать с новой физической частотой.

from cmath import exp
from math import pi
x=[1,0,-1,0]
X=[sum(v*exp(-2j*pi*k*n/4) for n,v in enumerate(x)) for k in range(4)]
assert max(abs(a-b) for a,b in zip(X,[0,2,0,2]))<1e-12

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

Без L≥N+K−1 получается circular convolution с заворачиванием.

Двумерное окно изображения. Как этот вопрос продолжает полученный результат?

Python-примеры главы 11 Академическая база →