Wypełnienie zerowe w dziedzinie częstotliwości - specjalne traktowanie X [N / 2]

18

Załóżmy, że chcemy interpolować sygnał okresowy z parzystą liczbą próbek (np. N = 8) poprzez wypełnianie zerami w dziedzinie częstotliwości.

Niech DFT X=[A,B,C,D,E,F,G,H]
teraz dopiszmy go do 16 próbek, aby dać Y. Każdy przykład podręcznika i samouczek online, który widziałem, wstawia zera przy dawaniu . (Następnie jest interpolowany sygnał).[Y4...Y11]
Y=[2A,2B,2C,2D,0,0,0,0,0,0,0,0,2E,2F,2G,2H]
y = idft(Y)

Dlaczego nie zamiast tego użyć Y=[2A,2B,2C,2D,E,0,0,0,0,0,0,0,E,2F,2G,2H]?

O ile mogę powiedzieć (moja wiedza matematyczna jest ograniczona):

  • Minimalizuje całkowitą moc
  • Zapewnia, że ​​jeśli xjest wyceniony, to tak samo jesty
  • ynadal przecina się xwe wszystkich punktach próbki, zgodnie z wymaganiami (myślę, że dotyczy to dowolnego pmiejsca Y=[2A,2B,2C,2D,pE,0,0,0,0,0,0,0,(2-p)E,2F,2G,2H])

Dlaczego więc nigdy tak się nie dzieje?


Edycja : xniekoniecznie jest wyceniana w wartościach rzeczywistych lub ograniczona w paśmie.

finnw
źródło
Piszesz „Każdy przykład podręcznika i samouczek online, w których widziałem wstawia zera w ...”. Czy możesz zaktualizować swój post, dodając jakieś odniesienia? Ciekawe, ponieważ piszesz również, że x niekoniecznie musi być wartościowany, a pierwsza wspomniana konstrukcja nie generuje (generalnie) rzeczywistego wyniku przez odwrotne DFT.
niaren
@niaren oto jeden przykład: dspguru.com/dsp/howtos/…
finnw
1
Warto zauważyć, że aby był naprawdę wartościowany, musisz pozwolić (tzn. Kiedy powielasz E dla „ujemnej częstotliwości” połowy wektora w dziedzinie częstotliwości, musisz go skoniugować. Sygnały, które są prawdziwe w dziedzinie czasu, mają sprzężone symetryczne DFT.yY=[2A,2B,2C,2D,E,0,0,0,0,0,0,0,E,2F,2G,2H]
Jason R
1
@Jason R, jeśli sygnał wejściowy ma wartość rzeczywistą, to również E, więc [2A, 2B, 2C, 2D, E, 0,0,0,0,0,0,0,0, E, 2F, 2G, 2H] spełnia ten warunek. Jeśli dane wejściowe nie są wyceniane w czasie rzeczywistym, nie jest konieczne wymuszanie, aby dane wyjściowe były wyceniane w wartościach rzeczywistych.
finnw
Masz rację. To właśnie dostaję za napisanie komentarza zbyt późno wieczorem.
Jason R

Odpowiedzi:

7

Spójrzmy na częstotliwości pojemników w twoim 8-punktowym DFT:

ωA=0,ωB=π/4,ωC=π/2,ωD=3π/4,ωE=π=π (mod 2π),ωF=5π/4=3π/4 (mod 2π),ωG=3π/2=π/2 (mod 2π),ωH=7π/4=π/4 (mod 2π)
Kiedy interpolujesz 2 razy, częstotliwość punktu zmienia się na lub .Eπ+π

Na pierwszy rzut oka nie widzę problemu z twoim podejściem, ponieważ nie jest jasne, czy należy umieścić w koszu skojarzonym z czy .Eππ

Na stronie Juliusza O. Smitha III stwierdza warunek:

Ponadto wymagamy gdy jest parzysty, a nieparzysty nie wymaga takiego ograniczenia.x(N/2)=x(N/2)=0N

A jego przykład dotyczy nieparzystego , co pozwala uniknąć problemu.N


Nie jestem pewien, czy jest to wymagane, ale oto pełne odniesienie do pracy Juliusa:

Smith, JO Mathematics of Discrete Fourier Transform (DFT) with Audio Applications, drugie wydanie, http://ccrma.stanford.edu/~jos/mdft/ , 2007, książka online, dostęp 28 września 2011 r.

Peter K.
źródło
2

Istnieje wiele sposobów interpolacji danych. Moim zdaniem interpolacja oznacza, że ​​„rysujesz” linie między niektórymi punktami danych. Można to zrobić na wiele sposobów. Jednym typem interpolacji, który jest przydatny w DSP (szczególnie w wielorakim DSP), jest „interpolacja pasmowa”. Jeśli google, otrzymasz wiele interesujących i przydatnych trafień. To, co proponujesz, nie jest interpolacją bez ograniczeń. W „upsamplowanym” x masz komponenty częstotliwości nieobecne w oryginalnym x.

Edycja (za długa, aby zmieściła się w komentarzu):

Istnieje dość znacząca różnica między twoją konstrukcją, zaczynając od a przykładem w podanym przez ciebie odnośniku.X=[A,B,C,D,E,F,G,H]

Biorąc pod uwagę prawdziwy wkład

X=[A,B,C,D,E,D,C,B]

Próbkowanie w górę o współczynnik 2 dla wejścia pełnopasmowego. W takim przypadku próbkowanie w górę można wykonać, umieszczając najpierw zera w przeplatanym wejściu (to znaczyx0,0,x1,0,...0π/2π/2π

X2=[A,B,C,D,E,D,C,B,A,B,C,D,E,D,C,B]

π/2

yn=k=x2ksinc(0.5nk)

W praktyce jednak wystąpią pewne zniekształcenia, ponieważ filtr ceglany nie jest realistyczny. Praktyczny filtr może tłumić / usuwać częstotliwości na wejściu lub pozostawić niektóre komponenty częstotliwości na obrazie w sygnale o podwyższonej częstotliwości próbkowania. Lub filtr może kompromis między nimi. Myślę, że twoja konstrukcja w dziedzinie częstotliwości również odzwierciedla ten kompromis. Te dwa przykłady reprezentują dwie różne opcje:

Y=[A,B,C,D,E,0,0,0,0,0,0,0,E,D,C,B]

Y=[A,B,C,D,0,0,0,0,0,0,0,0,0,D,C,B]

Jeśli sygnał wejściowy jest ograniczony pasmem poniżej częstotliwości nyquista, jak w twoim dokumencie, problem znika.

ρ

Y=[A,B,C,D,ρ,0,0,0,0,0,0,0,ρ,D,C,B]

niaren
źródło
1
x
@leftaroundabout Oryginalny x ma pasmo ograniczone (w tym przykładzie do częstotliwości Nyquista). OP chce zwiększyć x dwukrotnie (moja interpretacja). Jednym sposobem na zwiększenie próbki x jest wstawienie zer w odpowiedzi częstotliwościowej, jak pokazano przez OP (przykład bez E, ten pokazany w podręcznikach DSP) i wykonanie odwrotnej FFT. Wierzę, że to samo można było osiągnąć, wstawiając zera (przepleciony) do x i (dolnoprzepustowy) filtr przez sinc. Po wstawieniu E, jak pokazano przez OP, próbkowany w górę x nie jest ograniczony do pierwotnej częstotliwości Nyquista. Zazwyczaj nie jest to pożądane (jest to zniekształcenie). Czy sie zgadzasz?
niaren
1
Eπ2π2
Zakładam, że częstotliwość ± N / 2 jest obecna w x. Jeśli tak nie jest (z powodu ograniczenia pasma lub w inny sposób), E i tak będzie równe 0, więc nie będzie różnicy między dopełnianiem za pomocą E (lub 2E) a dopełnianiem za pomocą 0.
finnw
1
Sygnał o ograniczonym paśmie może nadal mieć zawartość w przedziale N / 2 z powodu „wycieku widmowego” z dowolnej zawartości widma nieokresowego w otworze DFT, szczególnie w pobliżu (ale nie w) Fs / 2.
hotpaw2