@Roman_Popov
лужу, паяю, линуксом управляю

Как правильно сделать комплексное преобразование Фурье в python?

У меня есть два массива по 1024 значения с двух АЦП (I и Q сигналы). Мне требуется вычислить как частоту сигнала, так и сдвиг фазы между этими каналами. Т.е. сделать комплексное преобразование. Должно получиться примерно так, как на этом рисунке:
6074bb1db724d627681378.png
Я предполагаю использовать NumPy. Но не могу понять как мне надо подготовить массивы для комплексного FFT и какую конкретно функцию из библиотеки использовать для моего случая?
  • Вопрос задан
  • 422 просмотра
Решения вопроса 2
@res2001
Developer, ex-admin
Использовать numpy.fft.fft().
Можно использовать с действительными числами, преобразование все равно будет комплексным.
Если уж сильно хочется чтоб было все комплексное - просто добавьте нулевую мнимую часть к вашим действительным числам. Это можно сделать например сложив ваш действительный массив с 0j.
Ответ написан
import numpy as np

z = np.fft.rfft(InputBuffer)[:2]
# Получаем постоянную состовл. амплитуду первой гарм., фазу первой гарм.
const_component = np.abs(z[0]) / 360
amplitude = np.abs(z[1]) / 180
phaze = np.angle(z[1])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы