Documente Academic
Documente Profesional
Documente Cultură
semnalelor
Convoluție
Curbe B-splines
Filtrare
Simulare de filtre
Simulare de filtre cu răspuns infinit la impuls
Sisteme liniare în timp continuu
Sisteme liniare în timp discret
Reprezentări liniare, invariante în timp
Forme de undă
Aplicarea de ferestre în timp
Wavelets
Găsirea de vârfuri
Analiza spectrală
Funcțiile din categoria Convoluție, realizează, după cum sugerează numele, convoluții și
corelații între două semnale. Semnalele sunt descrise cu ajutorul vectorilor nD. Cele mai
folosite funcții sunt:
convolve(a1, a2,mod,metodă) – realizează convoluție între 2 vectori(a1 și a2) ce
coincid ca și dimensiuni în funcție de mod(full, valid, same) și metodă(direct, fft,
auto). Returnează un vector de aceeași dimensiune cu a1 și a2, ce reprezintă
convoluția discretă, liniară a acestora.
correlate(a1,a2,mod,metodă) - realizează corelația între 2 vectori(a1 și a2) ce
coincid ca și dimensiuni în funcție de mod(full, valid, same) și metodă(direct, fft,
auto). Returnează un vector de aceeași dimensiune cu a1 și a2, ce reprezintă
produsul corelației lui a1 cu a2.
Familia de funcții B-splines construiesc curbe de intrapolare, bazate pe anumite puncte
de control. Cea mai cunoscută funcție dintre acestea este:
bspline(x,n) – creează un obiect ce corespunde unei curbe spline de ordin n
Pentru implementarea diverselor filtre avem la dispoziție câteva funcții în librăria SciPy,
amintim urmatoarele:
medfilt(volume, kernel_size) – realizează filtrarea mediană pe vectorul
multidimensional „volume”, cu o fereastră ale cărei dimensiuni sunt date de
kernel- size. Rezultatul va fi un vector de aceeasi dimensiune cu cel initial,
reprezentând produsul filtrării mediene pe acesta din urmă.
lfilter(b, a, x, axis, zi) – realizare un filtru cu răspuns infinit la finit la impuls. b este
coeficientul de la numărător,a cel de la numitor. Ambii sunt vectori 1D. x
reprezintă semnalul, iar zi este un vector sau o matrice ce conține condițiile
inițiale.
Funcțiile din colecțiile pentrus simulare de filtre si filtre cu răspuns infinit la impuls
implementează și convertesc diverse filtre precum filtre FIR, IIR, pe care le și pot converti la
digitale, folosind transformata biliniară. Mai pot fi implementare filtre Cebîșev, Kaiser:
bilinear(b, a[, fs]) – convertește un filtru IIR analogic în unul digital. a reprezintă
numărătorul funcției de transfer a filtrului analogic, iar b numitorul. Ca rezultat
primim 2 vectori care sunt numărătorul și numitorul funcției de transfer a
filtrului digital.
Altă familie importantă de funcții este cea pentru forme de undă(waveforms). Acestea
ajută la implementarea matematică a diverselor forme de undă(sinusoidale, pulsuri, etc.). De
exemplu:
chirp(t, f0, t1, f1[, method, phi, vertex_zero]) – creează un cosinus cu frecvență
ce variază f0 si f1 ca valoare între momentele de timp t0 si t1. Phi reprezintă
faza, dacă nu e specificat altfel, aceasta are valoarea 0. Metoda(modul de
variație a frecvenței) poate fi ‘linear’, ‘quadratic’, ‘logarithmic’, ‘hyperbolic’ și e
un parametru opțional. In mod implicit e linear. Returnează un vector ce conține
valorile cosinusului in momente de timp.
sawtooth(t[, width]) – returnează un semnal triunghiular/dinte de fierăstrău
bazat pe t(vector ce conține momente de timp) și pe width(lățimea pe care
crește pulsul)
square(t[, duty]) – returnează un semnal dreptunghiular periodic, pe baza
valorilor lui t și a duty- factor de umplere.
Pentru obținerea de ferestre din semnal biblioteca SciPy conține funcția:
get_window(window, Nx, fftbins=True) – window va da tipul ferestrei(ex: boxcar,
triang, hann), Nx va da numărul de eșantioane, fftbins e o variabila bool. Dacă e
TRUE, fereastră va fi periodică pentru a putea fi folosită în transformări Fourieri,
iar dacă e FALSE, fereastra obținută va fi una simetrică pentru folosirea
ulterioară în design-ul de filtre. Rezultatul va fi o fereastră cu Nx eșantioane de
forma window.
Familia wavelets produce “wavelets” – sunt funcții matematice ce preiau bucăți din
semnalul analizat, care sunt speciale, printr-un parametru( frecventă, periodicitate, vârfuri).
Analiza separată a acestora e mai rapidă decât prin metodele Fourier. Principiul de bază a
acestor este de a analiza datele la o scară potrivită.
Funcțiile pentru găsirea vârfurile, returnează vectori ce conțin minime, maxime, locale și
lațimea acestora în diverse semnale. Ca și exemplu putem vedea funcțiile:
argrelmin(data[, axis, order, mode]) – aici data reprezintă semnalul, axis
reprezintă axa de la care se începe analiza semnalului, implicit e 0. Order e
numărul de puncte folosite pentru comparații. Modul poate fi wrap sau clip.
Implicit e clip(tratează depașirile ca pe primul/ultimul element). Returnează
tupluri de vectori n-dimensionali, cu minimele relative pe fiecare axă.
argrelmax(data[, axis, order, mode]) - analog cu agrelmin, doar că vectorul
obținut conține maximele relative pentru fiecare axă.
Ultima familie de funcții din subpachetul signal al bibliotecii SciPy este cel pentru analiza
spectrală a semnalelor.
periodogram(x[, fs, window, nfft, detrend, …]) – returnează un vector cu
eșantioane de frecvență și un vector n-dimensional ce reprezintă densitatea
spectrală de putere a lui x(valorile la momente de timp ale semnalului).
spectrogram(x[, fs, window, nperseg, …]) – returnează o spectrogramă( ajută la
vizualizarea variațiilor de frecvență a unui semnal nestaționar în timp). Rezultatul
este alcătuit din 3 vectori. Primul conține eșantioane de frecvență, al doilea
segmete de timp, iar ultimul valorile Spectrogramei.
Acestea ar fi câteva din funcțiile subpachetului pentru procesarea semnalelor “signal”
din biblioteca SciPy, destinată limbajului de programare Python.