У меня есть данные в виде x-y-z и вы хотите создать спектр мощности вдоль x-y. Вот простой пример, я отправляю, чтобы проверить, где я мог бы идти не так с моим фактическим данным:2d fft numpy/python confusion
import numpy as np
from matplotlib import pyplot as plt
fq = 10; N = 20
x = np.linspace(0,8,N); y = x
space = x[1] -x[0]
xx, yy = np.meshgrid(x,y)
fnc = np.sin(2*np.pi*fq*xx)
ft = np.fft.fft2(fnc)
ft = np.fft.fftshift(ft)
freq_x = np.fft.fftfreq(ft.shape[0], d=space)
freq_y = np.fft.fftfreq(ft.shape[1], d=space)
plt.imshow(
abs(ft),
aspect='auto',
extent=(freq_x.min(),freq_x.max(),freq_y.min(),freq_y.max())
)
plt.figure()
plt.imshow(fnc)
Это приводит к следующим function & frequency цифры с неправильной частотой. Благодарю.
'интерполяции = 'nearest'' сделает ваш результат намного яснее – Eric