Сначала я создаю случайный сигнал с 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 от 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