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

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

Код, предоставленный 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();
}

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

1

Решение

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

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

2

Другие решения

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

1

По вопросам рекламы [email protected]