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

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

Код, данный RosettaCode, следующий:

// inverse fft (in-place)
void ifft(CArray& x)
{
    // conjugate the complex numbers
    x = x.apply(std::conj);

    // forward fft
    fft( x );

    // conjugate the complex numbers again
    x = x.apply(std::conj);

    // scale the numbers
    x /= x.size();
}

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


person Vincent    schedule 11.05.2015    source источник
comment
Различные сигналы могут иметь один и тот же амплитудный спектр (например, два сегмента синусоиды с разной начальной фазой), но не могут иметь одинаковый полный спектр.   -  person mtrw    schedule 11.05.2015


Ответы (2)


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

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

person Lorenzo Gatti    schedule 11.05.2015
comment
Получение величины объединяет действительную и мнимую части комплексного числа, именно так была закодирована фаза. - person Mark Ransom; 11.05.2015

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

person hotpaw2    schedule 11.05.2015