|
Эффект размазыванияЧто такое эффект размазывания.В предыдущей главе мы рассматривали ситуацию, когда период колебания равнялся целому числу m от периода дискретизации 1/T. Теперь рассмотрим ситуацию, когда это не так. Положим, что частота равна не m, а m+q, где 0 < q < 1. Воспользуемся формулой (6) из предыдущей главы. Поскольку первые несколько условий для нецелого m+q не выполняются, то остается последняя, самая сложная формула, помеченная словами "Для остальных k":
Подставим в эту формулу m+q вместо m и выполним упрощения, воспользовавшись формулой (5) из предыдущей главы и введя обозначение ρ = 2πj.
Итого: , ρ = 2πj (1) Теперь построим график функции, чтобы понять, как она себя ведет. Ниже показана трехмерная поверхность. По горизонтальной оси отложено k, по вертикальной |Xk| и по оси, уходящей вглубь плоскости, отложено q от 0.01 до 0.99.
На рисунке видно два ярко выраженных ребра. Первое из них всегда приходится на k = m и k = m + 1. Второе ребро получается в результате зеркального эффекта. Высота пика наименьшая в окресности q = 0.5. А наибольшая в окрестности q = 1 и q = 0 - то есть при целочисленном m. К сожалению, пик не является единственным ненулевым коэффициентом Фурье. Рядом с ним есть множество меньших, но не нулевых величин. Если при целочисленном m можно наблюдать единственную полоску, то при нецелом m + q эта полоска размазывется.
На рисунке приведена практическая ситуация. Это - ДПФ для звука, содержащегося в обычном WAV-файле. Черный цвет соответствует |Xk|, а синий - Arg(Xk). Исходный сигнал содержал ноту "ля" второй октавы с частотой 440 гц и фазой в 90 градусов. ДПФ было выполнено для N = 1000. Однако частота дискретизации звука в WAV-файле составляла 44100 Гц, так что период дискретизации был равен T = 1000/44100 секунд и m = 440*1000/44100 = 9.97, то есть, не целое. В результате ярко выраженный пик окружают дополнительные ненулевые значения. На следующем рисунке:
показана "хорошая" ситуация, когда частота исходного звука составляла 441 Гц, и m = 441*1000/44100 = 10, то есть целое. Вы видите только один ненулевой отсчет. Вокруг Этот эффект будем называть эффектом размазывания. Вы видите, что он определяет погрешность, с которой можно найти период исходного колебания. Погрешность равна 1/T. При достаточно большом отклонении от целого m эффект может быть очень заметен. Например ниже вы видите ДПФ для сигнала, соответствующего ноте "ля-бемоль":
Точнее можно попытаться определить параметры m, A и φ численными методами. Для поиска φ следует учесть, что изменение A не повлияет на комплексную фазу (аргумент) коэффициентов Xk. В самом деле, мы можем представить коэффициенты в виде: Xk = (A/2)Z(m,&phi)k, где Z(m,&phi)k - комплексное число, не зависящее от действительного числа A, но зависящее от m и φ. Фаза коэффициента: Arg(Xk) = arctg[Im((A/2)Z(m,&phi)k) /
Re((A/2)Z(m,&phi)k)] = - как видите, не зависит от A. Также не зависит от A отношение коэффициентов Xk/Xl = Z(m,&phi)k/Z(m,&phi)l. Это значит, что у нас есть две целевые функции, с помощью которых мы можем найти частоту m/T и фазу φ. Возьмем Xk, максимальное по модулю. Если соседние отсчеты Xk-1 и Xk+1 равны нулю, то у нас нет эффекта размазывания и параметры восстанавливаются так, как описано в предыдущей главе. На самом деле нам придется сравнивать не с нулем, а с некоторым малым числом, поскольку некоторая погрешность при вычислении ДПФ неизбежна. Теперь, когда мы убедились в наличии эффекта размазывания, попробуем найти m и φ после чего восстановим A по формуле: A = |2Xk / Z(m,&phi)k|. Для нахождения m и φ нужно численно решить задачу поиска минимума функции. Для этого найдем два максимальных отсчета Xk и Xk+1. Теперь мы знаем, что искомое m лежит на интервале (k, k+1). Отношение R(m, φ) = Xk/Xk+1 = Z(m,&phi)k/Z(m,&phi)k+1 сильно зависит от m, гораздо слабее зависит от φ, но не зависит от A. Так что мы можем методом последовательных приближений найти m, которое дает наилучшее приближение для R(m, φ). В свою очередь φ сильно влияет на Arg(Z(m,&phi)k). Так что φ будем восстанавливать, добиваясь наилучшего приближения для Arg(Z(m,&phi)k) и/или Arg(Z(m,&phi)k+1). Неплохие результаты дает метод последовательных приближений путем деления отрезка пополам. При этом мы попеременно выполняем приближения то для m, то для φ.
|