Strona 1 z 1

IFFT - synteza sygnału na bazie jego widma

: 06 gru 2011 21:38
autor: garteb
Witam wszystkich,

Pracując nad projektem w którym zastosować muszę odwrotną transformatę Fourriera do syntezy sygnału na bazie jego zmodyfikowanego widma natrafiłem na pewien problem. Żeby przybliżyć zagadnienie podaję opis algorytmu:

1. Wyznaczam widmo częstotliwościowe (Amplituda i Faza)
2. Modyfikuję amplitudy dla interesującej mnie częstotliwości ( w zamieszczonym przykładzie nie ma tego kroku - żeby nie zaciemniać ).
3. Konwertuję widmo do postaci składającej się z części rzeczywistej (Re) i urojonej (Im).
4. Z Re oraz Im tworzę liczbę zespoloną w postaci Re + Im*i.
5. Widmo będące już tablicą liczb zespolonych podaję do funkcji IFFT.
6. Buduję waveforma żeby "odzyskać" pierwotny sygnał.

Problemem jest to, że po zastosowaniu IFFT mam połowę mniej próbek i inną amplitudę. Nie świadczy to jednak o tym, że mam o połowę krótszy sygnał, ale wygląda to tak jakby jego próbkowanie zmniejszyło się o połowę.

Czy ktoś może zajmował się czymś podobnym?
W czym popełniam błąd?

Z góry dzięki za wszelkie rady,
Pozdrawiam

Daję screeny i VI (wymaga Sound & Vibration Toolkit)

Re: IFFT - synteza sygnału na bazie jego widma

: 07 gru 2011 12:33
autor: rivui
Hej

Z tego co na szybko zobaczylem to inaczej budujesz dwa Waveform'y ktore potem porownujesz. Pierwszy budujesz dajac tablice wartosci Y i dt natomiast drugi dajac tylko wartosci Y przez co dt bedzie wartoscia default. Rozwin strukture build waveform i daj te sama wartosc dt. Niestety mam LabView 8.5 w pracy wiec nie moge otworzyc Twojego pliku.

Pozdrawiam

Re: IFFT - synteza sygnału na bazie jego widma

: 07 gru 2011 23:03
autor: smiga
Jak wyciągniesz sobie informację z bloczka SVFA Magnitude and Phase... Spectrum info/spectral info/FFT size to zobaczysz, że masz 2000, składowa rzeczywista i urojona mają po 1000, ich złożenie (Re/Im To Complex) daje też 1000 ... więc to na pewno nie jest problem dt.

IFFT - synteza sygnału na bazie jego widma

: 08 gru 2011 01:06
autor: jogurt_owocowy
garteb pisze:W czym popełniam błąd?
W tym, że bloczek liczący widmo zwraca najwyraźniej nie pełne widmo, a tylko jego dolną połowę (niosącą pełną informację o sygnale, jeśli ten jest rzeczywisty). W istniejącym rozwiązaniu musiałbyś po modyfikacjach w dziedzinie widmowej zrekonstruować pełne symetryczne widmo, "odbijając" je względem częstotliwości Nyquista (i dbając o kilka ważnych szczegółów). Moim zdaniem, lepszym rozwiązaniem jest użycie "surowej" FFT do policzenia pełnego widma, pracy na nim i powrócenie do dziedziny czasu tak, jak to robisz teraz.

Pozdrawiam

Re: IFFT - synteza sygnału na bazie jego widma

: 13 gru 2011 00:38
autor: garteb
Po przeczytaniu porad doszedłem do czegoś co już działa bliżej moich oczekiwań.
Pomogło symetryczne odbicie widma. Nadal jednak miałem problem z wartością amplitud.
Okazało się, że pomogło pomnożenie części Re i Im przez liczbę próbek podzieloną przez 1,41 (pierwiastek z 2).

Kojarzy mi się to z RMS dla przebiegu sinusoidalnego - czy to przemnożenie na czuja ma jakieś poparcie teoretyczne?
(szukałem informacji odnośnie tego jak w praktyce zrealizować krok po kroku syntezę z użyciem IFFT ale nie natknąłem się na coś takiego)

W załączeniu screeny.