• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Transformata Fouriera sinusów

Object Storage Arubacloud
0 głosów
219 wizyt
pytanie zadane 10 czerwca 2021 w Python przez Michasiaa19 Nowicjusz (120 p.)
zamknięte 11 czerwca 2021 przez Michasiaa19

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()

 

komentarz zamknięcia: Rozstrzygnięty problem.

1 odpowiedź

+1 głos
odpowiedź 10 czerwca 2021 przez Wiciorny Ekspert (269,710 p.)
ts = 1/10
t = np.arange(0,70,ts)

zwraca 700 próbek gdyż ts- 1/10 czyli 0.1 - ostatnie to liczba kroków czyli od 0,70 dla kazdego przejscia masz 10 razy bo przechodzi po 0.1 :) 

freq = n/T
n- akurat jest zbyt duże więc majac 
s=10 możesz też

freq = 1/s ; 

tak definiujesz częstotliwosć z tego co rozumiem ma być stała : 
freq = 1/10

Podobne pytania

0 głosów
0 odpowiedzi 815 wizyt
+1 głos
1 odpowiedź 516 wizyt
pytanie zadane 18 kwietnia 2021 w C# przez Avernis Nałogowiec (27,400 p.)

92,565 zapytań

141,416 odpowiedzi

319,597 komentarzy

61,948 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...