Dzień dobry. W swojej pracy licencjackiej mam zrobić transformate Fouriera funkcji x(n) = sin(0.1n) + 1.5*sin(0.5n) + 1.25*sin(0.7n) n ∈ {0, 1, ..., 70}.Na początku zabrałam się za to ręcznie , jednak nie jest orłem programowania, później znalazłam kod na internecie. Wyszedł z niego dobry wykres, jednak mojemu wykładowcy nie odpowiada liczba próbek. Powiedział, że częstotliwość ma być 1/10, a n = {0,1,...,70}., a t = np.arange(0,70,ts) powinno zwracać 70 próbek ,a nie 700. Próbowałam przerobić ten wykres jednak wtedy wartości na wykresie mi się psuły. W jaki sposób mogłabym to przerobić ? Dziękuję za każde odpowiedzi.
# sampling rate
s = 10
# sampling interval
ts = 1/10
t = np.arange(0,70,ts)
x = np.sin(2*np.pi*0.1*t) + 1.5*np.sin(2*np.pi*0.5*t) + 1.25*np.sin(2*np.pi*0.7*t)
X=fftpack.fft(x)
# calculate the frequency
N = len(X)
n = np.arange(N)
T = N/s
freq = n/T
# Get the one-sided specturm
n_oneside = N//2
# get the one side frequency
f_oneside = freq[:n_oneside]
# normalize the amplitude
X_oneside =X[:n_oneside]/n_oneside
X_oneside = X_oneside[0:70]
f_oneside=f_oneside[0:70]
plt.stem(f_oneside, abs(X_oneside), 'b', \
markerfmt=" ", basefmt="-b")
plt.xlabel('Freq (Hz)')
plt.ylabel('Normalized FFT Amplitude |X(freq)|')
plt.tight_layout()
plt.show()