Wątek przeniesiony 2022-10-20 13:33 z Inżynieria oprogramowania przez Riddle.

Korelacja z funkcją - jak się nazywa

0

Znam pewien algorytm pod nazwą "korelacja z funkcją sinus" i "korelacja z funkcją cosinus", jednak pod taką nazwą nie mogę znaleźć w internecie. Może taki algorytm nazywa się inaczej? Znajduję coś o korelacji, ale w zupełnie innym znaczeniu.

To o co się pytam, to algorytm bardzo podobny do filtra o skończonej odpowiedzi impulsowej, ale "korelacja z funkcją" ma kilka zasadniczych różnic:

  1. Na wejściu zazwyczaj jest sygnał okresowy podobny do sinusoidy, na przykład przefiltrowany wąskim filtrem pasmowoprzepustowym.
  2. W oknie filtra na początku jest jeden okres funkcji sinus lub cosinus. Zazwyczaj wykonuje się korelację z obiema funkcjami.
  3. Najważniejsza różnica jest taka, że jak się do korelacji pobiera kolejną próbkę (okno filtra przesuwa się na przód), to w samym oknie przesuwa się funkcję o jedną próbkę w ten sposób, że usuwa się pierwszą próbkę i wstawia ją na koniec, czyli wraz z postępem korelacji zmienia się faza funkcji filtra. Inaczej mówiąc, działa to tak, że można jakby położyć funkcję sinus równolegle do sygnału wejściowego i wykonywać filtrację nie według stałego okna filtru, tylko według równolegle leżącego fragmentu funkcji.
  4. W przypadku, gdy na wejściu jest przebieg podobny do sinusoidy o okresie równym okresowi funkcji korelujących (wspomniany sinus i cosinus), na wyjściu otrzymuje się przebieg stały.
  5. Jeżeli w danym momencie wartości na wyjściu podstawi się jako części liczby zespolonej, a następnie obliczy moduł i argument tej liczby, to otrzyma się odpowiednio chwilową amplitudę i fazę przebiegu wejściowego (faza w stosunku do przyłożonej funkcji sinus).

Ja to miałem kiedyś na studiach. Taki algorytm na pewno jest znany, wielokrotnie opisany w internecie, tylko inaczej się nazywa. Pytanie tylko, jak się nazywa (po angielsku lub po polsku)?

1

Możesz chodzi Ci o transformację Fouriera? Tam pojawiają się funkcje bazowe z sinusem i cosinusem.

0

To chyba ma wiele wspólnego z DFT, można to samo otrzymać obliczając transformatę z tą różnicą, że:

  1. Długość transformacji odpowiada okresowi funkcji, z którą koreluje się przebieg.
  2. Okienko obliczeniowe przesuwa się co jedna próbkę zamiast co kilka (w przypadku, gdy chce się wygenerować spectrogram). Innymi słowy, transformację wykonuje się tyle razy, ile jest próbek w przebiegu wejściowym, a w każdym kroku przebiegiem wejściowym do transformacji są ostatnie próbki przebiegu wejściowego w ilości odpowiadającej okienku, tak samo, jak filtracja FIR.
  3. Z wyniku obliczeń bierze się tylko wartość odpowiadającą częstotliwości podstawowej (okresowi okienka), z definicji DFT jest to liczba zespolona (część rzeczywista to korelacja z cosinus, a część urojona to korelacja z sinus). Inne wartości transformaty nie są potrzebne.

Można nieco przyspieszyć algorytm kosztem dokładności, jeżeli w okienku zamiast funkcji sinus będzie funkcja prostokątna. Znika mnożenie zmiennoprzecinkowe, znika konieczność generowania i utrzymania tablicy wartości funkcji sinus, zostaje tylko dodawanie liczb, tylko połowę dodaje się ze zmienionym znakiem liczby.

1 użytkowników online, w tym zalogowanych: 0, gości: 1