Получение нескольких синусоидальных волн с использованием Python с преобразованием Фурье - PullRequest
0 голосов
/ 12 октября 2018

Согласно http://www.thefouriertransform.com/

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

У меня есть несколько сигналов (каждый из них имеет форму256, 64), что я хочу разбить на вспомогательные сигналы и затем использовать эти вспомогательные сигналы для генерации реального сигнала обратно.Я делаю это прямо сейчас так: -

#getting data
with open('../f', 'rb') as fp:
    f=pickle.load(fp)

from scipy.fftpack import fft, dct

f=f[0]

tf=fft(f)

x=np.reshape(np.abs(tf),(256,64))

plt.plot(x)

plt.show()

print(x.shape)    #same shape as f

Но я получаю выходные данные в той же форме, что и в реальном сигнале, но с некоторыми мнимыми значениями, которые в конечном итоге отбрасываются.Я рассмотрел другие вопросы Фурье, но ни один из них не дал удовлетворительного результата, они просто преобразовали входной сигнал.Что я делаю неправильно?Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 13 октября 2018

Чтобы увидеть синусоидальные компоненты, вам нужно построить синусоидальные волны.

x = a * sin(t) 

не является измененным результатом БПФ.

Если вас не волнует фаза, количество синусоидальных участков будет вдвое меньше длины вашего БПФ + 1, каждая из которых равна синусоидечастота, вычисленная из центра бина каждого элемента результата БПФ (индексная частота дискретизации, деленная на длину), и ее амплитуда, заданная abs () бина БПФ.

...