Transformacja FFT

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Transformacja FFT

Post 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 :/.
Załączniki
mój VI
mój VI
RS232.vi
mój VI
(63.89 KiB) Pobrany 309 razy
FFT and Inverse FFT.vi
FFT and Inverse FFT
(48.2 KiB) Pobrany 356 razy
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

Re: Transformacja FFT

Post 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.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Transformacja FFT

Post 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?
ObrazekObrazekObrazekObrazek
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Transformacja FFT

Post autor: teslabox »

W skrócie: taką analizę
pomiar.vi
(18.74 KiB) Pobrany 411 razy
potrzebuję zastosować do swojego VIa.
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Transformacja FFT

Post autor: PiDi »

To nic nie wnosi, bo nadal nie wiem, gdzie leży problem. Pokaż, co konkretnie nie działa.
ObrazekObrazekObrazekObrazek
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Transformacja FFT

Post 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...).
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Transformacja FFT

Post 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.
ObrazekObrazekObrazekObrazek
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Transformacja FFT

Post autor: teslabox »

Efekt jest dziwny.. 0_o:
PtbyPt.jpg
Wykres powinien wskazywać przynajmniej okolice 10 Hz...?
Załączniki
VI.jpg
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Transformacja FFT

Post 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".
ObrazekObrazekObrazekObrazek
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Transformacja FFT

Post 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
Załączniki
RS232.vi
(61.79 KiB) Pobrany 277 razy
Hruodberaht
Posty: 15
Rejestracja: 17 mar 2009 19:50
Wersja środowiska: LabVIEW 2010
Kontakt:

Re: Transformacja FFT

Post 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.
CLAD + fotonika (czujniki światłowodowe)
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Transformacja FFT

Post 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ł?
ObrazekObrazekObrazekObrazek
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Transformacja FFT

Post 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.
Załączniki
RS232.vi
(64.17 KiB) Pobrany 309 razy
brak próbek.jpg
sygnał sinus 320 Hz
sygnał sinus 320 Hz
ODPOWIEDZ