Strona 1 z 1

Transformacja FFT

: 14 lip 2011 10:29
autor: teslabox
Witam wszystkich Forumowiczów!

Próbuję zrobić transformację FFT do wizualizacji rozkładu mocy widma dźwiękowego (wykres mocy sygnału w funkcji jej częstotliwości) przy użyciu różnych bloczków FFT (jest ich kilka w LV2010), jednakże finalnie nie otrzymuję spodziewanego rezultatu :S. Wspieram się przykładowym VIem "FFT and Inverse FFT" (w załączniku), ale u mnie coś nie idzie tak jak powinno - wykres szaleje... Mój VI też dołączyłem do załączników. Jak poprawnie utworzyć blok funkcjonalny FFT z generacją wykresu?

Dodając coś o co mi chodzi, to jest taki dokument: ftp://ftp.ni.com/pub/devzone/LabVIEW_Sp ... torial.pdf, ale dotyczy chyba znacznie starszej wersji LV od mojej :/.

Re: Transformacja FFT

: 14 lip 2011 11:41
autor: Pitol
Z analizy Twojego VI wynika, że raczej nie pracujesz na systemie czasu rzeczywistego, więc wytłumacz mi dlaczego umieściłeś go w dziale LabVIEW Real-Time?

Temat został przeniesiony, ale na przyszłość polecam pomyśleć chwilę nad odpowiednim działem, zanim stworzysz nowy temat.

Re: Transformacja FFT

: 14 lip 2011 12:24
autor: PiDi
teslabox pisze:wykres szaleje...
Trochę więcej szczegółów?
Ustawienia domyślne w FFT and Inverse FFT.vi, który załączyłeś, są: częstotliwość sygnału 25k, częstotliwość próbkowania 48k, czyli niespełnione twierdzenie Nyquista. O to szaleństwo chodzi?

Re: Transformacja FFT

: 14 lip 2011 13:33
autor: teslabox
W skrócie: taką analizę
pomiar.vi
(18.74 KiB) Pobrany 411 razy
potrzebuję zastosować do swojego VIa.

Re: Transformacja FFT

: 14 lip 2011 13:38
autor: PiDi
To nic nie wnosi, bo nadal nie wiem, gdzie leży problem. Pokaż, co konkretnie nie działa.

Re: Transformacja FFT

: 14 lip 2011 13:48
autor: teslabox
Ok, skupię się nad meritum. Do bloczka "Auto Power Spectrum VI" musi zostać podany sygnał w domenie czasu. W moim VIu mam po prostu kolejne próbki (wartości liczbowe), które tak na marginesie wyświetlane są na wykresie Amplituda vs. Czas. Jak mogę zrobić, aby mój sygnał (po prostu kolejne próbki) występowały w domenie czasu, tak aby można było taki sygnał podpiąć do bloczka "Auto Power Spectrum VI"? To jest aktualnie główny mój problem (może nie jedyny, ale na razie mniejsza o to...).

Re: Transformacja FFT

: 14 lip 2011 14:17
autor: PiDi
W palecie Signal Processing masz bloczki Point by Point. Jest tam też "Auto Power Spectrum VI PtByPt.vi" i jeśli dobrze Cię zrozumiałem, to rozwiązuje problem.

Re: Transformacja FFT

: 14 lip 2011 14:40
autor: teslabox
Efekt jest dziwny.. 0_o:
PtbyPt.jpg
Wykres powinien wskazywać przynajmniej okolice 10 Hz...?

Re: Transformacja FFT

: 14 lip 2011 17:11
autor: PiDi
Podpowiedź:
dt is the sample period of the time-domain signal, usually in seconds. Set dt to 1/fs, where fs is the sampling frequency of the time-domain signal. The default is 1.
"Auto Power Spectrum VI PtByPt.vi".

Re: Transformacja FFT

: 15 lip 2011 08:53
autor: teslabox
Dzięki z podpowiedź PiDi.
Wymieniłem poprzedni bloczek na bloczek "Auto Power Spectrum VI PtByPt.vi" i ustawiłem wartość dt=0,0005 s (5 ms) i sample lenght (długość próbki)=20, co w rezultacie dało częstotliwość próbkowania fs=100 Hz. Zatem stosunek częstotliwości próbkowania fs do częstotliwości mierzonego sygnału sinusoidalnego fsygn. wynosi fs/fsygn.=100/20 = 5 razy i fsygn.<2*fs (twiwerdzenie Nyquista). Niestety coś dalej jest nie tak jak powinno, ponieważ otrzymuję taki wykres:
screen.jpg

Re: Transformacja FFT

: 15 lip 2011 21:54
autor: Hruodberaht
Jak ja liczyłem widmo mocy z sygnału czasowego (nagranego w pliku), to mi bardzo dobrze działało z palety Signal Processing -> Waveform Measurements -> FFT Power Spectrum and PSD.vi . Sprawdź, czy coś pomaga, jak nie, to trzeba się będzie na poważnie zastanowić nad próbkownaniem, oknami, liczbą próbek itd.

Re: Transformacja FFT

: 15 lip 2011 23:46
autor: PiDi
teslabox pisze:Dzięki z podpowiedź PiDi.
Wymieniłem poprzedni bloczek na bloczek "Auto Power Spectrum VI PtByPt.vi" i ustawiłem wartość dt=0,0005 s (5 ms) i sample lenght (długość próbki)=20, co w rezultacie dało częstotliwość próbkowania fs=100 Hz. Zatem stosunek częstotliwości próbkowania fs do częstotliwości mierzonego sygnału sinusoidalnego fsygn. wynosi fs/fsygn.=100/20 = 5 razy i fsygn.<2*fs (twiwerdzenie Nyquista).
Jak?? dt = 0.005 (czyli 5 ms) to jest 200 Hz... Czy Ty w ogóle jesteś pewien, z jaką częstotliwością masz spróbkowany ten sygnał?

Re: Transformacja FFT

: 29 lip 2011 11:08
autor: teslabox
Witam po przerwie!

Udało mi się zrobić rozkład widma sygnału RMS i jego analizę FFT. Mam tylko problem jak najprościej odfiltrować składowa stałą sygnału do analizy FFT, tak aby na wykresie nie był pokazywany prążek nr 0 czy tam nr 1 o bardzo dużej amplitudzie, bo zaciemnia to wykres i właściwe prążki?
Poza tym, czy dobrze myślę: w analizie FFT niezerowy prążek nr 15 oznacza, że:

Kod: Zaznacz cały

fm=(m*fs)/(N/2), 
gdzie: 
fm-częstotliwość prążka nr m [Hz]
m - numer niezerowego prążka
fs - częstotliwość próbkowania [Hz]
N - liczba próbek

i fs = 1/(N*tsa),
gdzie:
fs - częstotliwość próbkowania [Hz]
N - liczba próbek
tsa - czas próbkowania [s]
?

Natomiast jak to ma się w obliczeniach RMS, skoro prążek nr 150 jest nie zerowy, to jak oblicza się jego częstotliwość (bo "na chłopski rozum"to pomnożyć przez 2)?
PiDi pisze:z jaką częstotliwością masz spróbkowany ten sygnał?
fs = 10 kHz

Coś się dzieje dziwnego jeszcze, że od próbki nr 2560 do 2816 (256 próbek) program podaje zawsze wartość próbki nr 2560, co widać na zdjęciu ekranu z programem do wizualizacji napięcia (program w LabVIEW) - "schodek". Czy to może być spowodowane? W załączniku przesyłam swojego VI.