SCIPY Convolve

SCIPY Convolve
Podstawową koncepcją kondycjonowania jest połączenie dwóch sygnałów przy użyciu jakiejś funkcji matematycznej, aby stworzyć trzeci sygnał. Jest to najczęściej stosowana technika cyfrowego przetwarzania sygnałów. Kondycja dwóch sygnałów jest uważana za całkę jednego sygnału spoglądającego na inny sygnał. Odbywa się to podczas mnożenia z produktem skalarnym w każdym punkcie wektorów, które nakładają się.

Ta sama koncepcja konwencji jest używana w Pythonie. Tablica jest uważana za sygnał używany w funkcji SCIPY Convenve do wykonywania splotu nad wieloma jednowymiarowymi tablicami. Scipy Convulve to tablica N-Dimensional. Zwykle są to dwie lub więcej sekwencji 1-D. W tym artykule szczegółowo omówimy funkcję SCIPY z konwencją i spróbujemy dowiedzieć się o użyciu funkcji konwencjonalnej za pomocą przykładów.

SCIPY Convolve Użycie i jego składnia

Scipy Convolve służy do zwołania dwóch tablic N-wymiarowych. Oto składnia funkcji Scipy Convolve:

# Scipy.sygnał.kontrowersje (INP1, INP2, tryb = „pełny”, metoda = „auto”)

„INP1” jest pierwszą tablicą wejściową, „inp2” jest drugą tablicą wejściową i powinna mieć taką samą liczbę wymiarów jak parametr „inp1”. Parametr „trybu” jest parametrem ciągów, który określa rozmiar wyjścia; jest zdefiniowany przez trzy opcje, takie same, ważne lub pełne. Jest to opcjonalny parametr.

Tryb „pełny” wskazuje, że należy zapewnić pełne dyskretne liniowe splot wejścia i jest to tryb domyślny; Jeśli nie jest podany tryb, tryb „pełny” jest uważany za domyślny. Tryb „ten sam” zwraca dane wyjściowe jak parametr „inp1”, wyśrodkowany zgodnie z wyjściem „pełnego”.

Ostatni tryb, również tryb „prawidłowy”, zwraca elementy, które nie opierają się wyłącznie na zerowym padaniu. Parametr „metody” to kolejny parametr opcjonalny. Jest to parametr ciągu, który wskazuje, która metoda ma być używana do splotu. Wymaga również jednego z trzech argumentów; Auto, FFT i Direct. „FFT” to transformacja Fouriera, używana do wykonania splotu, wywołując wbudowaną funkcję FftConvolve.

Argument „bezpośredni” reprezentuje bezpośrednie splot, który jest podstawową definicją splotu. I wreszcie, argument „auto” jest dostarczany, w którym wymagany jest automatyczne selekcja „bezpośrednich” lub „fft”, w zależności od tego, w zależności od tego, w zależności od. Argument „auto” jest domyślny; Jeśli nic nie jest podane, „auto” jest uważane za domyślny argument.

Wyjście funkcji złącza będzie podzbiorem dyskretnego liniowego splotu INP1 z INP2. Zobaczmy poniższe przykłady, aby zrozumieć, jak wdrożyć SCIPY.

Przykład 1:

To pierwszy przykład tego artykułu, który pomoże wyjaśnić przemyślenia o teoretycznych informacjach, o których wspomnialiśmy powyżej.

W tym przykładzie wykreślamy gładki impuls w kwadratowym kształcie za pomocą okna Hann. Kod programu używa tablicy NP (wskazanej jako Sig_one) do wykreślenia krzywej i sygnału.kontrowersy () służy do zwołania sygnałów.

Zobacz pełny kod dołączony poniżej. Tutaj najpierw zaimportowaliśmy wymagane biblioteki i zadeklarowaliśmy tablicę. Po wywołaniu funkcji złącza, zaprojektowaliśmy puls. W pozostałej części kodu widać, że ustawiliśmy marginesy i wyświetliliśmy oryginał, a także filtrowaną odpowiedź impulsową i filtrowany sygnał na wykresie.

Z sygnału importu Scipy
importować Numpy jako P
importować matplotlib.Pyplot jako MTP
sig_one = p.Powtórz ([1., 0., 1.], 100)
Window_one = sygnał.okna.Hann (65)
Fitred_Res = Signal.kontrowersje (sig_one, okno_one, tryb = 'same') / sum (okno_one)
Figura_One, (axis_orig, axis_win, axis_filt) = mtp.wątki (3, 1, sharex = true)
axis_orig.Wykres (sig_one)
axis_orig.set_title („tutaj jest oryginalny puls”)
axis_orig.margines (0, 0.1)
axis_win.Wykres (Window_one)
axis_win.set_title („tutaj jest odpowiedź na impuls filtra”)
axis_win.margines (0, 0.1)
axis_filt.Wykres (Filterted_res)
axis_filt.set_title („tutaj jest filtrowany sygnał”)
axis_filt.margines (0, 0.1)
Figura_One.cicik_layout ()
Figura_One.pokazywać()

Zauważ, że kod jest wykonywany w collab Google. Google Collaboratory to narzędzie open source używane do wdrażania kodów Python. Jest to bezpłatne narzędzie i łatwo dostępne za pośrednictwem Google lub dowolnej innej przeglądarki.

Po wykonaniu kodu możesz zobaczyć fale. Patrz załączony obraz poniżej.

Przykład 2:

To jest drugi przykład tego artykułu i tutaj użyjemy metody NDIMAGE, aby wykazać funkcjonalność funkcji konwencjonalnej.

W tym przykładzie parametr „trybu” NDIMAGE bierze jeden z pięciu argumentów; owinąć, lustro, najbliższe, stałe i odbijają się. Argument „Reflect” reprezentuje połowę próbki symetrycznej rozszerzonej przez wspomnienie krawędzi. „Stała” służy do reprezentowania wszystkich wartości wykraczających poza krawędź, ale z tą samą stałą wartością.

„Najbliższy” reprezentuje określoną wartość, która jest rozszerzona przez powtórzenie końcowego piksela. „Mirror” reprezentuje środek ostatniego piksela, a argument „Wrap” reprezentuje opakowanie na przeciwną krawędź. Zobacz kod podany poniżej:

od scipy import ndimage
importować Numpy jako P
One_ARR = p.tablica ([[1, 0, 2],
[1, 1, 0],
[1, 0, 0]])
Two_arr = p.tablica ([[0, 1, 0],
[1, 1, 0],
[0, 1, 0],
[0, 1, 1],
[0, 1, 0]])
Drukuj (ndimage.convolve (One_ARR, Two_arr, tryb = „najbliższy”))

Oto dane wyjściowe powyższego kodu, czyli zwinięta tablica, jak widać.

Przykład 3:

Poniższy przykład pokaże funkcję 2D. Dwie dwuwymiarowe tablice są sprzężone przy użyciu funkcji zwolennika2d. Konwencja 2D używa dwóch dodatkowych parametrów opcjonalnych „FillValue” i „Granica”.

Parametr „granicy” przyjmuje jeden z trzech argumentów; Wypełnij, owinąć i symm. Argument „Wypełnienie” jest domyślną wartością i tablicami wejściowymi podkładu z wartością wypełniającą. Argument „Wrap” reprezentuje okrągłe warunki brzegowe. Argument „symm” reprezentuje symetryczne warunki brzegowe.

„Wartość wypełniająca” jest reprezentowana przez wartość skalarną używaną do wypełnienia tablicy wejściowej podkładki, a jej wartość domyślna wynosi 0. W załączonym kodzie obliczymy gradient obrazu.

Z sygnału importu Scipy
od scipy import misc
importować Numpy jako P
importować matplotlib.Pyplot jako MTB
Ascent_one = Misc.wzniesienie się()
Scharr_one = p.tablica ([[-3-3J, 0-10J, +3 -3J],
[-6 +0J, 1+ 0J, +6 +0J],
[-2 +2J, 0 +6J, +3 +2J]])
grad_one = sygnał.convolve2d (Ascent_one, Scharr_one, granica = „symm”, tryb = 'same')
Rysunek_one, (axis_orig, axis_mag, axis_ang) = mtb.wątki (3, 1, rysunek = (7, 16))
axis_orig.Imshow (Ascent_one, cmap = „Gray”)
axis_orig.set_title („oryginał”)
axis_orig.set_axis_off ()
axis_mag.Imshow (str.Absolute (grad_one), cmap = „Gray”)
axis_mag.set_title („wynik wielkości gradientu”)
axis_mag.set_axis_off ()
axis_ang.Imshow (str.kąt (grad_one), cmap = „hsv”)
axis_ang.set_title („wynik orientacji gradientu”)
axis_ang.set_axis_off ()
Fig_one.pokazywać()

Oto dane wyjściowe z powyższego kodu:

Wniosek

W tym artykule nauczyliśmy się funkcji SCIPY z pomocą przykładów. Najpierw omówiliśmy podstawową koncepcję funkcji konwencjonalnej, a następnie dowiedzieliśmy się o składni funkcji konwencjonalnej, a później zbadaliśmy trzy różne przykłady, aby zobaczyć funkcję SCIPY Convolve w zupełnie inny sposób.