Не загружая ваш файл данных, я предполагаю, что он содержит более 100 образцов. Если это так, то
np.fft.fft(xn, n=100, axis=0)
отсекает первые 100 выборок и вычисляет БПФ для них. То есть он не вычисляет то же самое, что и ваш код.
Когда я использую xn = np.random.randn(100)
и запускаю ваш код, тогда оба значения Xk
и Xk1
идентичны до 1e-13
или около того,Это означает, что ваш код правильный.
Чтобы вычислить только подмножество k
значений с использованием алгоритма FFT, сначала вычислите полное преобразование, а затем отбросьте значения, которые вам не нужны. Например:
Xk1 = np.fft.fft(xn, axis=0)
Xk1 = np.fft.fftshift(Xk1)
Xk1 = Xk1[(N//2 - 50):(N//2 + 50)]