logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

FFT dla zadanego sygnału - matlab

agent_00 27 Maj 2006 01:21 11428 12
REKLAMA
  • #1 2667622
    agent_00
    Poziom 2  
    witam,
    mam pytanie, otoz mam sygnal w postaci tekstowej(zamieszczony ponizej) i musze przeprowadzic analize fft w matlabie. moze mi ktos napisac m_plik, ktory to zrobi.... bo ja sie juz chwile z tym robie i nie moge sobie poradzic
    z gory dziekuje :)

    0.0000000e+000 9.8036816e-001 3.9829530e-001 -7.9851375e-001 -7.9518446e-001 3.2408213e-001 9.9877261e-001 4.7597855e-001 -5.2602976e-001 -9.9890200e-001 -6.6809832e-001 6.8138172e-002 7.0437940e-001 9.8709718e-001 9.2638762e-001 6.5498343e-001 3.0807174e-001 -2.6599590e-002 -3.0961739e-001 -5.3301609e-001 -7.0353622e-001 -8.3142581e-001 -9.2412064e-001 -9.8265504e-001 -9.9919760e-001 -9.5540044e-001 -8.2305936e-001 -5.7090688e-001 -1.8324447e-001 3.0604285e-001 7.7367912e-001 9.9955854e-001 7.5680250e-001 2.9710850e-002 -7.7367912e-001 -9.5201774e-001 -1.8324447e-001 8.2101482e-001 8.2305936e-001 -2.9531338e-001 -9.9919760e-001 -1.8544290e-001 9.2412064e-001 5.5563579e-001 -7.0353622e-001 -8.4610511e-001 3.0961739e-001 9.9964617e-001 3.0807174e-001 -7.5564324e-001 -9.2638762e-001 -1.6012231e-001 7.0437940e-001 9.9767589e-001 6.6809832e-001 4.6848650e-002 -5.2602976e-001 -8.7945689e-001 -9.9877261e-001 -9.4602895e-001 -7.9518446e-001 -6.0197657e-001 -3.9829530e-001 -1.9717574e-001 -1.9594349e-015 1.9717574e-001 3.9829530e-001 6.0197657e-001 7.9518446e-001 9.4602895e-001 9.9877261e-001 8.7945689e-001 5.2602976e-001 -4.6848650e-002 -6.6809832e-001 -9.9767589e-001 -7.0437940e-001 1.6012231e-001 9.2638762e-001 7.5564324e-001 -3.0807174e-001 -9.9964617e-001 -3.0961739e-001 8.4610511e-001 7.0353622e-001 -5.5563579e-001 -9.2412064e-001 1.8544290e-001 9.9919760e-001 2.9531338e-001 -8.2305936e-001 -8.2101482e-001 1.8324447e-001 9.5201774e-001 7.7367912e-001 -2.9710850e-002 -7.5680250e-001 -9.9955854e-001 -7.7367912e-001 -3.0604285e-001 1.8324447e-001 5.7090688e-001 8.2305936e-001 9.5540044e-001 9.9919760e-001 9.8265504e-001 9.2412064e-001 8.3142581e-001 7.0353622e-001 5.3301609e-001 3.0961739e-001 2.6599590e-002 -3.0807174e-001 -6.5498343e-001 -9.2638762e-001 -9.8709718e-001 -7.0437940e-001 -6.8138172e-002 6.6809832e-001 9.9890200e-001 5.2602976e-001 -4.7597855e-001 -9.9877261e-001 -3.2408213e-001 7.9518446e-001 7.9851375e-001 -3.9829530e-001 -9.8036816e-001
  • REKLAMA
  • #2 2672059
    pabloWW
    Poziom 12  
    Witam,
    Jak byla czestotliwosc probkowania sygnału?
    Pozdrawiam
  • REKLAMA
  • #3 2672761
    agent_00
    Poziom 2  
    sygnal byl probkowany z czestotliwoscia 128[Hz]... pomoze mi to ktos zrobic? wiem ze to nie jest trudne, ale ja dopiero zaczynam przygode z matlabem i ciezko jest mi sobie z tym poradzic...
  • #5 2690473
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 2691960
    kowales
    Poziom 12  
    x = [0.0000000e+000 9.8036816e-001 3.9829530e-001 -7.9851375e-001 -7.9518446e-001 3.2408213e-001 9.9877261e-001 4.7597855e-001 -5.2602976e-001 -9.9890200e-001 -6.6809832e-001 6.8138172e-002 7.0437940e-001 9.8709718e-001 9.2638762e-001 6.5498343e-001 3.0807174e-001 -2.6599590e-002 -3.0961739e-001 -5.3301609e-001 -7.0353622e-001 -8.3142581e-001 -9.2412064e-001 -9.8265504e-001 -9.9919760e-001 -9.5540044e-001 -8.2305936e-001 -5.7090688e-001 -1.8324447e-001 3.0604285e-001 7.7367912e-001 9.9955854e-001 7.5680250e-001 2.9710850e-002 -7.7367912e-001 -9.5201774e-001 -1.8324447e-001 8.2101482e-001 8.2305936e-001 -2.9531338e-001 -9.9919760e-001 -1.8544290e-001 9.2412064e-001 5.5563579e-001 -7.0353622e-001 -8.4610511e-001 3.0961739e-001 9.9964617e-001 3.0807174e-001 -7.5564324e-001 -9.2638762e-001 -1.6012231e-001 7.0437940e-001 9.9767589e-001 6.6809832e-001 4.6848650e-002 -5.2602976e-001 -8.7945689e-001 -9.9877261e-001 -9.4602895e-001 -7.9518446e-001 -6.0197657e-001 -3.9829530e-001 -1.9717574e-001 -1.9594349e-015 1.9717574e-001 3.9829530e-001 6.0197657e-001 7.9518446e-001 9.4602895e-001 9.9877261e-001 8.7945689e-001 5.2602976e-001 -4.6848650e-002 -6.6809832e-001 -9.9767589e-001 -7.0437940e-001 1.6012231e-001 9.2638762e-001 7.5564324e-001 -3.0807174e-001 -9.9964617e-001 -3.0961739e-001 8.4610511e-001 7.0353622e-001 -5.5563579e-001 -9.2412064e-001 1.8544290e-001 9.9919760e-001 2.9531338e-001 -8.2305936e-001 -8.2101482e-001 1.8324447e-001 9.5201774e-001 7.7367912e-001 -2.9710850e-002 -7.5680250e-001 -9.9955854e-001 -7.7367912e-001 -3.0604285e-001 1.8324447e-001 5.7090688e-001 8.2305936e-001 9.5540044e-001 9.9919760e-001 9.8265504e-001 9.2412064e-001 8.3142581e-001 7.0353622e-001 5.3301609e-001 3.0961739e-001 2.6599590e-002 -3.0807174e-001 -6.5498343e-001 -9.2638762e-001 -9.8709718e-001 -7.0437940e-001 -6.8138172e-002 6.6809832e-001 9.9890200e-001 5.2602976e-001 -4.7597855e-001 -9.9877261e-001 -3.2408213e-001 7.9518446e-001 7.9851375e-001 -3.9829530e-001 -9.8036816e-001];
    y= fft(x);
    plot(abs(y));

    FFT dla zadanego sygnału - matlab

    chyba nic nie pokrecilem. pozdrawiam
  • REKLAMA
  • #7 2694463
    Konto nie istnieje
    Konto nie istnieje  
  • #8 3951854
    Tocki
    Poziom 10  
    A co to dokladnie liczy ? prosze o opis ;]
  • #9 3955397
    tytan_15
    Poziom 2  
    Ja mam pytanie związane z tematem FFT bo nie udało mi się znaleźć nigdzie odpowiedzi na nurtujący mnie problem. W matlabie troszkę pracowałem i akurat z FFT walczyłem. Gdy przerobiłem sygnał podany przez agent_00 swoim algorytmem nie do końca uzyskałem to co kowales. Problem mój polega na tym że w matlabie jako jeden z parametrów polecenia FFT jest długość wektora. Czyli w naszym przypadku ilość próbek. W momencie kiedy ja ten parametr ustawię na inny niż rzeczywista ilość próbek naszego sygnału to albo obetnie część sygnału (mniejsza) lub doda na końcu zera (większa). W momencie kiedy ustawiamy ilość próbek większą zmienia się nieco kształt wykresu wynikowego. ale z tego co obserwowałem na swoich sygnałach (raczej impulsowych) nie miało to istotnego wpływu na odczytaną wynikową częstotliwość głównego impulsu.
    I teraz moje pytanie. Czy można sobie swobodnie zwiększać długość naszego sygnału źródłowego poprzez dodanie do niego zer na końcu bez zakłamań w wynikach uzyskanych po FFT? W sumie jeżeli do naszego sygnału dodaję dodatkowe zera to nie zmieniam charakterystyki czestotliwościowej, a jedyną istotną różnicą będzie zmiana wartości (nie wiem jak to sie fachowo nazywa) na osi Y. Zmiany w przebiegu wykresu po zwiększeniu próbek wskazywały by na dokładniejsze odwzorowanie charakterystyki częstotliwościowej.
    W załącznikach przedstawiam dwa wykresy:
    128 - ilość próbek jako parametr dla FFT 128.
    4096 - zwiększona ilość próbek sygnału wejściowego do 4096 (dodane zera).

    Co Wy na to? Czy ktoś zagłębiał się w FFT?
    Pozdrawiam
  • #10 3960349
    koodłaty
    Poziom 14  
    Odpowiedź brzmi: zależy co chcesz uzyskać. To o czym piszesz należy do podstaw analizy częstotliwościowej i w rzeczywistości jest zwiększeniem rozdzielczości częstotliwościowej. Z praktycznego punktu widzenia właściwa informacja o sygnale pozostaje bez zmian niemniej przebieg widma sygnału staje się czytelniejszy. Ową zależność można wykorzystać w przypadku gdy sygnał poddawany analizie ma długość różną od 2^N - wówczas po uzupełnieniu go odpowiednią ilością zer można korzystać z dobrodziejstw FFT.
  • #11 3992366
    qrdel
    Poziom 28  
    To jest technika tzw. "zero padding".
    Zgodnie z tw. Parsevala nie zmienia całkowitej energii sygnału (bo dodajesz 0), jeśli jeszcze sygnał miał wyzerowaną wartość średnią, to nie dodajesz żadnych częstotliwości niższych od 1/T (T długość rekordu).
    Wynik FFT zawiera pełną informację o transformowanym przebiegu, wynik transformaty przebiegu "przedłuzonego" zawiera więcej liczb, ale są one liniowymi kombinacjami tego pierwszego wyniku — nie zawierają "dodatkowej" informacji, a tylko tę samą przeorganizowaną dla uzyskania większej rozdzielczości.
  • #12 4894122
    tomifi
    Poziom 12  
    Witam,
    to jeszcze trochę dołożę od siebie:)
    otóż klasyczny Fourier liczy się dla nieskończenie rozciągniętego w czasie sygnału $$ \pm\infty$$. Jednak w realizacji praktycznej, musimy uciąć jakoś sygnał, tą operacją jest mnożenie z oknem prostokątnym. W wyniku tej operacji widmo ma kształ funkcji
    $$Sa(x) = \frac{sin(x)}{x}$$
    Jeśli f próbkowania jest wielokrotnością składowych częstotliwościowych tworzących sygnał, wynikiem są prążki przedstawiające "prawdziwe widmo".
    Jeśli nie, czyli sygnał tworzą składowe o częstotliwościach różnych niż składowe widma czyli:
    $$f = \frac{mF}{N}$$
    gdzie m - kolejny prążek, F - częstotliwość próbkowania, N - punktowa transformata
    to występuje przeciak widma ujawniający się przez to, że prążki których częstotliwości niema w sygnale, pokazują się w widmie po FFT.
    Dodanie zer do sygnału, zwiększa rozdzielczość transformaty, ale widmo ma kształt zbliżony do wyżej wspomnianej funkcji Sa(x).
    Efekt ten, eliminuje się stosowaniem różnych okien, np: trójkątnych, Hanninga, Blackmana.
    Na wyniku 4092 - pkt. transformaty widać kształt Sa(x) dokładnie.
    Na marginesie, kreśląc te wykresy, trzeba ustawić rysowanie wykresów jako prążki, nie jako ciągła funkcja.
    Pozdrawiam
  • #13 5971465
    yogi455
    Poziom 12  
    Witam,
    mam małe pytanko do kolegów, orientujecie się może jak wycina się wybrane prążki. Próbuje w Matlabie wyciąc poleceniem filter ale nic mi to nie daje, pokazują mi się tylko dwie kreski nie moge nazwać tego prążkami gdyż zajmują one miejsce na początku i końcu osi częstotliwości. Głowie się już od miesiąca i jakoś mi to nie za bardzo wychodzi. Prosiłbym o pomoc.
REKLAMA