Я не уверен, сколько вы знаете о преобразовании Фурье, так что простите, если это слишком много фона.
Ваш сигнал не имеет «частоту», но он может рассматриваться как сумма многих частот. Преобразование Фурье скажет вам веса всех частот, которые составляют ваш сигнал. К сожалению, информация может быть потеряна при выборке из аналоговой (с непрерывным временем) в цифровую (с дискретным временем) области. Это накладывает ограничение на информацию, которую мы можем получить о частоте, а именно на то, что максимальный частотный компонент, который мы можем определить, связан с частотой дискретизации ( критерий Найквиста-Шеннона ):
fs > 2B
Где fs
- ваша частота дискретизации (выборки / единица времени, обычно в Гц или что-то в этом роде), а B
- максимальная частота вашего сигнала. Если ваш сигнал на самом деле имеет частоты выше B
, они будут «совмещены» с некоторым значением ниже B
.
Для решения вашей проблемы все, что вам нужно сделать, это:
x = N.array(first_column)
X = F.fft(x)
Теперь X
- это представление вашего напряжения в частотной области. Соответствующая частотная ось покрывает [0, fs)
, основываясь на теореме отсчетов. Итак, что такое fs
? Вам необходимо рассчитать это, посмотрев на число выборок, которые вы поделили на общую длительность вашего дискретизированного сигнала (отметьте здесь свои единицы измерения):
fs = len(second_column) / second_column[-1]
Обратите внимание, что это представление вашего сигнала также (вероятно) будет сложным, то есть каждая частота будет иметь соответствующую амплитуду и фазу.
Надеюсь, это поможет, и, надеюсь, я не охватил кучу вещей, которые вы уже знали.