Независимо от того, масштабируете ли вы выходные данные вашего ДПФ, прямое или обратное, не имеет ничего общего с соглашением или с тем, что математически удобно. Это имеет все отношение к входу в ДПФ. Позвольте мне показать несколько примеров, когда масштабирование либо требуется, либо не требуется как для прямого, так и для обратного преобразования.
Необходимо масштабировать прямое преобразование на 1 / N.
Прежде всего, должно быть ясно, что для анализа простой синусоидальной волны длина преобразования не должна иметь значения, если говорить математически. Предположим, N = 1024, Freq = 100 и ваш сигнал:
f (n) = cos (Freq * 2 * Pi * n / N)
Если вы возьмете 1024-точечное ДПФ f (n), вы обнаружите, что bin [100] = 512. Но это не имеет смысла, пока вы не масштабируете его до N. 512/1024 = 1/2 и, конечно, другая половина находится в отрицательном спектре в бине [924].
Если вы удвоите длину ДПФ, N = 2048, выходные значения будут вдвое больше, чем у ДПФ с 1024 точками, что опять же делает результаты бессмысленными, если мы не масштабируем на 1 / N. Длина ДПФ не должна быть фактором в этих видах анализа. Таким образом, в этом примере вы должны масштабировать DFT на 1 / N.
Не должен масштабировать прямое преобразование.
Теперь предположим, что у вас есть импульсная характеристика 32-контактного КИХ-фильтра и вы хотите знать его частотную характеристику. Для удобства мы примем фильтр нижних частот с коэффициентом усиления 1. Мы знаем, что для этого фильтра постоянная составляющая ДПФ должна быть равна 1. И должно быть ясно, что это будет иметь место независимо от размера ДПФ, потому что компонент постоянного тока - это просто сумма входных значений (то есть сумма коэффициентов КИХ).
Таким образом, для этого ввода ДПФ не масштабируется на 1 / N, чтобы получить значимый ответ. Вот почему вы можете обнулять импульсный отклик столько, сколько хотите, не влияя на результат преобразования.
В чем принципиальная разница между этими двумя примерами?
Ответ прост. В первом случае мы поставляли энергию для каждой входной выборки. Другими словами, синусоида присутствовала для всех 1024 отсчетов, поэтому нам нужно было увеличить выходной сигнал DFT на 1/1024.
Во втором примере, по определению, мы подавали энергию только на 1 образец (импульс при n = 0). Для прохождения импульса через фильтр 32 отводов потребовалось 32 выборки, но эта задержка не имеет значения. Поскольку мы поставляли энергию для 1 выборки, мы масштабируем выходной сигнал ДПФ на 1. Если импульс был определен с 2 единицами энергии вместо 1, мы бы масштабировали выходной сигнал на 1/2.
Не должен масштабировать обратное преобразование.
Теперь давайте рассмотрим обратный ДПФ. Как и в случае прямого DFT, мы должны учитывать количество образцов, на которые мы поставляем энергию. Конечно, здесь мы должны быть немного более осторожными, потому что мы должны заполнить поля положительных и отрицательных частот соответственно. Однако, если мы поместим импульс (т.е. 1) в два соответствующих бина, тогда результирующий выходной сигнал обратного ДПФ будет представлять собой косинусоидальную волну с амплитудой 2 независимо от того, сколько точек мы используем в обратном ДПФ.
Таким образом, как и в случае прямого DFT, мы не масштабируем выход обратного DFT, если вход является импульсом.
Необходимо масштабировать обратное преобразование.
Теперь рассмотрим случай, когда вы знаете частотную характеристику фильтра нижних частот и хотите выполнить обратное ДПФ, чтобы получить его импульсную характеристику. В этом случае, поскольку мы поставляем энергию во все точки, мы должны масштабировать выход DFT на 1 / N, чтобы получить значимый ответ. Это не так очевидно, потому что входные значения будут сложными, но если вы поработаете с примером, вы увидите, что это правда. Если вы не масштабируете на 1 / N, у вас будут пиковые значения импульсной характеристики порядка N, что не может быть в случае, если усиление равно 1.
Четыре ситуации, которые я только что описал, являются примерами конечной точки, где понятно, как масштабировать вывод DFT. Тем не менее, между конечными точками много серой области. Итак, давайте рассмотрим еще один простой пример.
Предположим, у нас есть следующий сигнал, с N = 1024, Freq = 100:
f(n) = 6 * cos(1*Freq * 2*Pi * n/N) n = 0 - 127
f(n) = 1 * cos(2*Freq * 2*Pi * n/N) n = 128 - 895
f(n) = 6 * cos(4*Freq * 2*Pi * n/N) n = 896 - 1023
Обратите внимание на разницу амплитуды, частоты и длительности для трех компонентов. К сожалению, ДПФ этого сигнала покажет все три компонента с одинаковым уровнем мощности, даже несмотря на то, что 2-й компонент имеет 1/36 уровня мощности двух других.
Тот факт, что все три компонента поставляют одинаковое количество энергии, очевиден, что объясняет результаты DFT, но здесь необходимо сделать важный момент.
Если мы знаем длительность для различных частотных компонентов, то мы можем соответственно масштабировать различные частотные интервалы. В этом случае мы бы сделали это для точного масштабирования вывода DFT: bin [100] / = 128; корзина [200] / = 768; bin [400] / = 128;
Что подводит меня к моей последней точке; в общем, мы не имеем представления, как долго конкретный частотный компонент присутствует на входе в наш DFT, поэтому мы не можем выполнить такое масштабирование. В целом, однако, мы поставляем энергию для каждой точки выборки, поэтому мы должны масштабировать прямое ДПФ на 1 / N при анализе сигнала.
Чтобы усложнить ситуацию, мы почти наверняка применили бы окно к этому сигналу для улучшения спектрального разрешения ДПФ. Поскольку первый и третий частотные компоненты находятся в начале и конце сигнала, они ослабляются на 27 дБ, в то время как центральный компонент ослабляется только на 4 дБ (окно Ханнинга).
Чтобы было ясно, вывод DFT может быть довольно плохим представлением ввода, масштабированным или нет.
В случае обратного ДПФ, который обычно является чисто математической проблемой, в отличие от анализа неизвестного сигнала, вход в ДПФ четко определен, поэтому вы знаете, как масштабировать выход.
При анализе сигнала с помощью анализатора спектра, аналогового или БПФ проблемы аналогичны. Вы не знаете мощность отображаемого сигнала, если не знаете также его рабочий цикл. Но даже тогда, окна, диапазон, скорости развертки, фильтрация, тип детектора и другие факторы - все это влияет на результат.
В конечном счете, вы должны быть очень осторожны при перемещении между временной и частотной областями. Вопрос, который вы задали в отношении масштабирования, важен, поэтому я надеюсь, что дал понять, что вы должны понимать входные данные для DFT, чтобы знать, как масштабировать выходные данные. Если входные данные не определены четко, выходные данные DFT должны рассматриваться с большим скептицизмом, независимо от того, масштабируете ли вы его или нет.