W proponowanym cyklu "Modelowanie DSP cyfrowego przetwarzania sygnałów w MATLAB" poprzednie artykuły były poświęcone modelowaniu filtrów cyfrowych (DF), FIR i IIR, w tym stałoprzecinkowych (FT), narzędzia programowe MATLAB.

Literatura

  1. Ingle V., Proakis J. Cyfrowe przetwarzanie sygnału przy użyciu MATLAB. Druga edycja. Thomson, 2006.
  2. Oppenheim A., Shafer R. Cyfrowe przetwarzanie sygnału. M.: Technosfera, 2006.
  3. Sergienko AB Cyfrowe przetwarzanie sygnału. 2. wyd. Petersburg: PIOTR, 2006.
  4. Solonina AI, Ulakhovich D. A., Arbuzov SM, Solovieva E. B. Podstawy cyfrowego przetwarzania sygnałów. 2. wyd. Petersburg: BHV-Petersburg, 2005.
  5. Solonina A. I., Arbuzov S. M. Cyfrowe przetwarzanie sygnału. Modelowanie w MATLAB. Petersburg: BHV-Petersburg, 2008.
  6. Solonina A. Modelowanie cyfrowego przetwarzania sygnałów w MATLAB. Część 1. Synteza optymalnych (wg Czebyszewa) filtrów FIR z wykorzystaniem oprogramowania MATLAB // Komponenty i technologie. 2008. nr 11.
  7. Solonina A. Modelowanie cyfrowego przetwarzania sygnałów w MATLAB. Część 2. Synteza optymalnych filtrów IIR z wykorzystaniem oprogramowania MATLAB // Komponenty i technologie. 2008. nr 12.
  8. Solonina A. Modelowanie cyfrowego przetwarzania sygnałów w MATLAB. Część 3. Opis struktur filtrów FIR i IIR w MATLAB // Komponenty i technologie. 2009. Nr 1.
  9. Solonina A. Modelowanie cyfrowego przetwarzania sygnałów w MATLAB. Część 4. Modelowanie struktur cyfrowych filtrów stałoprzecinkowych za pomocą oprogramowania MATLAB: analiza charakterystyk filtrów FIR // Komponenty i technologie. 2009. Nr 2.
  10. Solonina A. Modelowanie cyfrowego przetwarzania sygnałów w MATLAB. Część 5. Modelowanie struktur cyfrowych filtrów stałoprzecinkowych za pomocą oprogramowania MATLAB: analiza charakterystyk filtrów IIR // Komponenty i technologie. 2009. Nr 3.
  11. Solonina A. Modelowanie cyfrowego przetwarzania sygnałów w MATLAB. Część 6. Modelowanie stałoprzecinkowych struktur filtrów cyfrowych za pomocą oprogramowania MATLAB: kwantyzacja wpływu i obliczanie odpowiedzi // Komponenty i technologie. 2009. Nr 4.
1 W grupie Bieżące informacje o filtrze odpowiada to komunikatowi: Source-Designed.
2 W grupie Bieżące informacje o filtrze odpowiada to komunikatowi: Źródło-Importowane.

A.B. Sergienko. Przegląd zestawu narzędzi do przetwarzania sygnałów

Przetwarzanie sygnału zawsze było jednym z najważniejszych obszarów zastosowań systemu MATLAB. Świadczy o tym przede wszystkim fakt, że Signal Processing Toolbox był jednym z pierwszych wyspecjalizowanych pakietów – pojawił się już w 1988 roku, zaledwie cztery lata po stworzeniu samego systemu MATLAB.

Do chwili obecnej pakiet Signal Processing zawiera prawie dwieście starannie zaprojektowanych specjalistycznych funkcji, które pozwalają rozwiązywać różnorodne problemy związane z analizą i przetwarzaniem sygnałów.

Obecnie dystrybuowana wersja MATLAB 6.1 (wydanie 12.1) zawiera pakiet Signal Processing w wersji 5.1. Nadchodzące wydanie MATLAB 6.5 (wydanie 13) będzie zawierać pakiet Signal Processing w wersji 6.0.

Według oficjalna dokumentacja Pakiet jego funkcji podzielony jest na dwadzieścia kategorii. Na poniższej liście kategorie te są pogrupowane w większe grupy. Tak więc, zgodnie z ich przeznaczeniem, funkcje pakietu Signal Processing można podzielić w następujący sposób:

Dodatkowo pakiet zawiera trzy środowiska graficzne:

MATLAB i jego pakiety rozszerzeń koncentrują się przede wszystkim na technologii cyfrowej przetwarzanie sygnałów dlatego funkcje związane z obliczaniem obwodów analogowych są traktowane jako pomocnicze. Są one przeznaczone głównie do wywoływania z innych funkcji, które wykorzystują prototypy analogowe podczas syntezy filtrów cyfrowych. Jednak te funkcje mogą być same w sobie bardzo przydatne. Z kolei można je podzielić na kilka grup.

Pierwsza grupa to funkcje do obliczania analogowych filtrów prototypowych, czyli filtrów dolnoprzepustowych o częstotliwości odcięcia równej 1 rad/s. Funkcje zwracają zera, bieguny i wzmocnienia filtrów i umożliwiają obliczenie prototypowych filtrów Butterwortha ( tyłek), Czebyszew pierwszego rodzaju ( cheb1ap), Czebyszew drugiego rodzaju ( cheb2ap), eliptyczny (Cauer) ( elipap) i Bessela ( besselap).

Druga grupa to funkcje konwersji filtrów analogowych, które pozwalają na konwersję prototypu LPF na LPF o innej częstotliwości odcięcia ( lp2lp), do filtra górnoprzepustowego (HPF) o zadanej częstotliwości odcięcia ( lp2hp), na filtr pasmowoprzepustowy o danej średniej częstotliwości i szerokości pasma ( lp2bp) i do filtra wycinającego o podanej średniej częstotliwości i szerokości pasma zaporowego ( lp2bs). Funkcje mogą przyjmować i zwracać opisy filtrów jako wektory współczynników licznika i mianownika funkcji przenoszenia lub jako parametry przestrzeni stanów.

Trzecia grupa - funkcje do obliczania filtrów analogowych o określonych parametrach. W procesie obliczeń nazywają funkcje dwóch pierwszych grup. Zestaw danych początkowych wymaganych do obliczeń obejmuje kolejność filtra, jego typ (filtr dolnoprzepustowy, filtr górnoprzepustowy, pasmowy lub notch), częstotliwość lub kilka częstotliwości odcięcia, a także (w zależności od prototypu) tętnienie parametry odpowiedzi częstotliwościowej (AFC). Istnieją funkcje do obliczania filtrów Butterwortha ( masło), Czebyszew pierwszego rodzaju ( czeby1), Czebyszew drugiego rodzaju ( czeby2), eliptyczny (Cauer) ( eliptyczny) i Bessela ( zachowywać się). Wszystkie te funkcje, z wyjątkiem funkcji zachowywać się, może być również używany do obliczania filtrów dyskretnych (patrz poniżej). Znakiem opcji obliczeń analogowych jest wskazanie ciągu „s” jako ostatniego parametru wejściowego.

Czwarta grupa - funkcje do określania wymaganej kolejności filtrów zgodnie z określonymi parametrami odpowiedzi częstotliwościowej (częstotliwości odcięcia pasm przepustu i zatrzymania, a także dopuszczalne tętnienia w pasmach przepustu i zatrzymania). Każdy typ filtra ma swoją własną funkcję określania wymaganej kolejności: dla filtra Butterwortha - tyłek, dla filtra Czebyszewa pierwszego rodzaju - cheb1ord, dla filtra Czebyszewa drugiego rodzaju - cheb2ord, dla filtra eliptycznego - elipord. Podobnie jak funkcje z poprzedniej grupy, funkcje te pozwalają również określić wymaganą kolejność filtrów dyskretnych (patrz poniżej). Znakiem opcji obliczeń analogowych jest wskazanie ciągu „s” jako ostatniego parametru wejściowego.

Grupa piąta - funkcje przekształceń form opisu analogowych układów liniowych. W przypadku systemów analogowych obsługiwane są cztery takie metody opisu:

Pakiet Signal Processing posiada funkcje, które realizują wzajemne przekształcenia tych czterech form reprezentacji systemów analogowych (tylko funkcja pozostałość, który działa z biegunami i resztami, nie należy do pakietu Signal Processing, ale do podstawowej biblioteki MATLAB). Te funkcje są wymienione w poniższej tabeli.

ostateczny kształt Współczynniki wielomianu funkcji transferu Zera i bieguny Polacy i odliczenia Przestrzeń stanów
oryginalna forma
tf2zp pozostałość tf2ss
Zera i bieguny zp2tf zp2ss
Polacy i odliczenia pozostałość
Przestrzeń stanów ss2tf ss2zp

pozostałość może konwertować w obu kierunkach. Kierunek transformacji jest określony przez liczbę parametrów wejściowych i wyjściowych.

Funkcje wymienione w tabeli, z wyjątkiem funkcji pozostałość, może również wykonywać transformacje systemów dyskretnych, ponieważ formuły transformacji dla systemów analogowych i dyskretnych są takie same.

Wreszcie szósta grupa powinna zawierać jedyną funkcję częstotliwości, który pozwala obliczyć lub wyświetlić graficznie charakterystykę amplitudy i częstotliwości fazowej (AFC i PFC) analogowego systemu liniowego. Danymi początkowymi są współczynniki wielomianów licznika i mianownika transmitancji układu.

Jako przykład, jak można zastosować funkcje analogowe, obliczmy 4-rzędowy eliptyczny filtr dolnoprzepustowy z częstotliwością odcięcia 3 kHz, tętnieniem pasma przepustowego 1 dB i tłumieniem pasma zaporowego 20 dB, a następnie wykreślmy jego odpowiedź częstotliwościową i odpowiedź fazową ...

Ellip(4, 1, 20, 2*pi*3000, "s"); Obliczenie filtra %
f = 0:10:10000; % wektor częstotliwości do obliczania odpowiedzi częstotliwościowej i odpowiedzi fazowej
h = częst.(b, a, 2*pi*f); % złożonego zysku
wątek pomocniczy(2, 1, 1)

krata
działka podrzędna(2, 1, 2)
plot(f, unwrap(kąt(h))*180/pi) % wykres PFC (w stopniach)
krata

Funkcja użyta w przykładowym kodzie rozwijać eliminuje nieznaczne skoki w PFC o 360°.

Ta kategoria funkcji jest dość liczna i łączy różne sposoby analizy dyskretnych układów liniowych - z reguły reprezentowanych jako wektory współczynników wielomianów licznika i mianownika transmitancji (w z- obszary).

Funkcjonować freqz jest dyskretnym odpowiednikiem funkcji częstotliwości, umożliwia obliczenie złożonego współczynnika przenoszenia lub wykreślenie odpowiedzi częstotliwościowej i odpowiedzi fazowej systemu dyskretnego. Danymi początkowymi są współczynniki wielomianów licznika i mianownika transmitancji układu.

Podobny do funkcji freqz funkcja biegania grpdelay, który pozwala obliczyć lub graficznie wyświetlić zależność częstotliwości opóźnienia grupowego wprowadzonego przez filtr dyskretny.

Funkcjonować impz przeznaczony do obliczania lub graficznego wyświetlania odpowiedzi impulsowej systemu dyskretnego. Danymi początkowymi, podobnie jak w przypadku poprzednich funkcji, są współczynniki wielomianów licznika i mianownika transmitancji układu.

Funkcjonować zplane umożliwia wyświetlanie zer i biegunów układu na płaszczyźnie zespolonej, dodatkowo przedstawiając okrąg jednostkowy ograniczający dopuszczalny obszar położenia biegunów zrównoważony dyskretny system. Danymi początkowymi mogą być albo wektory współczynników wielomianów licznika i mianownika, albo bezpośrednio wektory zer i biegunów transmitancji układu.

Funkcjonować norma filtra pozwala obliczyć norma filtr dyskretny. Parametr ten jest wykorzystywany np. przy doborze współczynników skalujących dla poszczególnych sekcji filtra realizowanych sekwencyjnie (kaskadowo) w celu zmniejszenia błędów zaokrągleń. Obsługiwane są dwie opcje: 2-norm i -norm. 2-norma to rms wartość odpowiedzi częstotliwościowej filtru (lub, to samo, pierwiastek sumy kwadratów próbek odpowiedzi impulsowej filtru), a norma wynosi maksymalny wartość odpowiedzi częstotliwościowej.

Funkcjonować fvtool jest zasadniczo środowiskiem graficznym zaprojektowanym do analizy i wizualizacji charakterystyk systemów dyskretnych (narzędzie do wizualizacji filtrów). Jednak w przeciwieństwie do innych środowisk graficznych w pakiecie, fvtool naprawdę jest funkcjonować, ponieważ wywołanie wymaga obecności parametrów wejściowych - współczynników wielomianów licznika i mianownika transmitancji analizowanego filtra. Istotną zaletą tej funkcji jest możliwość jednoczesnego przeglądania charakterystyk kilka filtry. GUI zapewniana przez tę funkcję jest praktycznie taka sama jak w środowisku analizy i syntezy filtrów FDATool. Poniżej znajduje się przykład wywołania funkcji fvtool oraz utworzone przez niego okno graficzne w trybie pokazywania zależności częstotliwościowej opóźnienia grupowego wprowadzonego przez filtr.

b = ;
a = ;
fvtool(b, a)

Dużą grupę stanowią funkcje służące do przekształcania postaci opisów układów dyskretnych. Dla systemów dyskretnych obsługiwanych jest więcej form reprezentacji niż dla systemów analogowych:

  • Współczynniki wielomianów licznika i mianownika transmitancji układu.
  • Zera, bieguny i wzmocnienie systemu (faktoryzacja funkcji przenoszenia).
  • Bieguny i reszty (reprezentacja transmitancji układu jako suma ułamków prostych).
  • Parametry przestrzeni stanów.
  • Reprezentacja jako zbiór sekwencyjnie (kaskadowo) odcinków drugiego rzędu.
  • Reprezentacja w postaci konstrukcji kratowej lub kratowo-drabinowej.

W poniższej tabeli wymieniono funkcje, które wykonują konwersje między różnymi formami reprezentacji.

ostateczny kształt Współczynniki wielomianu funkcji transferu Zera i bieguny Polacy i odliczenia Przestrzeń stanów Sekcje drugiego rzędu struktura sieciowa
oryginalna forma
Współczynniki wielomianu funkcji transferu tf2zp resztaz tf2ss tf2sos tf2latc
Zera i bieguny zp2tf zp2ss zp2sos
Polacy i odliczenia resztaz
Przestrzeń stanów ss2tf ss2zp ss2sos
Sekcje drugiego rzędu sos2tf sos2zp sos2ss
struktura sieciowa latc2tf

Jak widać z tabeli, ta sama funkcja resztaz(jest to analogia funkcji pozostałość, przeznaczony do pracy z opisami systemów dyskretnych) może przekształcać się w obu kierunkach. Kierunek transformacji jest określony przez liczbę parametrów wejściowych i wyjściowych.

Dwie kolejne funkcje manipulują wektorami współczynników wielomianu, modyfikując położenie pierwiastków wielomianu na płaszczyźnie zespolonej. Funkcjonować poliskala mnoży wszystkie pierwiastki przetwarzanego wielomianu przez podany współczynnik, a funkcja polistab sprawia, że ​​wszystkie pierwiastki wielomianu leżą wewnątrz okręgu jednostkowego - w tym celu pierwiastki przekraczające jedność w wartości bezwzględnej są odwrócone, to znaczy ich moduły są zastępowane odwrotnościami, a znak ich faz jest odwrócony.

Pozostałe funkcje w tej kategorii mają charakter pomocniczy. Funkcjonować freqspace oblicza wektor równomiernie rozmieszczonych wartości częstotliwości, funkcja freqzplot służy do wykreślania wykresów odpowiedzi częstotliwościowej, a funkcja rozwijać pozwala na eliminację nieznacznych skoków w charakterystyce fazowo-częstotliwościowej o 2p, szukanie tych skoków między elementami wektora i przesuwanie niezbędnych fragmentów wektora o 2p n.

Działanie liniowego filtrowania dyskretnego jest ogólnie opisane w następujący sposób:

Tutaj x(k)- próbki sygnału wejściowego, y(k)- odczyty sygnału wyjściowego, ja oraz b j- stałe współczynniki. Maksimum liczb m oraz n nazywa się kolejnością filtrów.

Wcześniejsze próbki wyjściowe nie mogą być użyte w obliczeniach, to wszystkie ja = 0 a filtr nazywa się nierekurencyjny lub poprzeczny. Jeśli używane są poprzednie próbki wyjściowe, mówi się, że filtr jest rekurencyjny.

Liniowe filtrowanie dyskretne odnosi się do dowolnych technologii przetwarzania danych, więc odpowiadająca mu funkcja to filtr- nie należy do pakietu Signal Processing, ale jest wbudowane w jądro MATLAB. Funkcjonować filtr2, również należąca do podstawowej biblioteki MATLAB, implementuje dwuwymiarowe filtrowanie dyskretne.

Ponieważ filtr o stałym współczynniku jest liniowym stacjonarnym systemem dyskretnym, jego odpowiedź na dowolny sygnał wejściowy można przedstawić jako dyskretny splot sygnał wejściowy z odpowiedzią impulsową filtra:

Tutaj h(k)- odczyty odpowiedzi impulsowej filtra. Odpowiedź impulsowa to odpowiedź filtra na pojedynczą próbkę wartości jednostkowej doprowadzoną do wejścia.

Oczywiście obliczenia z wykorzystaniem wzoru splotu mogą być w praktyce realizowane tylko dla skończonej długości odpowiedzi impulsowej filtru. Ta operacja jest wykonywana przez funkcję konw; jak również implementacja algorytmu filtrowania dyskretnego, nie należy do pakietu Signal Processing, ale do podstawowej biblioteki MATLAB. W rzeczywistości implementacja funkcji conv sprowadza się do wywołania funkcji filtr z odpowiednim Parametry wejściowe. Funkcjonować konw.2 realizuje dwuwymiarowy splot dyskretny. Inną funkcją podstawowej biblioteki MATLAB jest: dekonw- realizuje inwersję splotu, pozwalając wynikowi splotu i jednemu z wektorów wejściowych określić drugi wektor wejściowy.

Wspomniano powyżej podstawowe funkcje filtrowanie dyskretne, jak już wspomniano, należy do podstawowej biblioteki MATLAB; w rzeczywistości pakiet Signal Processing zawiera funkcje, które rozwiązują bardziej szczegółowe zadania filtrowania.

Przede wszystkim należy zauważyć, że funkcja filtr umożliwia dostęp do początkowych i końcowych stanów wewnętrznych filtra, umożliwiając w ten sposób organizację przetwarzania sygnału blokowego. Czasami konieczne staje się utworzenie wewnętrznego wektora stanu filtra, znając pewną liczbę poprzednich próbek wejściowych i wyjściowych. To obliczenie jest wykonywane za pomocą funkcji filtic.

Funkcjonować fftfilt implementuje dyskretne filtrowanie przy użyciu szybkiej transformacji Fouriera (FFT) w połączeniu z blokowaniem sygnału. W ten sposób można zaimplementować tylko filtry nierekurencyjne. Wynik działania funkcji pokrywa się (do błędów obliczeniowych) z wynikami konwencjonalnego filtrowania zaimplementowanego za pomocą funkcji filtr. Jednak szybkość obliczeniowa filtrowania FFT może być znacznie większa, zwłaszcza jeśli długość sygnału wejściowego jest wielokrotnie większa od długości odpowiedzi impulsowej filtra (lub odwrotnie).

Funkcjonować filtr filtr pozwala skompensować przesunięcie fazowe wprowadzone przez konwencjonalne filtrowanie (innymi słowy, podana funkcja realizuje filtrowanie bez wprowadzania opóźnienia czasowego). Odbywa się to poprzez dwukierunkowe przetwarzanie sygnału. Pierwsze przejście filtrowania odbywa się w zwykły sposób, a następnie wynikowy sygnał wyjściowy jest filtrowany po raz drugi - od końca do początku. Dzięki temu przesunięcia fazowe są kompensowane, a wynikowa kolejność filtrów jest podwojona. Należy zauważyć, że otrzymany filtr (odpowiednik dwóch przejść filtrujących) nie spełnia warunku przyczynowości.

W praktycznej implementacji filtrów rekurencyjnych wyższego rzędu są one często reprezentowane jako sekcje drugiego rzędu połączone szeregowo. Umożliwia to osłabienie błędów obliczeniowych wynikających z błędów zaokrąglania i kwantyzacji współczynników filtra. Narzędzia do analizy tego rodzaju błędów są skoncentrowane w pakiecie Filter Design, a w pakiecie Signal Processing jest funkcja sosfilt, który umożliwia implementację dyskretnego filtrowania danych przy użyciu filtra reprezentowanego jako sekcje drugiego rzędu.

Inną możliwą dyskretną strukturą filtra jest struktura sieciowa. Aby zaimplementować filtrowanie za pomocą filtra przedstawionego w tym formularzu, funkcja filtr siatkowy.

Funkcjonować medfilt1, który implementuje jednowymiarowe filtrowanie mediany, odnosi się do nieliniowych algorytmów filtrowania. Istotą jego działania jest to, że na sygnał wejściowy przykładane jest przesuwane okno o określonej długości, próbki w oknie są uporządkowane, a wartość ze środka okna uporządkowanego (czyli połowa sumy dwóch elementów najbliższych środek, jeśli okno ma parzystą długość) jest zwracany jako próbka wyjściowa. Filtrowanie medianowe jest używane na przykład do eliminacji szumów impulsowych (kliknięć) w przetwarzaniu sygnałów audio. Funkcjonować medfilt2, który implementuje dwuwymiarowy wariant filtrowania medianowego, znajduje się w pakiecie Image Processing.

Funkcjonować sgolayfilt wykonuje dyskretne filtrowanie przy użyciu filtra Savitsky-Golay. Jego istota polega na tym, że sygnał wejściowy jest podzielony na bloki o określonej wielkości, aw każdym bloku wielomianowe przybliżenie sygnału o wielomian o zadanym stopniu odbywa się według kryterium minimalnego błędu średniokwadratowego. Jeśli stopień wielomianów jest o jeden mniejszy niż rozmiar bloków, wyjście będzie równe wejściu; przy niższym stopniu wielomianów sygnał zostanie wygładzony. Filtry Savitsky-Golay służą do „oczyszczania” sygnałów z szumu.

Synteza filtrów dyskretnych rozumiana jest jako wybór takich zestawów współczynników ( ja) oraz ( b ja), w którym właściwości otrzymanego filtra spełniają określone wymagania. Ściśle rzecz biorąc, zadanie projektowe obejmuje również dobór odpowiedniej konstrukcji filtra, biorąc pod uwagę skończoną dokładność obliczeń. Dotyczy to zwłaszcza implementacji filtrów „sprzętowo” – przy użyciu wyspecjalizowanych procesorów LSI lub cyfrowych procesorów sygnałowych. Efekty związane ze skończoną dokładnością obliczeń można analizować za pomocą funkcji pakietu Filter Design; funkcje syntezy filtrów nie uwzględniają tych efektów.

Pakiet Signal Processing zawiera dużą liczbę funkcji, które implementują różne algorytmy syntezy filtrów dyskretnych. Przedstawiamy główne cechy tych funkcji w formie tabeli, a następnie podajemy dodatkowe uwagi.

Funkcjonować Typ filtra Pasmo przenoszenia Metoda syntezy
masło rekursywny Butterworth Dwuliniowa transformacja z
czeby1 rekursywny Czebyszew pierwszego rodzaju Dwuliniowa transformacja z
czeby2 rekursywny Czebyszew drugiego rodzaju Dwuliniowa transformacja z
eliptyczny rekursywny Cauera (eliptyczny) Dwuliniowa transformacja z
bilinearny rekursywny Dwuliniowa transformacja z
impinwar rekursywny Dowolny prototyp analogowy Niezmienna transformacja odpowiedzi na impuls
yulewalk rekursywny Odcinkowo liniowy Metoda autoregresyjna
invfreqz rekursywny Bezpłatny Minimalizacja różnicy między licznikiem transmitancji a iloczynem jej mianownika i pożądanej odpowiedzi częstotliwościowej
prony rekursywny Synteza z danej odpowiedzi impulsowej Aproksymacja wykładnicza Prony
jodła1 nierekurencyjny Wielopasmowy
jodła2 nierekurencyjny Odcinkowo liniowy Odwrotna transformata Fouriera w systemie Windows
firls nierekurencyjny Minimalizowanie błędu średniej kwadratowej
fircls nierekurencyjny Odcinkowo stała
jedynki1 nierekurencyjny LPF, HPF Minimalizacja błędu RMS przy maksymalnym ograniczeniu odchylenia
jodły nierekurencyjny LPF wygładzenie kosinusowe
przenikać nierekurencyjny LPF Przybliżenie Minimax
remez nierekurencyjny Odcinkowo liniowy z paskami przejściowymi Przybliżenie Minimax
kremy Nierekurencyjne (w tym nieliniowe PFC i złożone współczynniki) Odcinkowo liniowy z paskami przejściowymi Przybliżenie Minimax

Metody syntezy filtrów dyskretnych można podzielić na dwie duże grupy: z prototypem analogowym i bez niego. W przypadku korzystania z prototypowego filtra analogowego konieczne jest, aby w jakiś sposób przedstawić analogową funkcję przenoszenia zdefiniowaną w domenie s na dyskretną funkcję przenoszenia zdefiniowaną w domenie z. Pakiet Signal Processing implementuje dwie metody takiej transformacji: metodę niezmiennej odpowiedzi impulsowej oraz metodę dwuliniowej transformacji z. Obie metody skutkują rekurencyjnymi filtrami dyskretnymi.

W przypadku zastosowania metody niezmiennej odpowiedzi impulsowej, odpowiedź impulsowa prototypu analogowego jest dyskretyzowana. Odpowiedź częstotliwościowa powstałego filtru dyskretnego jest odpowiednio okresowo powtarzaną odpowiedzią częstotliwościową prototypu analogowego. Z tego powodu metoda ta nie nadaje się do syntezy filtrów górnoprzepustowych i ogólnie filtrów, których współczynnik przenoszenia nie dąży do zera wraz ze wzrostem częstotliwości. Metoda niezmiennej odpowiedzi impulsowej jest zaimplementowana w pakiecie Signal Processing za pomocą funkcji impinwar.

W przypadku stosowania metody dwuliniowej transformacji z charakterystyka prototypu analogowego jest zniekształcona tylko wzdłuż osi częstotliwości. W tym przypadku zakres częstotliwości filtru analogowego (od zera do nieskończoności) jest konwertowany na zakres częstotliwości pracy filtru dyskretnego (od zera do połowy częstotliwości próbkowania). Transformacja osi częstotliwości jest opisana funkcją arc tangens, więc częstotliwości, które są znacznie niższe niż częstotliwość próbkowania, są przekształcane w przybliżeniu liniowo. Ta metoda jest zaimplementowana za pomocą funkcji bilinearny dla dowolnego analogowego prototypu. Ponadto dostępne są gotowe funkcje do obliczania filtrów dolno- i górnoprzepustowych, filtrów pasmowo-przepustowych i wycinających metodą dwuliniowej transformacji z przy użyciu prototypów analogowych z AFC Butterwortha, Czebyszewa pierwszego i drugiego rodzaju oraz Cauera (filtry eliptyczne ). Jest to zgodne z funkcją! masło, cheby1, cheby2 oraz eliptyczny. Wszystkie te funkcje można również wykorzystać do obliczenia filtrów analogowych (patrz wcześniej). Oznaką dyskretnego wariantu obliczeń jest brak ciągu „s” na liście parametrów wejściowych. Dostępne są również funkcje określające wymaganą kolejność tych filtrów według podane parametry AFC (częstotliwości graniczne pasm przepustowych i opóźniających, a także dopuszczalne tętnienia w tych pasmach). Jest to zgodne z funkcją! buttord, cheb1ord, cheb2ord, ellipord. Podobnie jak funkcje syntezy filtrów, funkcje te pozwalają również określić wymaganą kolejność filtrów analogowych (patrz wcześniej). Oznaką dyskretnego wariantu obliczeń jest brak ciągu „s” na liście parametrów wejściowych.

Jako przykład, syntetyzujemy eliptyczny filtr dolnoprzepustowy czwartego rzędu o takich samych parametrach jak filtr analogowy w jednym z poprzednich przykładów (częstotliwość odcięcia 3 kHz, tętnienie odpowiedzi częstotliwościowej w paśmie przepuszczania 1 dB i tłumienie sygnału w paśmie zaporowym 20 dB). Przyjmiemy częstotliwość próbkowania równą 12 kHz. Po syntezie wykreślamy odpowiedź częstotliwościową i odpowiedź fazową powstałego filtra za pomocą funkcji freqz.

    Fs = 12000; % częstotliwość próbkowania
    F0 = 3000; % częstotliwości odcięcia
    = elipsa(4, 1, 20, F0/Fs*2); Obliczenie filtra %
    freqz(b, a, , Fs); % wyjścia wykresu

Metody syntezy, które nie wykorzystują prototypu analogowego, nazywane są bezpośrednimi. Te z kolei można również podzielić na dwie grupy: metody syntezy filtrów rekurencyjnych i nierekurencyjnych.

Funkcje bezpośredniej syntezy filtrów nierekurencyjnych obejmują:

  • Funkcje realizujące syntezę filtrów przez odwrotną transformację Fouriera pożądanej odpowiedzi częstotliwościowej z późniejszym pomnożeniem wynikowej odpowiedzi impulsowej przez pewną funkcję wagową (okno) w celu złagodzenia tętnienia odpowiedzi częstotliwościowej, które pojawia się w wyniku efektu Gibbsa. To są cechy jodła1 oraz jodła2. Obejmuje to również funkcję syntezy filtra dolnoprzepustowego z wygładzaniem cosinus pasma przenoszenia - jodły. Ponadto funkcja Kaiserord pozwala, zgodnie z podanymi parametrami odpowiedzi częstotliwościowej, oszacować wymaganą kolejność filtrów podczas syntezy za pomocą okna Kaisera.
  • Funkcje realizujące minimalizację odchylenia standardowego odpowiedzi częstotliwościowej filtru wynikowego od zadanego. To są cechy firls, fircls oraz jedynki1. Dwie ostatnie funkcje rozwiązują problem optymalizacji z ograniczeniem maksymalnego odchylenia odpowiedzi częstotliwościowej od zadanej. Pozwala to uniknąć pojawienia się dużych pików odpowiedzi częstotliwościowej w pobliżu pasm przejściowych.
  • Funkcje realizujące optymalizację minimaksową, czyli minimalizację szczytowego odchylenia odpowiedzi częstotliwościowej filtru wynikowego od zadanego. Rezultatem są filtry o równomiernych tętnieniach pasma przenoszenia. Ta grupa obejmuje funkcje remez (wersja standardowa metoda Remez, zaimplementowana w pierwszych wersjach pakietu Signal Processing) oraz kremy(rozszerzona wersja obsługująca syntezę filtrów o nieliniowej odpowiedzi fazowej i ze złożonymi współczynnikami). Ponadto funkcja remezord pozwala oszacować wymaganą kolejność filtra w syntezie metodą Remeza zgodnie z zadanymi parametrami odpowiedzi częstotliwościowej.

Jako przykład, syntetyzujemy nierekurencyjny LPF 32. rzędu przy użyciu metody Remez z takimi samymi częstotliwościami odcięcia i próbkowania jak w poprzednim przykładzie (częstotliwość odcięcia 3 kHz, częstotliwość próbkowania 12 kHz). Ustawiliśmy początek pasma zatrzymania na 3,5 kHz. Po syntezie wykreślimy wykresy odpowiedzi impulsowej, a także odpowiedź częstotliwościową powstałego filtra (PFC filtra jest liniowe, więc nie ma sensu go wykreślać). Pasmo przenoszenia będzie wyświetlane na skali liniowej wzdłuż pionu, aby wyraźnie pokazać równomierność jego pulsacji.

    Fs = 12000; % częstotliwość próbkowania
    F0 = 3000; % częstotliwość odcięcia
    F1=3500; % początku pasma zatrzymania
    b = remez(32, , ); Obliczenie filtra %
    impz(b) % wykres odpowiedzi impulsowej
    = freqz(b, 1, , Fs); % złożonego zysku
    figury
    wykres(f, abs(h)) % wykres odpowiedzi częstotliwościowej
    krata

Funkcje bezpośredniej syntezy filtrów rekurencyjnych obejmują:

  • yulewalk- synteza filtru rekurencyjnego o dowolnej odcinkowo liniowej charakterystyce częstotliwościowej metodą Yule-Walkera.
  • invfreqz- ta funkcja ma na celu rozwiązanie problemu identyfikacji systemów, pozwala określić współczynniki licznika i mianownika transmitancji układu dyskretnego za pomocą zestawu wartości tej transmitancji przy różnych częstotliwościach.

Podsumowując, podajemy szereg funkcji, które nie są zawarte w wymienionych powyżej grupach. Funkcjonować maksymalne mieszkanie jest przeznaczony do syntezy uogólnionego filtra Butterwortha (dla takich filtrów liczba zer transmitancji przekracza liczbę jej biegunów). Funkcjonować przenikać wykonuje syntezę filtrów przeznaczonych do filtrowania sygnału podczas wykonywania interpolacji i decymacji. Operację splotu wektorowego można przedstawić jako iloczyn macierzy wektorowej, a macierz zaangażowaną w ten iloczyn można obliczyć za pomocą funkcji konwmtx. Wreszcie funkcja sgolay wykonuje syntezę filtra wygładzającego Savitsky-Golay. Ponieważ, jak opisano powyżej, filtr Savitzky-Golay przetwarza poszczególne bloki sygnału, taki filtr nie jest systemem stacjonarnym. Dlatego funkcja sgolay zwraca macierz liczb całkowitych zmiennych w czasie współczynników równoważnego filtra nierekurencyjnego.

Oprócz pakietu Signal Processing, w pakietach Communications i Filter Design dostępnych jest wiele funkcji syntezy dyskretnych filtrów.

Słowa „analiza spektralna” w umysłach wielu użytkowników MATLAB są silnie związane z tą funkcją fft(patrz poniżej rozdział „Funkcje transformacji sygnałów dyskretnych”), który wykonuje dyskretną transformatę Fouriera (DFT). Jest to jednak tylko transformacja liniowa jeden do jednego, dająca wydajność sygnał deterministyczny w dziedzinie częstotliwości. Jeśli analizowany sygnał jest losowy, to ma sens tylko dla niego gatunek gęstość widmowa moc, do obliczenia których konieczne jest uśrednienie dostępnych danych w taki czy inny sposób. Ponadto w niektórych przypadkach znamy niektóre Dodatkowe informacje o analizowanym sygnale i pożądane jest uwzględnienie tej informacji w analizie spektralnej.

Metody analizy widmowej sygnałów losowych dzielą się na dwie duże klasy - nieparametryczną i parametryczną. W nieparametryczny Metody (nieparametryczne) wykorzystują wyłącznie informacje zawarte w próbkach analizowanego sygnału. Parametryczny metody (parametryczne) zakładają obecność pewnych statystycznych modele sygnał losowy, a proces analizy spektralnej w tym przypadku obejmuje określenie parametry ten model. Stosowany jest również termin „analiza widma oparta na modelu” (Model-Based Spectrum Analysis, MBSA).

Pakiet Signal Processing zawiera funkcje, które implementują różne metody analizy spektralnej, zarówno parametrycznej, jak i nieparametrycznej (należy jeszcze raz podkreślić, że analiza spektralna oznacza tu estymację gęstość widmowa mocy procesu losowego). Ponadto istnieją funkcje do uzyskiwania innych średnich charakterystyk losowych sygnałów dyskretnych.

Aby określić charakterystykę widmową dyskretnego procesu losowego, oblicza się średnie widmo mocy jego fragmentu o ograniczonej długości, a następnie długość fragmentu dąży do nieskończoności:

. (1)

Tutaj x(k) - odczyty procesu losowego, T- okres pobierania próbek. Nadkreślenie oznacza uśrednianie po zbiorze realizacji.

Dodatkowo widmo to można wyrazić w funkcji korelacji procesu losowego:

. (2)

To wyrażenie jest dyskretnym odpowiednikiem twierdzenia Wienera-Khinchina: widmem dyskretnego procesu losowego jest transformata Fouriera jego funkcji korelacji.

Jak już wspomniano, przy wykorzystaniu nieparametrycznych metod obliczania widma procesu losowego wykorzystuje się wyłącznie informacje zawarte w próbkach sygnału, bez żadnych dodatkowych założeń. W pakiecie Signal Processing zaimplementowano trzy takie metody – periodogram, metodę Welcha i metodę Thomsona.

Periodogram to oszacowanie gęstości widmowej mocy uzyskanej z N odliczanie jedna realizacja proces losowy zgodnie z definicją (1) (oczywiście nie przez przyjęcie granicy, ale przez uśrednienie skończonej liczby terminów). Jeśli do obliczenia widma jest używana funkcja wagowa (okno), wynikowe oszacowanie widma mocy nazywa się zmodyfikowany periodogram(zmodyfikowany periodogram):

Relacja (2) jest spełniona tylko dla nieskończonej liczby użytych próbek, a więc dla dowolnego skończonego N oszacowanie periodogramu gęstości widmowej mocy okazuje się być przesiedlony- okazuje się, że wewnątrz sumy (2) funkcja korelacji sygnału jest mnożona przez trójkątną funkcję wagi. Ponadto można wykazać, że periodogram nie jest spójnym oszacowaniem gęstości widmowej mocy, ponieważ dyspersja takie oszacowanie jest porównywalne do kwadratu jego matematycznych oczekiwań dla dowolnego N. Wraz ze wzrostem liczby użytych próbek wartości periodogramu zaczynają się coraz szybciej zmieniać – jego wykres staje się coraz bardziej postrzępiony.

W pakiecie Signal Processing obliczenie periodogramu (w tym zmodyfikowanego) odbywa się za pomocą funkcji periodogram.

Aby zmniejszyć nieregularność periodogramu, konieczne jest zastosowanie pewnego rodzaju uśredniania. Bartlett zasugerował podzielenie analizowanego sygnału na nienakładające się segmenty, obliczenie periodogramu dla każdego segmentu, a następnie uśrednienie tych periodogramów. Jeżeli funkcja korelacji sygnału w czasie trwania segmentu zanika do wartości pomijalnych, to periodogramy poszczególnych segmentów można uznać za niezależne. Welch dokonał dwóch ulepszeń w metodzie Bartletta: użycie funkcji wagi i podział sygnału na nakładanie się paprochy. Zastosowanie funkcji ważenia umożliwia osłabienie rozproszenia widma i zmniejszenie błędu systematycznego otrzymanego oszacowania widma gęstości mocy kosztem nieznacznego pogorszenia rozdzielczości. Nakładanie się segmentów wprowadza się w celu zwiększenia ich liczby i zmniejszenia wariancji estymacji.

Obliczenia metodą Welcha (zwaną również uśrednioną modyfikowaną metodą periodogramu) są zorganizowane w następujący sposób: wektor próbek sygnału jest dzielony na nakładające się segmenty, każdy segment jest mnożony przez zastosowaną funkcję wagową, zmodyfikowane periodogramy są obliczane dla segmentów ważonych, periodogramy wszystkich segmentów są uśredniane .

Metoda Welcha jest najpopularniejszą metodą periodogramu analizy spektralnej. W pakiecie Signal Processing jest zaimplementowany za pomocą funkcji pwelch.

Metoda Thomsona realizowana przez funkcję pmtm, na podstawie użycia rozszerzone funkcje sferoidalne(rozszerzone funkcje sferoidalne). Te funkcje o skończonym czasie trwania zapewniają maksymalną koncentrację energii w danym paśmie częstotliwości. Oprócz samego oszacowania spektralnego funkcja pmtm może zwrócić swój przedział ufności. Obliczenie funkcji sferoidalnych prolate zajmuje trochę czasu, więc przy wielokrotnym użyciu funkcji pmtm możesz przyspieszyć obliczenia, wstępnie wyliczając funkcje niezbędne do analizy i zapisując je w bazie danych. Aby pracować z taką bazą (jest to plik MAT o nazwie dpss.mat) jest przeznaczony dla rodziny funkcji, których nazwy zaczynają się od liter dpss (dpss- obliczanie funkcji, dpssload- wczytanie rodziny funkcji z bazy danych, dpsssave- zapisanie rodziny funkcji w bazie danych, dpssdir- wyświetlanie katalogu bazy danych, dpsclear- usunięcie rodziny funkcji z bazy danych).

Jako przykład utworzymy implementację wykładniczo skorelowanego procesu losowego i przeprowadzimy jego analizę spektralną przy użyciu trzech wymienionych metod. Potrzebny nam losowy sygnał jest generowany przez przepuszczenie normalnego dyskretnego białego szumu przez filtr rekurencyjny pierwszego rzędu:

X0 = randn(1, 1000);
a = 0,9;
X = filtr(1, , X0);

Budujemy periodogram:

periodogram(X, , , 1)

Jak widać, periodogram jest bardzo postrzępiony. Oszacujmy teraz widmo tej samej implementacji metodą Welcha:

pwelch(X, , , , 1)

Nieregularność wykresu jest znacznie mniejsza. Na koniec używamy metody Thomsona:

pmtm(X, , , 1)

Na wyjściu funkcji pmtm Wykres przedstawia granice przedziału ufności wraz z oszacowaniem widma mocy.

Zastosowanie metod parametrycznych implikuje obecność pewnych matematycznych modele analizowany proces losowy. Analiza spektralna sprowadza się w tym przypadku do rozwiązania problemu optymalizacyjnego, czyli znalezienia takiego parametry modele, w których jest najbardziej zbliżony do faktycznie obserwowanego sygnału. Pakiet Signal Processing implementuje szereg odmian analizy autoregresyjnej oraz dwie metody oparte na analizie wartości własnych i wektorów macierzy korelacji sygnału: MUSIC (MUltiple SIgnal Classification) i EV (EigenVectors).

Według model autoregresyjny sygnał jest generowany przez przepuszczenie dyskretnego białego szumu przez filtr „czysto rekurencyjny” N-ty rząd. Gęstość widmowa mocy takiego sygnału jest proporcjonalna do kwadratu modułu współczynnika transmitancji filtru kształtującego. Zatem ta metoda analizy widmowej sprowadza się do wyznaczenia współczynników filtra danego rzędu, oszacowania mocy wzbudzającego białego szumu i analitycznego obliczenia gęstości widmowej mocy. Aby określić współczynniki modelu, błąd jest minimalizowany prognoza liniowa sygnał. Z analizy teoretycznej wynika, że ​​optymalne współczynniki modelu wyznacza jedynie funkcja korelacji sygnału.

W praktyce nie znamy prawdziwej funkcji korelacji badanego sygnału, dlatego w celu zminimalizowania błędów predykcji stosujemy szacunki CF uzyskany przez uśrednienie czasu. Był zaprojektowany cała linia metody analizy autoregresyjnej, które różnią się głównie podejściem do przetwarzania efektów brzegowych (czyli sposobem włączania do obliczeń tych próbek sygnału brzegowego, dla których przy obliczaniu CF nie znaleziono pary przesuniętej). Pakiet Signal Processing implementuje metodę Burg, metodę kowariancji, zmodyfikowaną metodę kowariancji oraz metodę autoregresyjną Yule-Walker.

Metody analizy widma autoregresyjnego najlepiej nadają się do sygnałów, które są rzeczywiście procesami autoregresyjnymi. Ogólnie, ładne wyniki metody te dają, gdy widmo analizowanego sygnału ma wyraźnie określone piki. W szczególności takie sygnały zawierają sumę kilku sinusoid z szumem.

Przy stosowaniu metod autoregresyjnych ważne jest, aby prawidłowo wybrać kolejność modelu autoregresyjnego – musi to być dwukrotność liczby oscylacji sinusoidalnych, które rzekomo są zawarte w analizowanym sygnale.

Każda metoda analizy autoregresyjnej w pakiecie Signal Processing odpowiada dwóm funkcjom - funkcji obliczania współczynników modelu oraz funkcji samej analizy spektralnej. Funkcja analizy widmowej wywołuje funkcję do obliczania współczynników modelu, a następnie oblicza widmo. Nazwy funkcji podsumowano w poniższej tabeli.

Nazwa metody

Funkcja obliczania współczynnika modelu

Funkcja analizy spektralnej

metoda kowariancji arcow pcov
Zmodyfikowana metoda kowariancji ramię pmcov
Metoda Berga Arburg pburg
Metoda autoregresyjna Youle-Walker aryule pyulear

Wykładniczo skorelowany losowy sygnał utworzony w powyższym przykładzie jest procesem autoregresyjnym pierwszego rzędu, więc wymienione metody analizy spektralnej są do tego całkiem adekwatne. Stosujemy metodę Berga ustawiając rząd modelu autoregresyjnego równy jeden (jest to drugi parametr funkcji pburg):

pburg(X, 1, , 1)

Powstała gładka krzywa praktycznie pokrywa się z teoretycznym widmem tego losowego procesu.

Metoda MUSIC (MUltiple SIgnal Classification) jest przeznaczona do analizy widmowej sygnałów będących sumą kilku sinusoid (a dokładniej w ogólnym przypadku kilku złożonych wykładników) z białym szumem. Celem analizy widmowej takich sygnałów z reguły nie jest obliczenie widma jako takiego, ale określenie częstotliwości i poziomów (amplitud lub mocy) składowych harmonicznych. Metoda MUZYKA jest specjalnie do tego zaprojektowana, dlatego nazywa się zależność poziomu sygnału od uzyskanej za jego pomocą częstotliwości pseudospektrum(pseudospektrum).

Metoda opiera się na analizie wartości własnych i wektorów własnych macierzy korelacji sygnałów. Wykonując analizę, musisz określić kolejność modelu, czyli liczbę złożonych wykładników, które mają zawierać się w sygnale.

W pakiecie Signal Processing metoda MUZYKA jest zaimplementowana za pomocą funkcji pmuzyka i funkcja muzyka podstawowa umożliwia uzyskanie oszacowań częstotliwości i mocy składowych harmonicznych sygnału.

Bliskim krewnym MUSIC jest metoda wektorów własnych (EV). Jedyną różnicą jest to, że we wzorach obliczeniowych wektory własne są mnożone przez współczynniki wagowe odwrotnie proporcjonalne do odpowiednich wartości własnych. W literaturze istnieją dowody na to, że metoda EV generuje mniej fałszywych pików widmowych niż MUSIC i ogólnie lepiej odtwarza kształt widma szumu.

W pakiecie Signal Processing metoda EV realizowana jest za pomocą funkcji peig i funkcja korzeń umożliwia uzyskanie oszacowań częstotliwości i mocy składowych harmonicznych sygnału.

Należy podkreślić, że pseudowidma nie są estymatami rzeczywistego widma gęstości mocy, a jedynie widmami pseudoestymacje, które umożliwiają oszacowanie częstotliwości składowych sygnału sinusoidalnego lub wąskopasmowego z rozdzielczością nieco wyższą niż rozdzielczość metod autoregresyjnych.

Dyskretna transformata Fouriera, stosowana we wszystkich nieparametrycznych metodach estymacji widmowej, implikuje okresową kontynuację analizowanego fragmentu sygnału. W takim przypadku na połączeniach fragmentów mogą wystąpić przeskoki, prowadzące do pojawienia się płatów bocznych o znacznym poziomie w obszarze widmowym. Aby zmniejszyć ten efekt, sygnał przed wykonaniem DFT jest mnożony przez zanikanie od środka do krawędzi funkcja wagi (okno). W rezultacie zmniejsza się wielkość skoków na połączeniach segmentów, a także zmniejsza się poziom niechcianych listków bocznych widma - ceną za to jest pewne rozszerzenie pików widmowych.

Oprócz analizy spektralnej, funkcje wagowe są wykorzystywane w syntezie filtrów nierekurencyjnych przez odwrotną transformację Fouriera pożądanej odpowiedzi częstotliwościowej. W tym przypadku pozwalają one na zwiększenie tłumienia sygnału w paśmie zaporowym filtra z powodu pewnego rozszerzenia pasma przepustowego.

Obecnie pakiet Signal Processing zawiera kilkanaście funkcji wagowych. Rozkład niektórych z nich wynika z prostoty obliczeniowej, podczas gdy inne są w pewnym sensie optymalne.

Najprostsze to prostokątne okno realizowane przez funkcję prostować(w wersjach pakietów wcześniejszych niż 5.0 włącznie funkcja ta miała nazwę samochód pudełkowy). Prostokątne okno odpowiada brakowi wag, funkcja ta jest zawarta w pakiecie tylko dla formalnej kompletności zestawu funkcji wag. Trójkątne okno jest realizowane przez funkcję triang, okno Bartletta również ma kształt trójkąta (funkcja Bartlett), różni się tylko nieznacznie sposobem obliczania.

Kilka funkcji wagi to kombinacje składowych harmonicznych. Podajemy je w porządku rosnącym według liczby wyrazów cosinusowych:

  • Okno Hanny (funkcja Hanna), czasami błędnie nazywane oknem Hanninga, jest pojedynczym terminem cosinusowym.
  • Okno Hamminga (funkcja łomotanie) to jeden wyraz kosinusoidalny.
  • Okno Blackmana (funkcja czarnoskóry) to dwa wyrazy cosinus.
  • Okno Blackmana-Harrisa (funkcja blackmanharris) to trzy wyrazy cosinus.
  • Okno Nuttall (alternatywna wersja okna Blackmana-Harrisa, funkcja nuttallwin) to trzy wyrazy cosinus.

Pozostałe okna opisane są bardziej złożonymi zależnościami matematycznymi. Kształt okna Gaussa (funkcja Gausswina) nie wymaga wyjaśnienia. Zmodyfikowane okno Bartletta-Hanna (funkcja barthannwin) jest liniową kombinacją okien Bartlett i Hann. Okno Bohmena (funkcja bohmanwin) jest splotem dwóch identycznych impulsów cosinus. Okno Czebyszewa (funkcja chebwin) ma płaty boczne o stałym (określonym w obliczeniach) poziomie i jest obliczany przez odwrotną transformatę Fouriera odpowiedzi częstotliwościowej okna. Okno Kaiser (funkcja kajzer) posiada również parametr kontrolujący poziom listków bocznych i szerokość listka głównego, przy obliczaniu tego okna wykorzystywane są zmodyfikowane funkcje Bessela. Okno Tukeya (funkcja tukeywin) to prostokąt o krawędziach cosinusoidalnych. W ekstremalnych przypadkach dozwolone wartości współczynnik wygładzania, zamienia się w okno prostokątne lub okno Hanna.

Wreszcie funkcja okno udostępnia ogólny interfejs do wywoływania określonych funkcji obliczania okien.

Funkcje należące do tej kategorii obliczają różne parametry statystyczne sygnałów. Funkcje można podzielić na kilka grup.

Pierwsza grupa dotyczy obliczania funkcji korelacji i kowariancji (tu należy przypomnieć, że w terminologii krajowej i zagranicznej pojęcia te nie pokrywają się; w niniejszym przeglądzie zastosowano wersję obcą przyjętą w MATLAB). Funkcjonować xcorr pozwala ocenić funkcję korelacji sygnału lub funkcję korelacji krzyżowej dwóch sygnałów. Wariant tej funkcji, zaprojektowany do pracy z sygnałami dwuwymiarowymi, ma nazwę xcorr2. Funkcjonować xcov służy do oszacowania funkcji kowariancji sygnału lub funkcji kowariancji wzajemnej dwóch sygnałów. Funkcje cov oraz korkoef, które znajdują się w podstawowej bibliotece MATLAB, pozwalają uzyskać odpowiednio macierz kowariancji i macierz współczynników korelacji poprzez uśrednienie kilku realizacji danych losowych. Funkcjonować corrmtx zwraca macierz danych pośrednich do oszacowania macierzy korelacji sygnału, a także może zwrócić samą macierz.

Kolejna grupa funkcji oblicza charakterystyki statystyczne w dziedzinie częstotliwości przy użyciu nieparametrycznej metody Welcha (patrz wyżej). Funkcjonować csd przeznaczony do oceny wzajemna gęstość widmowa dwa procesy losowe. Może również zwrócić przedział ufności dla wynikowego oszacowania. Funkcjonować przystać do siebie daje oszacowanie kwadratu modułu funkcje wzajemnej koherencji dwa procesy losowe. Funkcjonować tfe pozwala ocenić złożony zysk system do realizacji jego sygnałów wejściowych i wyjściowych.

Wreszcie funkcja psdplot wykorzystywane przez wszystkie funkcje estymacji widmowej do wykreślania gęstości widmowej mocy. Można to również nazwać wprost - na przykład, aby wyświetlić wykres w skali liniowej zamiast domyślnej logarytmicznej, lub pokazać kilka widm na jednym wykresie.

Modelowanie parametryczne i funkcje predykcji liniowej

Pod modelowanie parametryczne rozumiany jest jako wybór pewnego modelu matematycznego procesu losowego, a następnie dobór parametrów tego modelu w celu zapewnienia maksymalnej zgodności sygnału generowanego przez model z dostępną próbką danych rzeczywistych.

Jednym z powszechnie stosowanych w praktyce jest model autoregresyjny (AR), w którym losowy sygnał jest generowany przez przepuszczenie dyskretnego białego szumu przez „czysto rekurencyjny” (tj. bez użycia opóźnionych próbek sygnału wejściowego) filtr kształtujący. Cztery funkcje pakietu przetwarzania sygnału to: Arburg, arcow, ramię oraz aryule- przeznaczone do oszacowania współczynników filtru kształtującego i dyspersji (mocy) szumu białego, który wzbudza filtr. Metody obliczeniowe stosowane przez te funkcje zostały określone wcześniej w rozdziale „Metody autoregresyjne”, gdzie mówiliśmy o autoregresyjnej analizie spektralnej.

Jeśli mamy oszacowanie złożony zysk systemów o różnych częstotliwościach, możliwe jest zbudowanie możliwego do zrealizowania modelu systemu, którego odpowiedź częstotliwościowa będzie jak najbardziej zbliżona do mierzonej. Realizowalność systemu oznacza tutaj reprezentowalność jego transmitancji jako funkcji ułamkowo-wymiernej przy danych rzędach wielomianów licznika i mianownika. Modelowanie parametryczne sprowadza się w tym przypadku do znalezienia optymalnych współczynników wielomianów licznika i mianownika transmitancji. Zadanie to rozwiązują dwie funkcje pakietu Signal Processing: funkcja invfreqs pozwala na zbudowanie modelu systemu analogowego oraz funkcji invfreqz wykonuje podobną operację dla systemów dyskretnych.

Inny wariant problemu modelowania parametrycznego polega na budowaniu modelu systemu zgodnie z dostępnym oszacowaniem jego odpowiedź impulsowa. W tym celu pakiet Signal Processing udostępnia dwie funkcje. Funkcjonować prony wykorzystuje fakt, że odpowiedź impulsowa rekurencyjnego układu dyskretnego w przypadku braku wielu biegunów jest sumą dyskretnych funkcji wykładniczych (złożonych w przypadku ogólnym). Algorytm zaimplementowany przez tę funkcję został pierwotnie opracowany w XVIII wieku przez Barona de Prony w celu dopasowania parametrów wykładniczego modelu analitycznego do danych eksperymentalnych. Stabilność powstałego systemu nie jest gwarantowana, ale pierwsza n próbki ( n- kolejność licznika transmitancji układu określonej w obliczeniach) jego odpowiedzi impulsowej dokładnie pasują do podanych.

Drugą funkcją modelowania układu z odpowiedzi impulsowej jest funkcja stmcb- nie dąży do zapewnienia dokładnego dopasowania początkowych fragmentów odpowiedzi impulsowych - zamiast tego minimalizuje odchylenie standardowe otrzymanej charakterystyki z danej, czyli sumy kwadratów modułów różnic odczytów uzyskanej i pożądanej odpowiedzi impulsowej. Funkcja realizuje iteracyjną metodę Steiglitza-McBride'a, która sprowadza się do wielokrotnego rozwiązywania układu równań liniowych ze względu na współczynniki wielomianów transmitancji pożądanego układu.

Jako przykład otrzymujemy model układu trzeciego rzędu za pomocą metod Prony'ego i Steiglitza-McBride'a, wyznaczając trójkątną odpowiedź impulsową jako próbkę:

h = ; % odpowiedzi impulsowej
= prony(h, 3, 3); % metoda Prony
= stmcb(h, 3, 3); % metoda Steiglitza-McBride
% wykresy odpowiedzi impulsowych odebranych systemów
impz(b1, a1, 30)
tytuł("Prony")
figury
impz(b2, a2, 30)
tytuł("Stmcb")

Porównanie wykresów wyraźnie pokazuje różnice między tymi dwoma algorytmami. Przy zastosowaniu metody Prony'ego pierwsze cztery odczyty uzyskanej odpowiedzi impulsowej dokładnie pokrywają się z podanymi, jednak później odchylenia od podanych wartości znacznie się zwiększają, a po zakończeniu danego fragmentu „ogon” ” obserwuje się dość duży poziom, ponieważ funkcja prony nie przyjmuje żadnych założeń dotyczących wymaganych wartości odpowiedzi impulsowej poza danym fragmentem. Funkcjonować stmcb minimalizuje kwadratowy zaprogramowany błąd odtwarzania nieskończony odpowiedź impulsowa, a na końcu wyraźnie określonego fragmentu jest uważana za równą zero. W efekcie nie ma dokładnej zgodności między odczytami danej i uzyskanej odpowiedzi impulsowej (z wyjątkiem pierwszej), ale błąd w odtworzeniu charakterystyki „rozmazuje się” bardziej równomiernie na odczytach.

Jeśli dyskretny proces losowy nie jest białym szumem, jego próbki okazują się być współzależny razem. Pozwala to, znając funkcję korelacji procesu, przewidywać wartość kolejnego zliczenia. Przewidywana wartość jest obliczana jako liniowa kombinacja poprzednich próbek procesowych. To jest główna idea prognoza liniowa. Predykcja liniowa jest wykorzystywana do parametrycznej analizy widmowej (patrz wcześniej), identyfikacji systemu, analizy sygnału mowy i kompresji danych podczas transmisji.

Modele systemowe oparte na predykcji liniowej mogą być reprezentowane w różnych formach i odpowiednio opisywane za pomocą różnych zestawów parametrów. Szereg funkcji w pakiecie Signal Processing pozwala na konwersję opisu modelu z jednej postaci do drugiej. Te funkcje są wymienione w poniższej tabeli.

ostateczny kształt

Sekwencja autokorelacji

Współczynniki odbicia

Współczynniki predykcji

Parametry arcus sinus

Stosunki logarytmiczne

Częstotliwości linii widmowych

oryginalna forma

Sekwencja autokorelacji

ac2rc, Schurrc

Współczynniki odbicia

Współczynniki predykcji

Parametry arcus sinus

Współczynniki logarytmiczne

Częstotliwości linii widmowych

Dodatkowo pakiet Signal Processing posiada kilka dodatkowych funkcji związanych z predykcją liniową. Zatem do obliczenia współczynników predykcyjnych filtrów konieczne jest rozwiązanie układu równań liniowych, którego macierz jest macierzą korelacji sygnału wejściowego. Macierz ta posiada szereg właściwości, dzięki którym możliwe jest zmniejszenie liczby operacji obliczeniowych wymaganych do rozwiązania układu równań liniowych. Po pierwsze, macierz korelacji to samodzielny(czyli nie zmienia się po zastosowaniu do niego) Koniugacja hermitowska- kombinacje transpozycji ze złożoną koniugacją). Dla rzeczywistego sygnału samosprzężona oznacza po prostu, że matryca jest symetryczna względem głównej przekątnej. Po drugie, w przypadku stacjonarnego procesu losowego (i tylko dla takich procesów można zastosować filtr predykcyjny o stałych parametrach), macierz korelacji jest Macierz Toeplitza- wzdłuż jego przekątnych równoległych do głównej są te same liczby. Wreszcie prawa strona układu równań to pierwsza kolumna macierzy korelacji przesunięta o jedną pozycję. Nazywa się układy równań liniowych z macierzami o wskazanych właściwościach układy równań Yule'a-Walkera, a aby je rozwiązać, rekursywny Metoda Levinsona-Durbina. Ten iteracyjny algorytm jest realizowany przez funkcję Levinson. Funkcjonować levinson rozwiązuje problem odwrotny - pozwala znaleźć wektor próbek funkcji korelacji sygnału dla danych współczynników predykcji liniowej.

Funkcjonować lpc realizuje obliczenia współczynników predykcji liniowej metodą autokorelacji i jest analogiem funkcji aryule(patrz wcześniejszy rozdział dotyczący parametrycznej analizy spektralnej). Te dwie funkcje różnią się tylko kodem MATLAB używanym do obliczania wyniku macierzy korelacji. Podane przez nich wyniki pokrywają się z błędami obliczeniowymi.

Funkcje generowania sygnału

Pakiet Signal Processing zawiera szereg funkcji przeznaczonych do generowania standardowych przebiegów, które są często spotykane przy rozwiązywaniu różnych problemów związanych z przetwarzaniem sygnału.

Generowanie sygnałów nieokresowych

Wszystkie funkcje generowania sygnałów nieokresowych otrzymują jako parametry wektor punktów czasowych oraz dodatkowe argumenty opisujące parametry generowanego impulsu. Zwracany wynik jest wektorem próbek sygnału wynikowego. Istnieją funkcje do generowania sygnałów o następującej postaci:

  • impuls prostokątny
  • - generowanie pojedynczego impulsu prostokątnego, jedynym dodatkowym parametrem jest czas trwania impulsu;
  • tripuls
  • - generowanie pojedynczego impulsu trójkątnego, dodatkowymi parametrami są czas trwania impulsu i jego współczynnik asymetrii; - generowanie impulsu o widmie prostokątnym, zgodnie ze wzorem sinc( x) = grzech(p x)/(p x). Ta funkcja nie ma dodatkowych parametrów;
  • Gauspuls
  • - generowanie impulsu radiowego z obwiedni Gaussa. Dodatkowymi parametrami są częstotliwość nośna, względna szerokość pasma i poziom (w decybelach), przy którym mierzona jest ta szerokość pasma;
  • gmonopuls
  • - generowanie monopulsu Gaussa (jego kształt jest pierwszą pochodną funkcji Gaussa). Dodatkowy parametr to średnia częstotliwość generowanego widma sygnału.

Generowanie sygnałów okresowych

Funkcje należące do tej grupy otrzymują jako parametry wektor punktów czasowych oraz dodatkowe argumenty opisujące parametry generowanego impulsu. Okres generowanych sygnałów wynosi 2p . Aby generować sygnały z różnym okresem, konieczne jest odpowiednie skalowanie argumentu czasu przekazywanego funkcji. Zwracany wynik jest wektorem próbek sygnału wynikowego. Istnieją funkcje do generowania sygnałów okresowych o następującej postaci:

  • kwadrat
  • - generowanie okresowej sekwencji impulsów prostokątnych. Dodatkowym parametrem jest współczynnik wypełnienia impulsów (stosunek czasu trwania impulsu do okresu ich powtarzania);
  • piłokształtny
  • - generowanie okresowego sygnału piłokształtnego. Dodatkowym parametrem jest współczynnik asymetrii impulsów trójkątnych tworzących ciąg okresowy;
  • diric
  • jest funkcją Dirichleta. Dodatkowym parametrem jest kolejność funkcji w liczbach całkowitych. Funkcja Dirichleta jest obliczana ze wzoru diric( x) = grzech( nx/2)/(n grzech( x/2));

Generowanie oscylacji ze zmienną częstotliwością

Ta grupa obejmuje dwie funkcje - ćwierkanie oraz vco. Funkcjonować ćwierkanie generuje oscylacje, których częstotliwość chwilowa zmienia się zgodnie z jednym z trzech możliwych praw - liniowym, kwadratowym lub wykładniczym. Funkcja ma więcej możliwości vco(Voltage Controlled Oscillator - generator sterowany napięciem), który pozwala generować oscylacje z dowolnym prawem zmiany częstotliwości chwilowej. W rzeczywistości ta funkcja wykonuje modulację częstotliwości.

Generowanie pociągów impulsowych

Funkcjonować pulstran służy do generowania skończonej sekwencji impulsów o tym samym kształcie z dowolnie ustawionymi opóźnieniami i współczynnikami amplitudy. Kształt impulsów można określić na dwa sposoby: przez nazwę funkcji generującej impuls lub przez już obliczony wektor próbki.

Jako przykład rozważ użycie funkcji pulstran oraz sinc przywrócić sygnał analogowy z jego dyskretnych próbek zgodnie z twierdzeniem Kotelnikowa.

t = -5:0,1:10; % czasu dla sygnału analogowego
k = 0:5; % liczba dyskretnych próbek sygnału
sd = ; % dyskretny sygnał
sa = pulstran(t, , "sinc"); % odzyskanego sygnału analogowego
stem(k, sd) % wykres sygnału dyskretnego
trzymać się
plot(t, sa, "r") % wykres sygnału analogowego
powstrzymać

Funkcje transformacji sygnału dyskretnego

Być może najbardziej znaną dyskretną transformacją sygnału jest dyskretna transformata Fouriera (DFT). Odpowiednia funkcja wykorzystująca szybką transformatę Fouriera (FFT) w MATLAB należy do kategorii funkcji przetwarzania danych i jest wbudowana (funkcje fft oraz ift- wersja jednowymiarowa, fft2 oraz ifft2- wersja dwuwymiarowa, ft-shift oraz ifftshift- permutacja połówek wektora próbek widmowych w celu przeniesienia częstotliwości zerowej na środek wektora). W rzeczywistości pakiet Signal Processing zawiera funkcje, które implementują bardziej szczegółowe przekształcenia.

Jak każda transformacja liniowa, DFT może być reprezentowana jako mnożenie macierzy transformacji przez kolumnę próbek przekonwertowanego sygnału. Ta macierz transformacji dla DFT jest obliczana przez funkcję dftmtx.

Ponownie, ze względu na liniowość DFT, każda próbka widmowa może być reprezentowana jako wynik przetwarzania oryginalnego sygnału przez jakiś filtr. Reprezentowanie tego filtra w formie rekurencyjnej daje Algorytm Herzela, realizowany przez funkcję goertzel. Jeśli trzeba obliczyć tylko niektóre próbki widmowe, ten algorytm jest szybszy niż FFT.

Bliskim krewnym DFT jest dyskretna transformata cosinus. Podczas obliczania, zamiast okresowej kontynuacji sygnału, która jest założona w DFT, sąsiednie fragmenty kontynuacji sygnału są odzwierciedlane w czasie. W efekcie sygnał staje się parzystą funkcją czasu, a jego widmo staje się rzeczywiste. Z tego powodu zamiast złożonych wykładników we wzorze DFT występują tylko cosinusy, które dały nazwę ta transformacja. Do przodu i do tyłu dyskretne transformaty cosinus są obliczane przez funkcje dct oraz idct odpowiednio.

Ważną metodą analizy dyskretnych ciągów liczbowych jest przekształcenie z, którego wynikiem jest funkcja zmiennej zespolonej z:

.

W niektórych problemach konieczne jest obliczenie z-transformacja dla punktów znajdujących się na konturze spirali: . Wydajne obliczeniowo obliczenie transformacji z wzdłuż takiego konturu wykorzystuje szybką transformację Fouriera; jest zaimplementowany w funkcji czt.

Realizując niektóre warianty algorytmu szybkiej transformacji Fouriera, w celu zwiększenia wydajności konieczne jest przegrupowanie elementów przetwarzanego wektora w odwrotna kolejność bitów(oznacza to, że w binarnych reprezentacjach numerów elementów wektora bity są odczytywane w odwrotnej kolejności, a następnie wektor jest uporządkowany zgodnie z nowymi numerami elementów). Aby wykonać taką permutację, użyj funkcji bitrevorder.

Podczas analizy sygnałów wąskopasmowych przydatne może być przedstawienie sygnału jako oscylacja o zmiennej w czasie amplitudzie i fazie początkowej. Aby uzyskać taką reprezentację, kompleks sygnał analityczny, którego część rzeczywista pokrywa się z sygnałem pierwotnym, a część urojona jest określona przez Przekształcenie Hilberta z oryginalnego sygnału. W dziedzinie częstotliwości sygnał analityczny charakteryzuje się jednostronnym widmem: jego funkcja widmowa jest niezerowa tylko dla częstotliwości dodatnich. Funkcjonować Hilbert oblicza sygnał analityczny w dziedzinie częstotliwości przez obliczenie przedniej DFT, wyzerowanie połowy widma, a następnie obliczenie odwrotnej DFT.

Jako przykład obliczmy sygnał analityczny dla prostokątnego impulsu radiowego:

s = zera (256,1);
s(65:192) = cos(pi/2*(0:127)"); % zliczeń impulsów radiowych
sa = hilbert(y); % sygnału analitycznego
f = (-128:127)/128; % wartość znormalizowanych częstotliwości dla wykresów
wykres podrzędny(2,1,1)
plot(f, abs(fftshift(fft(s)))) % rzeczywistego widma sygnału
wykres podrzędny(2,1,2)
wykres(f, abs(fftshift(fft(sa)))) % widmo sygnału analitycznego

Dolny wykres wyraźnie pokazuje zerowanie widma w obszarze częstotliwości ujemnych i jego podwojenie w obszarze częstotliwości dodatnich.

Analiza cepstralna

Analiza cepstralna jest związana z homomorficznym przetwarzaniem sygnału. Takie przetwarzanie jest zgodne z uogólnioną zasadą superpozycji: jeśli sygnał wejściowy systemu jest kombinacją kilku sygnałów uzyskanych za pomocą operacji matematycznej ALE, to na wyjściu wyniki przetwarzania poszczególnych sygnałów są łączone za pomocą operacji B. Analiza cepstralna znalazła zastosowanie w szczególności w problemach przetwarzania mowy. Pakiet Signal Processing posiada kilka funkcji związanych z analizą cepstralną.

Funkcjonować ceps oblicza rzeczywiste cepstrum sygnału, ignorując informacje zawarte w widmo fazowe. Ta sama funkcja pozwala uzyskać rekonstrukcja minimalna faza sygnał. Zera z-transformacje sekwencji odczytów takiego sygnału leżą na płaszczyźnie zespolonej wewnątrz okręgu jednostkowego, a jego cepstrum pokrywa się z cepstrum oryginalnego sygnału.

Złożone cepstrum obliczone za pomocą funkcji ceps, uwzględnia zarówno informacje o amplitudzie, jak i fazie, więc jego związek z oryginalnym sygnałem jest jeden do jednego. Przekształcenie odwrotne, czyli obliczenie sygnału ze znanego złożonego cepstrum, wykonuje funkcja lody.

Zmiana częstotliwości próbkowania

Transformacje obejmują grupę funkcji, które zmieniają częstotliwość próbkowania sygnału. Najczęściej częstotliwość próbkowania należy zmienić o liczbę całkowitą liczbę razy. W przypadku zwiększania częstotliwości próbkowania operacja ta nazywa się interpolacja, a w przypadku spadku - rębnia(dziesiątkowanie). Każde ponowne obliczenie częstotliwości próbkowania wymaga wykonania kilku kroków po kolei. Pakiet Signal Processing zawiera funkcje, które realizują zarówno poszczególne działania, jak i ich niezbędne sekwencje.

Aby wykonać interpolację między próbkami sygnału, wstawiana jest wymagana liczba zer (funkcja nadpróbkowanie), odebrany sygnał przechodzi przez filtr dolnoprzepustowy. Te dwa etapy są łącznie realizowane przez funkcję interp.

W celu przeprowadzenia decymacji sygnał przechodzi przez filtr dolnoprzepustowy, a następnie każdy N-ty licznik (funkcja próbkowanie w dół). Te dwa etapy są łącznie realizowane przez funkcję zdziesiątkować.

Połączenie operacji interpolacji i pocieniania umożliwia zmianę częstotliwości próbkowania o współczynnik wyrażony przez dowolny ułamek wymierny. Aby zwiększyć wydajność obliczeń, takie przeliczenie wykonuje wyspecjalizowana funkcja ponownie próbkować, a to z kolei wywołuje funkcję upfirn(wstawianie zer, filtrowanie i dziesiątkowanie). Główna różnica między tymi dwiema funkcjami polega na tym, że upfirn pozwala ustawić odpowiedź impulsową zastosowanego filtra, a podczas korzystania z funkcji ponownie próbkować filtr jest obliczany automatycznie.

Wreszcie, do absolutnie arbitralnego przeliczania momentów odniesienia można użyć wspólnych funkcji interpolacyjnych zawartych w podstawowej bibliotece MATLAB, takich jak interp1 oraz splajny.

Jako przykład przeprowadźmy interpolację sygnału użytego powyżej, aby zademonstrować funkcje pulstran oraz sinc, zwiększając częstotliwość próbkowania czterokrotnie. Zero próbek jest dodawane wzdłuż krawędzi sygnału, ponieważ funkcja interp wymaga, aby oryginalna sekwencja miała co najmniej dziewięć próbek.

sd = ; % oryginalny sygnał
t = 0:9; % dyskretny czas dla oryginalnego sygnału
sd4 = interp(sd, 4); % interpolacji
t4 = (0:39)/4; % dyskretny czas dla sygnału interpolowanego
stem(t, sd) % wykres pierwotnego sygnału
trzymać się
plot(t4, sd4, "x") % wykres sygnału interpolowanego
powstrzymać

Na powyższym wykresie oryginalny sygnał jest oznaczony „łodygami”, a sygnał interpolowany jest oznaczony krzyżykami.

Ta grupa zawiera dość duża liczba Funkcje. Wiele z nich jest przeznaczonych przede wszystkim do „użytku wewnętrznego” - wywoływane są przez inne funkcje w pakiecie. Jednak szereg funkcji z tej kategorii ma całkowicie niezależną wartość.

Funkcjonować bufor pozwala na reprezentację wektora próbek sygnału w macierzy kolejnych ramek, a ramki te mogą na siebie nachodzić.

Funkcje mod oraz demod wykonać odpowiednio modulację i demodulację. Obsługiwane są następujące typy modulacji: amplituda, nośna tłumiona amplitudą, wstęga pojedyncza, faza, częstotliwość, kwadratura, szerokość impulsu, impuls czasowy.

Funkcje kodować oraz udecode implementują, odpowiednio, jednolitą kwantyzację i przywracanie sygnału przez liczbę poziomów kwantyzacji.

Funkcjonować paski jest przeznaczony do wyświetlania wykresu sygnału w kilku liniach. Jest to przydatne, jeśli chcesz się przyjrzeć długi sygnał całkowicie, a rozdzielczość wzdłuż osi pionowej nie ma większego znaczenia.

Rodzina funkcji, których nazwy zaczynają się od symboli dpss, jest przeznaczony do obliczania dyskretnych funkcji sferoidalnych prolate i pracy z bazą danych zaprojektowaną do przechowywania obliczonych funkcji. Dyskretne funkcje sferoidalne prolate są używane w analizie widmowej metodą Thomsona (patrz rozdział „Funkcje analizy widmowej i statystyczne przetwarzanie sygnału”, podrozdział „Metody nieparametryczne”) powyżej.

Funkcje cell2sos oraz sos2cell pozwalają przechowywać informacje o filtrze, prezentowane w postaci sekwencyjnie dołączonych sekcji drugiego rzędu, nie tylko w postaci macierzy, ale także w postaci tablicy komórek. Te dwie funkcje konwertują widok między określonymi dwoma formularzami.

Funkcjonować spektgram oblicza spektrogram sygnału, czyli widma kolejnych fragmentów sygnału wybranych za pomocą przesuwanego okna. Wyniki obliczeń mogą być zwracane w postaci macierzy lub wyświetlane w kolorze we współrzędnych czasowo-częstotliwościowych.

Funkcjonować cplxpair wybiera zespolone pary sprzężone w wektorach liczb zespolonych.

Funkcjonować eqtflength umożliwia wyrównanie długości dwóch wektorów poprzez dopełnienie krótszego zerami na końcu.

Funkcjonować sekwencja służy do sprawdzenia okresowości elementów wektora i określenia okresu ich powtarzania.

Program do syntezy i analizy filtrów FDATool (Filter Design & Analysis Tool) jest powłoką do wywoływania funkcji syntezy i analizy filtrów dyskretnych. Jeśli masz zestaw narzędzi do projektowania filtrów ten program pozwala również na analizę efektów związanych z kwantyzacją współczynników filtra oraz wykonywanie konwersji typu filtra (LPF na HPF itp.).

Program pozwala nie tylko obliczać filtry od podstaw, ale także zapisywać i wczytywać sesje robocze, edytować wcześniej zapisane filtry. Ponadto można zaimportować opis filtra z obszaru roboczego MATLAB lub z plików w formacie XILINX CORE Generator (*.coe). Zaimportowane filtry mogą być tylko analizowane.

Podczas analizy możesz zobaczyć następujące cechy filtra (w najnowsze wersje pakiet, możesz przeglądać kilka wykresów jednocześnie):

  • Charakterystyka amplitudowo-częstotliwościowa (AFC).
  • Odpowiedź fazowa (PFC).
  • AFC i PFC jednocześnie.
  • opóźnienie grupowe.
  • opóźnienie fazowe.
  • odpowiedź impulsowa.
  • charakterystyka przejścia.
  • Lokalizacja zer i biegunów na płaszczyźnie zespolonej.
  • Współczynniki filtrowania.
  • Informacje o strukturze filtra.

Obliczony filtr można zastosować w następujący sposób:

  • Zapisz sesję do późniejszego załadowania do programu FDATool w celu dalszej edycji i analizy.
  • Eksport do obszaru roboczego MATLAB.
  • Eksportuj do pliku tekstowego.
  • Eksportuj do pliku MAT.
  • Eksport do pliku nagłówkowego (*.h) języka C.
  • Eksportuj do SPTool (patrz poniżej).

Poniższy rysunek przedstawia widok okna programu FDATool z wynikami obliczeń eliptycznego filtru dolnoprzepustowego metodą dwuliniową z-transform. Wyświetlane są wykresy odpowiedzi częstotliwościowej i opóźnienia grupowego.

Program do przetwarzania sygnałów SPTool (Signal Processing Tool) umożliwia wykonywanie następujących operacji: importowanie sygnałów z plików MAT lub obszaru roboczego MATLAB; przeglądać wykresy sygnałów (w tym kilka jednocześnie); stosuje się do sygnałów różne metody analiza spektralna i przeglądanie wynikowych wykresów; obliczać filtry dyskretne za pomocą funkcji pakietu (m.in. poprzez bezpośrednią edycję położenia zer i biegunów); przepuszczać sygnały przez filtry i analizować powstałe sygnały wyjściowe.

Należy zauważyć, że pod względem analizy i syntezy filtrów możliwości programu SPTool są węższe niż programu FDATool (jedynym wyjątkiem jest możliwość bezpośredniej edycji położenia zer i biegunów, czego w FDATool nie ma) . Jednak te ograniczenia są niwelowane przez możliwość eksportu obliczonego filtra z FDATool do SPTool.

Poniższe rysunki przedstawiają widok okna programu SPTool podczas przeglądania wykresu sygnału, analizy widma oraz edycji położenia zer i biegunów filtra.

Program do syntezy i analizy funkcji wagowych (okiennych) WinTool (Window Design and Analysis Tool), który pojawił się w wersji pakietu 6.0 (R13), jest powłoką do wywoływania dostępnych w pakiecie funkcji obliczeniowych okien. Pokazuje to charakterystykę okna (lub kilku okien jednocześnie) w dziedzinie czasu i częstotliwości.

Poniższy rysunek przedstawia widok okna programu WinTool z wynikami obliczenia okna Czebyszewa 64. rzędu z poziomem listków bocznych widma -100 dB. Wyświetlany jest wykres w domenie czasu okna i jego widmo.

Konstrukcja filtra cyfrowego

4.1.1. Podstawowe definicje projektowania filtrów cyfrowych

Filtr cyfrowy (DF) jest szeroko rozumiany jako dowolny system cyfrowy, który wyodrębnia sygnał cyfrowy lub jego parametry z mieszanki istniejącej na wejściu układu sygnał zakłócający.

Filtr cyfrowy w wąskim sensie to obwód selektywny częstotliwościowo, który zapewnia selekcję sygnały cyfrowe według częstotliwości.

Filtry cyfrowe w szerokim znaczeniu obejmują:

korektory amplitudy i fazy charakterystyk częstotliwościowych;

wyróżniki;

transformatory Hilberta;

dopasowane filtry.

Filtry cyfrowe w wąskim sensie obejmują filtry selektywne częstotliwościowo:

Filtr dolnoprzepustowy (LPF);

Filtr górnoprzepustowy (HPF);

Filtr pasmowoprzepustowy (PF);

Filtr wycinający (RF).

Filtry cyfrowe można zaimplementować:

sprzęt komputerowy;

Programowo;

Oprogramowanie sprzętowe.

Implementacja sprzętowa implikuje użycie elementów funkcjonalnych w postaci rejestrów, sumatorów, mnożników, urządzeń pamięci, elementów logicznych.

Wdrażanie oprogramowania oznacza, że ​​filtr jest prezentowany jako program napisany w języku programowania.

Implementacja sprzętowo-programowa oznacza, że ​​część funkcji filtrowania jest wykonywana sprzętowo (ADC, DAC, mnożenie, odbiór/transmisja danych), podczas gdy pozostała część funkcji jest realizowana w oprogramowaniu.

Przez konstrukcję filtra cyfrowego rozumie się proces, w wyniku którego prezentowany jest program lub urzadzenie cyfrowe spełniający podane wymagania.

Projekt filtra cyfrowego obejmuje następujące kroki:

1. Synteza.

2. Opracowanie algorytmów obliczeniowych.

3. Weryfikacja przez symulację.

4. Praktyczne wdrażanie i debugowanie.

wynik synteza jest schemat strukturalny filtr oraz zbiór współczynników i równań różnicowych i transmitancji.

Opracowanie algorytmu obliczeniowego zależy od pojemności rejestrów, ilości baterii procesora, możliwości zrównoleglania operacji, obecności urządzeń mnożących i akumulacyjnych. Ostateczny algorytm powinien zapewnić działanie filtra w czasie rzeczywistym z minimalną utratą jakości.

Weryfikacja symulacji odbywa się w nierzeczywistej skali czasu według standardowych sygnałów za pomocą emulatorów programowych. Jednocześnie eliminowane są błędy logiczne i sprawdzana jest zgodność filtra z określoną charakterystyką.

Praktyczne wdrożenie i debugowanie przeprowadzane w czasie rzeczywistym za pomocą modułów debugowania.



Informacje ogólne o syntezie CF

Podczas procesu syntezy wykonywane są następujące etapy:

Ustawiono wymagania dotyczące filtrów;

Oblicza się współczynniki transmitancji lub równania różnicowego;

Powstaje schemat blokowy filtra cyfrowego.

Wymagania dla filtra cyfrowego można określić w domenie czasu lub w domenie częstotliwości, w zależności od przeznaczenia filtra.

Wymagania w dziedzinie czasu są zwykle określane dla dopasowanych filtrów poprzez wymaganą odpowiedź impulsową.

Wymagania w dziedzinie częstotliwości są zwykle określane dla filtrów selektywnych częstotliwości.

Na przykład wymagania dotyczące filtra pasmowoprzepustowego charakteryzują pięć pasm częstotliwości (rysunek 2.1):

Centralna przepustowość (PP);

Dwa tory zatrzymania (PZ1, PZ2);

Dwa pasy przejściowe.

Rysunek 2.1 - schemat wymagań dotyczących odpowiedzi częstotliwościowej PF

Rysunek 1 pokazuje:

Częstotliwość graniczna pierwszego pasma zatrzymania PZ1, którego szerokość ;

Częstotliwość odcięcia lewego pasma przepustowego;

Właściwa częstotliwość odcięcia pasma przepustowego, przepustowość ;

Częstotliwość graniczna drugiego pasma opóźnienia PZ2, którego szerokość ;

Paski przejściowe 1 i 2 mają szerokość , , odpowiednio.

Wartość charakteryzuje maksymalne dopuszczalne odchylenie odpowiedzi częstotliwościowej od 1 w paśmie. Wartość charakteryzuje maksymalne dopuszczalne odchylenie odpowiedzi częstotliwościowej od 0 w pasmach zatrzymania. Wymagania dotyczące charakterystyki odpowiedzi częstotliwościowej w pasmach przejściowych zwykle nie są określone.

Istnieją następujące rodzaje metod syntezy:

Bezpośrednie metody syntezy;

Metody syntezy z wykorzystaniem prototypu analogowego.

Metody bezpośrednie dzielą się na dwie kategorie:

Najlepsze praktyki;

metody nieoptymalne.

W najlepsze praktyki metody numeryczne służą do znalezienia minimum danej funkcji jakości. Jako minimalną miarę odchylenia charakterystyki filtra od zadanej stosuje się stopę błędu:



. (2.1)

Metody nieoptymalne umożliwiają uproszczenie obliczeń poprzez uwzględnienie specyfiki problemu.

Część teoretyczna do tej pracy laboratoryjnej zawarta jest w samouczku „Metody syntezy filtrów cyfrowych” (plik filtrs\lecture_dsp.doc)

  1. Praca z programem qedesign 1000.

Uruchom plik QED.exe, aby pobrać system projektowania filtrów cyfrowych QEDESIGN 1000.

W otwartym menu głównym wybierz podmenu Projekt, otworzy się okno umożliwiające określenie typów filtrów do obliczeń:

Rys.1. Menu „Projekt” Rys.2. Menu opcji

Tutaj możesz wybrać rodzaj metody obliczania filtru dla filtru do obliczenia:

1. Obliczenie filtra IIR (IIR Design).

w przypadku filtrów IIR dodatkowo otwórz menu Opcje i wybierz jedną z metod

    Transformacja dwuliniowa

    metoda niezmiennej odpowiedzi impulsowej (Impulse Invariant)

2. Obliczanie filtru FIR metodą ważenia za pomocą okna (FIR Design (Windows))

3. Obliczanie filtru FIR metodą filtrów optymalnych (FIR Equiripple FIR Filter Design)

Wybierz żądaną metodę, klikając lewym przyciskiem myszy.

1 - filtr dolnoprzepustowy (Lowpass)

2 - filtr górnoprzepustowy (Highpass)

3 - filtr pasmowy (Bandpass)

4 - filtr wycinający (Bandstop)

Po wybraniu typu filtra otworzy się okno do ustawiania parametrów filtra.

Rys.3. Okno do ustawiania parametrów filtra dolnoprzepustowego

Rys 4. Okno do ustawiania parametrów filtra górnoprzepustowego

W tym oknie musisz ustawić:

Częstotliwość próbkowania F d

Częstotliwości odcięcia pasma przepustowego Wп (częstotliwość pasma przepustowego)

Częstotliwości odcięcia pasma opóźnienia Wз (Stopband Frequency)

Ripple (tłumienie) w paśmie przepustowym (Passband Ripple)

Ripple (tłumienie) w paśmie opóźnienia (Stopband Ripple)

Czyniąc to, pamiętaj:

dla filtrów dolnoprzepustowych Wp

dla filtrów górnoprzepustowych Wп>Wз

dla filtrów pasmowych Wп1

dla filtrów karbowych Wp1

Częstotliwości odcięcia muszą być mniejsze niż częstotliwość próbkowania podzielona przez 2.

Typowy zakres tętnienia (zaniku):

w paśmie 0,1 - 3 dB

w paśmie opóźnienia 20 - 100 dB

Wypełnij wszystkie pola i kliknij przycisk „Akceptuj”.

D
następnie przejdź do menu głównego i wybierz pozycję menu „Start”.

Na tym ekranie dla filtrów IIR okno rys.1. 5.

Rys 5. Okno obliczania filtrów IIR

Typ prototypowego filtra analogowego (wybierz typ filtra analogowego):

1- Butterworth;

2 - Czebyszew;

3 - odwrócony Czebyszew;

4 - eliptyczny;

5 - Bessela;

Kolejność filtrów (wprowadź żądane zamówienie)

Kolejność filtrów musi być wielokrotnością 2; być nie większa niż szacowana kolejność (Szacowana kolejność filtrów).

Dla filtrów FIR obliczonych metodą okienkową otwiera się okno, ryc. 6

Ryż. 6. Okno do obliczania filtrów FIR metodą okienkową.

Oto możliwe funkcje okna wraz z zalecaną liczbą próbek szacowanego zamówienia:

1 - prostokątny;

2 - trójkątny;

4 - Hamminga;

5 - Murzyn;

i inni.

Wybierz liczbę stuknięć filtra (wprowadź pożądaną liczbę stuknięć)

Liczba odczytów nie powinna być mniejsza niż 2 i nie większa niż zalecana.

Aby uzyskać optymalne filtry FIR, wybierz:

Szacowana liczba kranów

Liczba odczytów nie powinna być mniejsza niż 3 i nie większa niż zalecana.

Użytkownik ma możliwość wyświetlania na ekranie oraz na drukarce następujących wykresów:

Dla filtrów IIR:

Charakterystyka amplitudowa (Magnitude)

Odpowiedź fazowa (Faza);

Bieguny i zera transmitancji (bieguny i zera);

Charakterystyka opóźnienia grupowego (Group Delay);

Dla filtrów FIR:

Charakterystyka amplitudowa (Magnitude);

Odpowiedź amplitudowa w skali logarytmicznej (Log10 Magnitude);

odpowiedź impulsowa (odpowiedź impulsowa);

Odpowiedź przejściowa (odpowiedź krokowa);

Otworzy się menu do zapisywania wyników, Rys.7.

Ryż. 7. Zapisz menu wyników

Do zapisywania wyników używana jest wspólna nazwa pliku (np. filtr1).

W przypadku wybrania opcji Zapisz specyfikacje problemu specyfikacja filtra zostanie zapisana w pliku *.spc.

W przypadku wybrania opcji Utwórz plik współczynników kwantyzowanych współczynniki filtru zostaną zapisane. System dokonuje kwantyzacji współczynników filtra. Opcja Współczynniki kwantyzacji musi być zawsze zaznaczona. W przeciwnym razie współczynniki filtra nie zostaną zapisane.

Na ryc. 8. pokazuje okno do ustawiania parametrów kwantyzacji, które zawiera również informacje o tym, jak zaimplementowany jest filtr.

Ryż. 8. Menu opcji kwantyzacji

W przypadku filtrów IIR możliwe są dwa typy implementacji:

    Forma kaskadowa z blokami drugiego rzędu w formie bezpośredniej (sekcja kaskadowa transponowana drugiego rzędu);

    Forma kaskadowa z blokami drugiego rzędu w formie kanonicznej (kaskadowa sekcja kanoniczna drugiego rzędu);

    Forma równoległa prosta z blokami drugiego rzędu (Sekcja drugiego rzędu transponowana równolegle);

    Sekcja drugiego rzędu transpozycji równoległej (Sekcja drugiego rzędu transpozycji równoległej);

Wyniki obliczeń współczynników filtrów zapisywane są w pliku *.flt.

Poniżej znajduje się przykład zawartości pliku skwantowanych współczynników filtru pasmowego.

PLIK WSPÓŁCZYNNIKA FILTRA

TYP FILTRA TAŚMA PRZEPUSTOWA

FILTR ANALOGOWY TYPU ELIPTYCZNY

TŁUSZCZENIE PASMA W -dB -3,0000

TŁUSZCZENIE PASMA STOP W -dB -20.0000

CZĘSTOTLIWOŚCI ODCIĘCIA PASMA .500000E+03 .600000E+03 HERTZ

CZĘSTOTLIWOŚCI ODCIĘCIA PASMA STOPER .400000E+03 .700000E+03 HERTZ

CZĘSTOTLIWOŚĆ PRÓBOWANIA .400000E+04 HERTZ

METODA PROJEKTOWANIA FILTRÓW: PRZEKSZTAŁCENIE DWULINIOWE

ZAMÓWIENIE FILTRÓW 4 0004h

LICZBA SEKCJI 20002h

NIE. KWANTYZOWANYCH BITÓW 16 0010h

TYP KWANTYZACJI - BLOKOWY PUNKT zmiennoprzecinkowy

WSPÓŁCZYNNIKI SKALOWANE DLA FORMY KASKADOWEJ II

4 FFFFFFFC /* liczba przesunięć dla ogólnego wzmocnienia */

21237 000052F5 /* ogólny zysk */

2 FFFFFFFE /* liczba przesunięć dla sekcji 1 wartości licznika */

30006 00007536 /* sekcja 1 współczynnik B0 */

21867 FFFFAA95 /* sekcja 1 współczynnik B1 */

30006 00007536 /* sekcja 1 współczynnik B2 */

1 00000001 /* liczba przesunięć dla wartości mianownika sekcji 1 */

192008 00004B08 /* sekcja 1 współczynnik A1 */

15554 FFFFC33E /* sekcja 1 współczynnik A2 */

3 00000003 /* liczba przesunięć dla sekcji 2 wartości liczników */

15490 00003C82 /* sekcja 2 współczynnik B0 */

25573 FFFF9C1B /* sekcja 2 współczynnik B1 */

15490 00003C82 /* sekcja 2 współczynnik B2 */

1 00000001 /* liczba przesunięć dla wartości mianownika sekcji 2 */

22299 0000571B /* sekcja 2 współczynnik A1 */

15636 FFFFC2EC ​​/* sekcja 2 współczynnik A2 */

2289276123046875D+00 3FCD4D8000000000 .22893000E+00 /* sekcja 1 B0 */

1668319702148437D+00 BFC55AC00000000 -.16683484E+00 /* sekcja 1 B1 */

2289276123046875D+00 3FCD4D8000000000 .22893000E+00 /* sekcja 1 B2 */

1172363281250000D+01 3FF2C20000000000 -.11723777E+01 /* sekcja 1 A1 */

9493560791015625D+00 BFEE612000000000 .94936011E+00 /* sekcja 1 A2 */

3781799316406250D+01 400E412000000000 .37818290E+01 /* sekcja 2 B0 */

6243408203125000D+01 C018F94000000000 -.62435106E+01 /* sekcja 2 B1 */

3781799316406250D+01 400E412000000000 .37818290E+01 /* sekcja 2 B2 */

1361022949218750D+01 3FF5C6C000000000 -.13610497E+01 /* sekcja 2 A1 */

9543914794921875D+00 BFEE8A6000000000 .95439489E+00 /* sekcja 2 A2 */

Implementacja struktury kaskadowej postaci filtru IIR z sekcjami drugiego rzędu w postaci kanonicznej (typ) 2

Zsyntetyzowany filtr można przedstawić jako iloczyn sekcji drugiego rzędu:

,

gdzie K jest częścią całkowitą (N=1)/2. H k (z) ma postać ogólną:

Filtr można zaimplementować za pomocą następującego formularza dla każdej sekcji drugiego rzędu w postaci kanonicznej:

Rys.9. Sekcja drugiego rzędu w formie kanonicznej

(Jaka jest istotna różnica między taką implementacją a bezpośrednią implementacją?)

Implementacja struktury kaskadowej postaci filtru FIR z sekcjami drugiego rzędu w postaci kanonicznej

Możemy się rozkładać H(z) dla systemów drugiego rzędu:

K to część całkowita (M+1)/2 (M to długość filtra).

Prosta kaskadowa implementacja filtra FIR z sekcjami drugiego rzędu:

Ryż. 10. Prosta kaskadowa implementacja filtra FIR.