Mathsoft Mathcad - problem z analizą FFT
Witam .
moze to nie jest problem na to forum ale potrzebuje pomocy z analizą FFT w mathcad. Chodzi o to ze mam przebieg przyspieszenia spróbkowany w dziedzinie czasu z wielkościa 0.002 s . musze znalezc widmo tego syngalu w mathcad wiec uzywam do tego fft a konkretnie cfft , poniewaz moj przebieg ma 12450 punktów . i niby wszysko jest ok dostaje wykres widma czestotliwosci i na osi x umieszczam sobie czestotloiowosc , ktora zgodnie z Nyquistem wynosi 250 Hz.. Problem jest taki ze wynik na osi y jest przeskalowany tzn umieszczając tam wartośc rzeczywista liczby zespolonej dostaje za duze wartosci . czy musze w takim razie podzilic ta wartosc przez sqrt(N) gdzie N to liczba próbek ? i najwazniejsze pytanie - musze wynzaczyc widmo tego sygnalu w pasmach tercjowych i w pasmach o szerokosci 1 Hz . czy musze przed fft obrobic w jakis sposob sygnal wejsciowy ? bo chyba to co otrzymuje przez cfft to nie sa ani pasma tercjowe , ani pasma o szerokosci jednego Hz . czy ktos wie jak to zrobic ? z przykładu który dostalem widze ze wartosci dla pasm o szerokosci tercji sa wieksze niz te otzrymane dla szerokosci 1 Hz . czy musze zastosowac jakies filtry do oborbki sygnalu czy sa na to jakies proste przekszatlcenia ?
[addsig]
moze to nie jest problem na to forum ale potrzebuje pomocy z analizą FFT w mathcad. Chodzi o to ze mam przebieg przyspieszenia spróbkowany w dziedzinie czasu z wielkościa 0.002 s . musze znalezc widmo tego syngalu w mathcad wiec uzywam do tego fft a konkretnie cfft , poniewaz moj przebieg ma 12450 punktów . i niby wszysko jest ok dostaje wykres widma czestotliwosci i na osi x umieszczam sobie czestotloiowosc , ktora zgodnie z Nyquistem wynosi 250 Hz.. Problem jest taki ze wynik na osi y jest przeskalowany tzn umieszczając tam wartośc rzeczywista liczby zespolonej dostaje za duze wartosci . czy musze w takim razie podzilic ta wartosc przez sqrt(N) gdzie N to liczba próbek ? i najwazniejsze pytanie - musze wynzaczyc widmo tego sygnalu w pasmach tercjowych i w pasmach o szerokosci 1 Hz . czy musze przed fft obrobic w jakis sposob sygnal wejsciowy ? bo chyba to co otrzymuje przez cfft to nie sa ani pasma tercjowe , ani pasma o szerokosci jednego Hz . czy ktos wie jak to zrobic ? z przykładu który dostalem widze ze wartosci dla pasm o szerokosci tercji sa wieksze niz te otzrymane dla szerokosci 1 Hz . czy musze zastosowac jakies filtry do oborbki sygnalu czy sa na to jakies proste przekszatlcenia ?
[addsig]
Re: Mathsoft Mathcad - problem z analizą FFT
Przede wszystkim widmo (mocy) sygnału to kwadrat modułu liczby zespolonej.
Mathead nie znam, sprawdź w helpie co dokładnie, co robi cfft, według tej strony trzeba wynik przez coś pomnożyć.
Nie wiem jaka jest najlepsza metoda liczenia widm w określonych pasmach. Na chłopski rozum, jak masz widmo mocy, to zgodnie z zasadą zachowania energii możesz posumować wyniki w pasmach.
Mathead nie znam, sprawdź w helpie co dokładnie, co robi cfft, według tej strony trzeba wynik przez coś pomnożyć.
Nie wiem jaka jest najlepsza metoda liczenia widm w określonych pasmach. Na chłopski rozum, jak masz widmo mocy, to zgodnie z zasadą zachowania energii możesz posumować wyniki w pasmach.
Re: Mathsoft Mathcad - problem z analizą FFT
Z tego co mowi help w mathcadzie cfft jest używane zawsze wtedy kiedy liczba punktow nie jest potega liczby 2 , wiec nadaje sie dla moich 12450 próbek sygnalu chociaz pewnie dalowby sie zagescic alo w jakis sposob dodac punkty tak by nie zmienic wartosci wynikowej widma . jesli chodzi o sam jego wynik nie potrzebuje znac jego mocy .wykres ktory anaizuje to wykres przyspieszenia od czasu . a wiec w wyniku fft chce otrzymac maksymalne wartosci przyspieszenia w konkretnych pasmach i dlatego dziele wartosc przez sqrt(N) ale nie wiem czy jest to prawidlowy sposob . Poza tym nie mam pojecia w jakim pasmie dostaje wytnik . czy to jest pasmo od 0 do 250 Hz ? jak to zorbic zeby wydzielic maksynmalne wartosci w pasmowo ? czy to jest zwiazane z rozdzielczoscia czestotliwosci ktora w tym przypadku wynosi fs/N czyli 0.04 Hz ?slyszalem cos na temat okienkowania i filtrowania ale zupelnie nie wiem jak sie do tego zabrac . moze jest jakis program do analizy ?
[addsig]

[addsig]
Re: Mathsoft Mathcad - problem z analizą FFT
...Z tego co mowi help w mathcadzie cfft jest używane zawsze wtedy kiedy liczba punktow nie jest potega liczby 2 , wiec nadaje sie dla moich 12450 próbek sygnalu chociaz pewnie dalowby sie zagescic alo w jakis sposob dodac punkty tak by nie zmienic wartosci wynikowej widma ...
**********************
Szczerze powiedziawszy do takich rzeczy o niebo lepszy jest MatLab (alternatywna darmowa wersja to SciLab)... chyba ze jestes ograniczony do stosowania MathCada...
W tym pierwszym masz specjalne moduly do analizy widmowej, wykresow itd... tyle ze trzeba miec banie bo to praktycznie wygląda jak język programowania...
A liczbę punktów mozesz zageścić dokonując interpolacji... (w MatLabie mozna okreslić ilość punktów wynikowych)
**********************
Szczerze powiedziawszy do takich rzeczy o niebo lepszy jest MatLab (alternatywna darmowa wersja to SciLab)... chyba ze jestes ograniczony do stosowania MathCada...
W tym pierwszym masz specjalne moduly do analizy widmowej, wykresow itd... tyle ze trzeba miec banie bo to praktycznie wygląda jak język programowania...
A liczbę punktów mozesz zageścić dokonując interpolacji... (w MatLabie mozna okreslić ilość punktów wynikowych)
Re: Mathsoft Mathcad - problem z analizą FFT
Mogę Ci pomóc, ale musisz postarać się pisać bardziej precyzyjnie. W Twoim poście powyżej jest sporo niedomówień, skrótów myślowych i niezrozumiałego żargonu.
Chodzi o to ze mam przebieg przyspieszenia spróbkowany w dziedzinie czasu z wielkościa 0.002 s .
co to znaczy "spróbkowany z wielkością ..." ? Czy 0.002 to odstęp próbkowania (czyli częstotliwość próbkowania wynosi 500Hz) czy też może jest to długość fragmentu poddawanego analizie (wtedy rozdzielczość FFT wynosi 500Hz) ?
musze znalezc widmo tego syngalu w mathcad wiec uzywam do tego fft a konkretnie cfft , poniewaz moj przebieg ma 12450 punktów .
nie wiem jak jest zaimplementowane cfft w Mathcadzie, ale z dużą dozą pewności mogę stwierdzić, że tak jak większość algorytmów FFT, wymaga ono liczby próbek sekwencji będącej potęgą dwójki. W innym przypadku sekwencja uzupełniana jest zerami do większej długości, która jest potęgą dwójki, a to uzupełnieni powoduje, że rozdzielczość analizy (odstęp między kolejnymi punktami w dziedzinie częstotliwości) nie wynosi fs/N (częstotliwość próbkowania przez faktyczną liczbę próbek) tylko fs/L (w mianowniku jest ta liczba próbek po uzupełnieniu zerami).
i niby wszysko jest ok dostaje wykres widma czestotliwosci i na osi x umieszczam sobie czestotloiowosc , ktora zgodnie z Nyquistem wynosi 250 Hz.
domyślam się, że chodzi o to, że na osi odciętych umieszczasz wartości częstotliwości o 0 do 250Hz, oraz symetrycznie od 250Hz w dół do 0, a właściwie do Fs/N.
Problem jest taki ze wynik na osi y jest przeskalowany tzn umieszczając tam wartośc rzeczywista liczby zespolonej dostaje za duze wartosci . czy musze w takim razie podzilic ta wartosc przez sqrt(N) gdzie N to liczba próbek ?
Co to znaczy, że jest przeskalowany? Przeskalowany w stosunku do czego? W definicji przekształcenia FFT (i DFT) w różnych wersjach występuje współczynnik skalujący 1/N, 1/sqrt(N) albo żaden. Każda z tych wersji jest prawidłowa, o ile jest stosowana konsekwentnie. Nieporozumienia biorą się z prób interpretacji wyniku FFT tak samo jak ciągłej transformacji Fouriera. To nie jest to samo. FFT pozwala tylko na estymację widma krótkoterminowego. Pytanie podstawowe: czy przed FFT wymnożyłeś próbki sygnału przez odpowiednią funkcję okna? Jeśli nie, to wynik FFT jest silnie zniekształcony przez splot z funkcją Sinc. Zastosowanie odpowiedniego okna jest konieczne dla uzyskania poprawnej estymaty. W najpopularniejszej wersji FFT (bez żadnego współczynnika przed sumą w transformacji wprost oraz ze współczynnikiem 1/N przy transformacji wspak) amplitudy współczynników otrzymanych z FFT należy przeskalować ale nie dzieląc przez N tylko przez sumę próbek okna, ponieważ okno wprowadza tłumienie na końcu przedziału. Zauważ, że brak okna oznacza okno prostokątne, a suma jego próbek wynosi N.
i najwazniejsze pytanie - musze wynzaczyc widmo tego sygnalu w pasmach tercjowych i w pasmach o szerokosci 1 Hz . czy musze przed fft obrobic w jakis sposob sygnal wejsciowy ? bo chyba to co otrzymuje przez cfft to nie sa ani pasma tercjowe , ani pasma o szerokosci jednego Hz
nie za bardzo wiem, co masz na myśli pisząc "widmo w pasmach tercjowych". Można to wielorako interpretować. Na przykład w rozpoznawaniu dźwięków i mowy stosuje się wyznaczanie energii w pasmach o określonej szerokości i zgodnie z tw. Parsevala ta energia to suma kwadratów modułów współczynników policzona w podzakresach odpowiadających granicom pasm. "Widmo w pasmach" może też oznaczać po prostu estymatę widma podzieloną na podzakresy częstotliwości. Musisz jaśniej napisać, o co chodzi. Nie przypuszczam jednak, żeby była potrzebna jakaś dodatkowa filtracja, bo każdą filtrację można zastąpić przez odpowiednią manipulację wynikami FFT.
Chodzi o to ze mam przebieg przyspieszenia spróbkowany w dziedzinie czasu z wielkościa 0.002 s .
co to znaczy "spróbkowany z wielkością ..." ? Czy 0.002 to odstęp próbkowania (czyli częstotliwość próbkowania wynosi 500Hz) czy też może jest to długość fragmentu poddawanego analizie (wtedy rozdzielczość FFT wynosi 500Hz) ?
musze znalezc widmo tego syngalu w mathcad wiec uzywam do tego fft a konkretnie cfft , poniewaz moj przebieg ma 12450 punktów .
nie wiem jak jest zaimplementowane cfft w Mathcadzie, ale z dużą dozą pewności mogę stwierdzić, że tak jak większość algorytmów FFT, wymaga ono liczby próbek sekwencji będącej potęgą dwójki. W innym przypadku sekwencja uzupełniana jest zerami do większej długości, która jest potęgą dwójki, a to uzupełnieni powoduje, że rozdzielczość analizy (odstęp między kolejnymi punktami w dziedzinie częstotliwości) nie wynosi fs/N (częstotliwość próbkowania przez faktyczną liczbę próbek) tylko fs/L (w mianowniku jest ta liczba próbek po uzupełnieniu zerami).
i niby wszysko jest ok dostaje wykres widma czestotliwosci i na osi x umieszczam sobie czestotloiowosc , ktora zgodnie z Nyquistem wynosi 250 Hz.
domyślam się, że chodzi o to, że na osi odciętych umieszczasz wartości częstotliwości o 0 do 250Hz, oraz symetrycznie od 250Hz w dół do 0, a właściwie do Fs/N.
Problem jest taki ze wynik na osi y jest przeskalowany tzn umieszczając tam wartośc rzeczywista liczby zespolonej dostaje za duze wartosci . czy musze w takim razie podzilic ta wartosc przez sqrt(N) gdzie N to liczba próbek ?
Co to znaczy, że jest przeskalowany? Przeskalowany w stosunku do czego? W definicji przekształcenia FFT (i DFT) w różnych wersjach występuje współczynnik skalujący 1/N, 1/sqrt(N) albo żaden. Każda z tych wersji jest prawidłowa, o ile jest stosowana konsekwentnie. Nieporozumienia biorą się z prób interpretacji wyniku FFT tak samo jak ciągłej transformacji Fouriera. To nie jest to samo. FFT pozwala tylko na estymację widma krótkoterminowego. Pytanie podstawowe: czy przed FFT wymnożyłeś próbki sygnału przez odpowiednią funkcję okna? Jeśli nie, to wynik FFT jest silnie zniekształcony przez splot z funkcją Sinc. Zastosowanie odpowiedniego okna jest konieczne dla uzyskania poprawnej estymaty. W najpopularniejszej wersji FFT (bez żadnego współczynnika przed sumą w transformacji wprost oraz ze współczynnikiem 1/N przy transformacji wspak) amplitudy współczynników otrzymanych z FFT należy przeskalować ale nie dzieląc przez N tylko przez sumę próbek okna, ponieważ okno wprowadza tłumienie na końcu przedziału. Zauważ, że brak okna oznacza okno prostokątne, a suma jego próbek wynosi N.
i najwazniejsze pytanie - musze wynzaczyc widmo tego sygnalu w pasmach tercjowych i w pasmach o szerokosci 1 Hz . czy musze przed fft obrobic w jakis sposob sygnal wejsciowy ? bo chyba to co otrzymuje przez cfft to nie sa ani pasma tercjowe , ani pasma o szerokosci jednego Hz
nie za bardzo wiem, co masz na myśli pisząc "widmo w pasmach tercjowych". Można to wielorako interpretować. Na przykład w rozpoznawaniu dźwięków i mowy stosuje się wyznaczanie energii w pasmach o określonej szerokości i zgodnie z tw. Parsevala ta energia to suma kwadratów modułów współczynników policzona w podzakresach odpowiadających granicom pasm. "Widmo w pasmach" może też oznaczać po prostu estymatę widma podzieloną na podzakresy częstotliwości. Musisz jaśniej napisać, o co chodzi. Nie przypuszczam jednak, żeby była potrzebna jakaś dodatkowa filtracja, bo każdą filtrację można zastąpić przez odpowiednią manipulację wynikami FFT.
Re: Mathsoft Mathcad - problem z analizą FFT
chyba sie raczej nie odwaze na matlaba chociaz wiem ze jest lepszy niz mathcad . spedzilbym nad tym za duzo czasu ale moze istnieje jakas inna alternatywa ? moze jest program który realizuje takie fukncje ....
Re: Mathsoft Mathcad - problem z analizą FFT
I jeszcze jedno ważne stwierdzenie: FFT/DFT jest narzędziem do analizy sygnałów stacjonarnych to znaczy takich, których właściwości statystyczne są stałe. W praktyce to oznacza, że jest silne założenie, że analizowany fragment jest wycinkiem nieskończenie długiego sygnału, który na zewnątrz tego wycinka wygląda tak samo (np. jest cyklicznie powielony). Jeśli to założenie nie jest spełnione to interpretacja wyniku FFT jako wskaźnik obecności drgań o danej częstotliwości jest kompletnie mylna. Na przykład analizowanie jednorazowego impulsu przy pomocy FFT jest bez sensu. Chcąc dowiedzieć się czegoś na temat składowych krótkoterminowych w takim sygnale należy zastosować analizę czasowo-częstotliwościową, na przykład wyznaczyć spektrogram.
Re: Mathsoft Mathcad - problem z analizą FFT
ok MB .postaram sie raz jeszcze napisac o co mi chodzi . Mam sygnal przyspieszenia w funkcji czasu który składa sie z 12450 próbek. w ciagu kazdej sekundy trwania tego sygnalu jest pobrane jego 500 próbek - czyli odstep czasu miedzy koilejnymi probkami wynosi 0.002 sekundy . chcialbym teraz z tego przebiegu otrzymac maksymalne wartości sygnalu wejsciowego czyli przyspieszenia w funkcji czasu w okreslonych zakresach czestotliosci . Zakresy te to tzw . pasma tercjowe okreslone nawet przez polska norme. jest ich 20 i na przykład zaczynajac od pierwszego pasma zakres jego czestotliwosci wynosi od 0.89 do 1.12 Hz przy czestotliwosci sordkowej 1 Hz . kompletnie nie wiem jak wydzielic takie pasmo i jak sie zabrac za to okienkowanie o ktorym troche slyszalem MB wiec jesli jestes w stanie mi pomoc byloby super . jesli chcesz moge ci nawet podeslac plik sygnalu . a tym skalowanie to tak na pale robie bo kmpletnie jestem zielony z teorii analizy sygnalów a potzrebuje tego do pracy mgr...
Re: Mathsoft Mathcad - problem z analizą FFT
aha MB calkowita dlugosc sygnalu 24.892 sek ...
Re: Mathsoft Mathcad - problem z analizą FFT
a tym skalowanie to tak na pale robie bo kmpletnie jestem zielony z teorii analizy sygnalów a potzrebuje tego do pracy mgr......
**********************
Nie zapomnij do bibliografi doadac linka do forum EiS
**********************
Nie zapomnij do bibliografi doadac linka do forum EiS
