Частота Найквиста БПФPython

Программы на Python
Anonymous
Частота Найквиста БПФ

Сообщение Anonymous »

Я столкнулся с проблемой БПФ в scipy, и я хотел бы объяснить это на примере.
Сначала я создаю случайный сигнал с N=10 точками данных: >

Код: Выделить всё

import numpy as np
from scipy.fft import fft
random_signal = np.random.rand(10)

Код: Выделить всё

print(random_signal)
дает:

Код: Выделить всё

array([0.51980334, 0.42128469, 0.20434206, 0.89675551, 0.46041547,
0.43427306, 0.53322509, 0.8649269 , 0.40062739, 0.81627666])
Проведение БФТ

Код: Выделить всё

fft_result = fft(random_signal)
и распечатка результатов

Код: Выделить всё

print(fft_result[0])
print(fft_result[1])
print(fft_result[2])
print(fft_result[3])
print(fft_result[4])
print(fft_result[5])
print(fft_result[6])
print(fft_result[7])
print(fft_result[8])
print(fft_result[9])
приводит к

Код: Выделить всё

(5.55193017189147-0j)
(-0.0745776159990815+0.4313745073898074j)
(-0.27110587637589284+0.44049563159973254j)
(0.9459550630790063+0.3482405244581592j)
(-0.11966821916389306-0.027575211471326383j)
(-1.3151034689371879-0j)
(-0.11966821916389306+0.027575211471326383j)
(0.9459550630790063-0.3482405244581592j)
(-0.27110587637589284-0.44049563159973254j)
(-0.0745776159990815-0.4313745073898074j)
Первое значение fft_result[0] соответствует среднему значению входного сигнала, также называемому постоянной составляющей.
Что я сделать сейчас — это принять только значения fft от 0 до N//2-1 или fft_result[0:N/2], поскольку fft_result[5] — это значение в Найквисте частота и бесполезность.
Что касается моей проблемы: у меня получается первая половина (левая часть) fft_result, и я хотел бы провести iFFT. Я могу восстановить правую часть сигнала, но у меня больше нет значения на частоте Найквиста fft_result[5].
Как я могу вычислить это значение или мне просто заменить значение нулем? Моя цель — восстановить выходной сигнал БПФ, чтобы провести iFFT, возвращая исходный сигнал времени. Влияет ли значение Найквиста на результат iFFT?

Подробнее здесь: https://stackoverflow.com/questions/787 ... -frequency

Вернуться в «Python»