Sunteți pe pagina 1din 200

Prelucrarea semnalelor

biomedicale

Îndrumar de laborator

Conf. dr. ing. Anca Mihaela Lazăr

2014
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
2

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
3

Introducere

Îndrumarul de laborator “Prelucrarea semnalelor biomedicale” se


adresează studenţilor de la Facultatea de Bioinginerie Medicală și conţine
lucrări de laborator ce se desfăşoară pe durata a unui semestru.
Se urmărește tematica cursului predat și fiecare lucrare de laborator
cuprinde:
- un scurt breviar teoretic ce prezintă principalele noțiuni și
metode ce fac obiectul laboratorului;
- aplicaţii rezolvate (în general coduri MATLAB), ce
evidenţiază proprietăţile, caracteristicile, concluziile trasate în
introducerea teoretică;
- aplicaţii propuse.
Aplicațiile au grad de dificultate nuanţat care să permită atât
înţelegerea metodelor prezentate, cât şi folosirea eficientă a mediului de
programare MATLAB. Aplicațiile sunt completate cu exemple din sfera
bioingineriei medicale.
Aplicaţiile propuse sunt o bună bază de plecare pentru evaluarea cât
mai obiectivă a studenților.

Conf. dr.ing. Anca Mihaela Lazăr

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
4

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
5

Cuprins
Lucrarea 1 ----------------------------------------------------------------------- 11
Introducere în MATLAB ------------------------------------------------------ 11
Comenzi, funcţii şi calcul numeric ----------------------------------------- 11
1 Considerații teoretice ------------------------------------------------------- 11
1.1 Prezentarea mediului MATLAB --------------------------------------- 11
1.2 Lansarea în lucru a programului MATLAB. Ferestre de lucru - 11
1.3 Moduri de lucru în MATLAB ------------------------------------------- 13
1.4 Informații generale. Principalele comenzi și funcții -------------- 17
1.4.1 Comenzi generale ----------------------------------------------------------- 18
1.4.2 Citirea datelor din fișiere -------------------------------------------------- 21
1.4.3 Operatori aritmetici -------------------------------------------------------- 23
1.4.4 Operatori relaţionali şi logici --------------------------------------------- 23
1.4.5 Operatori booleeni. Expresii booleene -------------------------------- 24
1.4.6 Caractere speciale ---------------------------------------------------------- 25
1.4.7 Funcţii matematice --------------------------------------------------------- 26
1.4.8 Funcţii destinate analizei datelor --------------------------------------- 26
1.4.9 Funcţii de intrare ------------------------------------------------------------ 27
1.4.10 Comenzi de control --------------------------------------------------------- 27
1.4.11 Definirea variabilelor------------------------------------------------------- 27
1.4.12 Matrici, vectori și scalari-definire și operații ------------------------- 28
1.5 Comenzi pentru reprezentări grafice -------------------------------- 33
1.5.1 Funcţii MATAB elementare pentru reprezentari grafice ---------- 33
1.5.2 Personalizarea graficilor -------------------------------------------------- 36
1.6 Signal ProcessingToolbox. Caracteristici principale -------------- 40
2 Desfăşurarea lucrării -------------------------------------------------------- 45
Lucrarea 2 ----------------------------------------------------------------------- 49
Semnale analogice ------------------------------------------------------------ 49
Seria și transformata Fourier ----------------------------------------------- 49
1 Considerații teoretice ------------------------------------------------------- 49
1.1 Seria Fourier --------------------------------------------------------------- 49
1.1.1 Seria Fourier trigonometrică --------------------------------------------- 49
1.1.2 Proprietăţi importante ---------------------------------------------------- 50
1.1.3 Seria Fourier armonică ---------------------------------------------------- 51

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
6

1.1.4 Seria Fourier sub formă de exponenţială complexă --------------- 51


1.1.5 Relaţia lui Parceval --------------------------------------------------------- 52
1.2 Transformata Fourier---------------------------------------------------- 53
2 Exemple MATLAB ------------------------------------------------------------ 53
2.1 Exemplul 1 - biosemnal ce poat fi aproximat ca fiind semnal
periodic 53
2.2 Exemplul 2 - seria Fourier a unui semnal dreptunghiular
periodic-fenomenul Gibbs ------------------------------------------------------------ 58
3 Desfășurarea lucrării -------------------------------------------------------- 59
Lucrarea 3 ----------------------------------------------------------------------- 61
Eşantionarea semnalolor analogice--------------------------------------- 61
1 Noţiuni teoretice ------------------------------------------------------------- 61
2 Exemple MATLAB ------------------------------------------------------------ 63
3 Desfășurarea lucrării -------------------------------------------------------- 71
Lucrarea 4 ----------------------------------------------------------------------- 75
Semnale discrete -------------------------------------------------------------- 75
1 Considerente teoretice ----------------------------------------------------- 75
1.1 Operaţii asupra semnalelor discrete--------------------------------- 76
1.1 Generarea unor semnale elementare ------------------------------- 78
1.2 Generarea unei secvenţe exponenţiale complexe --------------- 79
1.3 Generarea unei secvenţe exponenţiale reale --------------------- 80
1.4 Generarea unei secvenţe sinusoidale ------------------------------- 81
1.5 Generarea unei secvenţe modulate în amplitudine ------------- 81
1.6 Generarea unui semnal netezit prin mediere --------------------- 81
1.7 Proprietăți asupra variabilei independente ------------------------ 83
1.8 Proprietăți asupra aplitudinii ------------------------------------------ 85
2 Desfăşurarea lucrării -------------------------------------------------------- 86
Lucrarea 5 ----------------------------------------------------------------------- 89
Sisteme discrete liniare şi invariante în timp --------------------------- 89
1 Considerente teoretice ----------------------------------------------------- 89
1.1 Clasificarea sistemelor discrete --------------------------------------- 89
1.1.1 Sisteme statice şi dinamice ----------------------------------------------- 89
1.1.2 Sisteme discrete invariante şi variante în timp---------------------- 89

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
7

1.1.3 Sisteme discrete liniare şi neliniare------------------------------------- 90


1.1.4 Sisteme discrete cauzale şi necauzale --------------------------------- 90
1.1.5 Sisteme discrete stabile şi instabile ------------------------------------ 91

2 Aplicaţii rezolvate ------------------------------------------------------------ 91


2.1 Proprietăţile sistemelor discrete. ------------------------------------ 91
2.1.1 Proprietatea de liniaritate pentru sistemele discrete.------------- 91
2.1.2 Proprietatea de invarianţă în timp pentru sistemele discrete. -- 93
2.1.3 Proprietarea de stabilitate a sistemelor discrete (în funcţie de
răspunsul la impuls) ---------------------------------------------------------------------------- 94

3 Desfăşurarea lucrării -------------------------------------------------------- 95


Lucrarea 6 ----------------------------------------------------------------------- 97
Răspunsul sistemelor liniare invariante în timp la semnale de
intrare oarecare - Suma de convoluţie ----------------------------------- 97
1 Noţiuni teoretice ------------------------------------------------------------- 97
2 Comenzi MATLAB ------------------------------------------------------------ 98
3 Aplicaţii rezolvate ------------------------------------------------------------ 99
4 Aplicaţii propuse ------------------------------------------------------------ 104
Lucrarea 7 ----------------------------------------------------------------------107
Corelaţia şi autocorelaţia secvenţelor 1D ------------------------------107
1 Consideraţii teoretice ------------------------------------------------------ 107
1.1 Funcţia de corelaţie şi funcţia de autocorelaţie a semnalelor
deterministe discrete ----------------------------------------------------------------- 107
2 Comenzi MATLAB ----------------------------------------------------------- 110
3 Aplicații rezolvate ----------------------------------------------------------- 111
3.1 Corelația unui semnal perturbat cu zgomot aditiv -------------- 111
3.2 Corelaţia semnalelor utilizată pentru analiza morfologică a
semnalelor biomedicale-------------------------------------------------------------- 114
4 Desfăşurarea lucrării ------------------------------------------------------- 117
Lucrarea 8 ----------------------------------------------------------------------119
Transformata Fourier discretă (TFD)-------------------------------------119
aplicată secvenţelor 1D -----------------------------------------------------119
1 Noţiuni teoretice ------------------------------------------------------------ 119
1.1 Seria Fourier pentru semnale discrete periodice ---------------- 119

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
8

1.2 Transformata Fourier pentru semnale discrete aperiodice --- 120


1.3 Proprietăţile transformatei Fourier discrete---------------------- 122
2 Comenzi MATLAB folosite pentru calculul transformatei Fourier
discrete directe şi inverse --------------------------------------------------------------- 123
3 Aplicaţii rezolvate ----------------------------------------------------------- 127
3.1 Exemplul 1- transformata Fourier discretă ----------------------- 127
3.2 Exemplul 2 - proprietatea de deplasare în timp a DFT --------- 128
3.3 Exemplul 3.- proprietatea de deplasarea în frecvenţă a DFT - 130
3.4 Exemplul 4.- proprietatea de convoluţie a DFT ------------------ 131
3.5 Exemplul 5.- proprietatea de înmulţire a doua secvenţe ------ 132
3.6 Exemplul 6.- proprietatea de inversare în timp ------------------ 133
3.7 Exemplul 7. - relaţiile dintre DFT ale părţilor pare şi impare ale
secvenţelor reale periodice --------------------------------------------------------- 134
3.8 Exemplul 12.- relaţia de echivalenţă a energiilor ---------------- 135
3.9 Exemplul 13- exemplu de semnal biomedical -------------------- 135
3.10 Exemplul 14 – semnal auditiv ------------------------------------- 138
4 Desfăşurarea lucrării ------------------------------------------------------- 141
Lucrarea 9 ----------------------------------------------------------------------143
Filtre cu răspuns finit la impuls (FIR)-------------------------------------143
1 Noţiuni teoretice ------------------------------------------------------------ 143
1.1 Caracterizarea filtrelor FIR -------------------------------------------- 143
1.2 Metode de aproximare a filtrelor FIR ------------------------------ 144
1.2.1 Metoda ferestrelor ------------------------------------------------------- 144
1.2.2 Metoda eşantionării în frecvenţă ------------------------------------- 147
1.2.3 Metoda optimală --------------------------------------------------------- 148

2 Implementarea în MATLAB a filtrelor FIR ----------------------------- 148


2.1 Proiectarea filtrelor FIR cu ajutorul instrumentelor interactive
168
3 Desfăşurarea lucrării ------------------------------------------------------- 173
Lucrarea 10 ---------------------------------------------------------------------177
Filtre cu răspuns infinit la impuls (IIR)-----------------------------------177
1 Noţiuni teoretice ------------------------------------------------------------ 177
1.1 Caracterizarea filtrelor cu răspuns infinit la impuls (IIR) ------- 177

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
9

1.2 Determinarea ieșirii unui sistem canâ se cunoaște semnalul de


intrare 178
1.3 Proiectarea filtrelor IIR ------------------------------------------------- 179
1.3.1 Metoda invarianţei răspunsului la impuls -------------------------- 181
1.3.2 Metoda transformării biliniare ---------------------------------------- 182
1.4 Avantajele filtrelor IIR -------------------------------------------------- 184
2 Metode de aproximare în MATLAB a filtrelor IIR ------------------- 184
2.1 Sinteza unui filtru IIR plecându-se de la un filtru analogic
prototip 185
2.1.1 Proiectarea unui filtru analogic prototip de tip FTJ -------------- 186
2.1.2 Transformarea de frecvenţă ------------------------------------------- 187
2.1.3 Discretizarea filtrului ----------------------------------------------------- 189

4. Desfăşurarea lucrării ------------------------------------------------------- 199

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
10

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1

Introducere în MATLAB
Comenzi, funcţii şi calcul numeric

1 Considerații teoretice
1.1 Prezentarea mediului MATLAB
Scopul acestor lucrări de laborator este învăţarea unor metode
utilizate pentru prelucrarea numerică a semnalelor unidimensionale.
Instrumentul folosit, programul MATLAB, este simplu de învăţat şi
utilizat, foarte răspândit în mediile universitare şi poate fi mereu
actualizat. El integrează analiza numerică, calculul matriceal, procesarea
semnalelor și reprezentările grafice.
MATLAB (Matrix Laboratory) este un program interactiv, destinat
prelucrării numerice a datelor furnizate sub formă vectorială sau
matricială.
MATLAB-ul include și aplicații specifice, numite TOOLBOX-uri.
Acestea sunt colecții extinse de funcții MATLAB (fișiere M) care
dezvoltă mediul de programare de la o variantă la alta, pentru a rezolva
probleme diferite. În cazul procesării semnalelor se va lucra mai ales cu
Signal Processing Toolbox.
1.2Lansarea în lucru a programului MATLAB. Ferestre de lucru
Se selectează icoana specifică programului MATLAB şi apoi
MATLAB.exe. Pe monitor va apărea fereastra de comenzi ca în Figura. 1.

meniul pricipal

bara de omenzi

Figura 1 - Fereastra de comenzi a MATLAB-ului


12 Lucrarea 1

Prelucrarea semnalelor biomedicale

Meniul principal al fereastrei de comenzi asigură accesul la unele


operații ce nu se regăsesc în bara de comenzi. În cadrul acestuia selecţia
se poate face cu mouse-ul sau cu ajutorul săgeţilor prin deplasarea zonelor
active, fie prin tastarea literei marcate în fiecare subcomandă.
Pentru a deschide, din meniul principal al ferestrei de comenzi, un
fișier în Editorul / Debugger-ul MATLAB-ului, se procedează în felul
următor (Figura 2):
• pentru un fișier nou, se selectează File, apoi New, apoi New
M-file.
• pentru un fișier existent se selectează File, apoi Open M-file
și apoi se selectează fișierul dorit.

Figura 2. Selectarea din meniul de comandă a unui fişier nou sau a unuia existent

MATLAB-ul lucrează cu două tipuri de ferestre: o fereastră de


comenzi şi una de reprezentari grafice. Pot fi deschise mai multe ferestre
grafice în același timp, dar numai o singură fereastră de comenzi.
Pentru a deschide o fereastra grafica din meniul File se selectează
New apoi Figure. Pe monitor va apărea o fereastră grafică ca în Figura. 3.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 13

Semnale analogice-Seria și transformata Fourier

Figura 3. Subdomeniul File al ferestrei grafice


Tot din meniul de comandă se pot seta anumite proprietăți, legate de
formatul dorit a fi afișat1, fonturi și opțiuni de copiere.
• se selectează File, apoi Preferences

Figura 4. Selectarea din meniul de comandă a comenzii Preferences

1.3 Moduri de lucru în MATLAB


Există două moduri de lucru în programul MATLAB: în linie de
comandă sau cu programe conținute în fișiere.

1
Din meniul General se selectează formatul de ieșire, toate calculele fiind
presupuse în dublă precizie

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
14 Lucrarea 1

Prelucrarea semnalelor biomedicale

După lansarea în execuţie, programul MATLAB intră în modul


_linie de comandă", afişând prompterul >> şi aşteptând introducerea unei
comenzi de către utilizator.

Dacă nu se dorește afișarea rezultatului pe monitor, comanda trebuie


urmată de de caracterul ; care nu anulează însă reprezentările grafice.
Comanda introdusă anterior poate fi rechemată utilizând tasta ↑, în
timp ce o comandă de pe linia de comandă poate fi modificată cu ajutorul
tastelor ← și →.
Đn afara modului de lucru “în linie de comandă", MATLAB-ul
lucrează cu programe conţinute în fişiere. Fişierele ce conţin instrucţiuni
MATLAB se numesc fişiere M , fișiere pot fi privite ca macrouri ale
comenzilor MATLAB, salvate în fișiere cu extensia .m, adică numefișier.
m.
Acestea pot fi fie fișiere script fie fișiere function.
Un fişier “script" este un fişier extern care conţine o secvenţă de
comenzi MATLAB. După execuția completă a unui fișier script, toate
variabilele cu care acesta a operat rămân în zona de memorie a aplicației.
Dacă prima linie a fişierului conţine cuvântul “function" fişierul
respectiv este fişier funcţie. O funcţie diferă de un “script" prin faptul că
poate lucra cu argumente. La terminarea execuției unei funcții, în
Exemplu: comanda
>> v = 0 : 10
va crea variabila v şi va afişa elementele acesteia pe ecran.

memoria calculatorului rămân numai variabilele de ieșire ale acesteia.


Se pot adăuga funcții noi în vocabularul MATLAB utilizând unele
funcții cunoscute. Comenzile și funcțiile ce formează noua funcție trebuie
salvate într-un fișier cu extensia .m, al cărui nume este identic cu numele
noii funcții. Prima linie trebuie să conțină sintaxa de definire a noii
funcții.
Forma generală a primei linii a unui fişier funcţie este:
function [parametrii_ieşire]=nume(parametrii_intrare) cu
următoarele semnificaţii:
- function – cuvânt cheie care declară fişierul ca fişier funcţie.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 15

Semnale analogice-Seria și transformata Fourier

- nume – numele funcţiei; reprezintă numele sub care se salvează


fişierul .m; (extensia .m nu face parte din nume); acest nume nu poate fi
identic cu cel al unui fişier .m deja existent.

- parametrii_ieşire – reprezintă parametrii de ieşire ai funcţiei;


trebuie separaţi prin virgulă şi cuprinşi între paranteze drepte.
- parametrii_intrare – reprezintă parametrii de intrare ai funcţiei;
trebuie separaţi prin virgulă şi cuprinşi între paranteze rotunde.
Exemplu: Să se definească o funcție care să permită efectuarea
sumei a două matrici x, y
function z=xplusy(x,y)
z=x+y

Se salvează sub numele de xplusy.


Se va reveni la acest exemplu de definire al unei noi funcții după ce
vor fi introduse unele comenzi de bază.
MATLAB cere ca fișierele M să fie salvate fie în directorul de lucru
sau într-un director care este specificat în lista căilor din MATLAB.
Pentru a putea accesa fișierul M dintr-un anume director, trebuie ca să
adăugăm directorul/fișierul la calea MATLAB.
Se procedează în unul din următoarele două moduri:
a) se tastează butonul Path Browser din butoanele de comandă
• apare fereastra

• se tastează butonul Browse; apare fereastra

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
16 Lucrarea 1

Prelucrarea semnalelor biomedicale

• se caută fișierul respectiv și se tastează OK, apoi Add to path


din fereastra anterioară

b) path returnează căile cu care lucrează MATLAB-ul (în care


sunt căutate fișierele apelate)
• se tipărește în linia de comndă a MATLAB-ului addpath
numefișier.m, ceea ce are drept rezultat adaugarea directorului
“numefișier” la calea curentă din MATLAB. Este echivalentă cu
procedura prezentată anterior de adăugare a unei noi căi.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 17

Semnale analogice-Seria și transformata Fourier

Exemplu
addpath c:MATLAB\Bin\numefisier.m
Are ca efect adăugarea noii căi, adică fișierul numefisier.m din directorul c.

1.4 Informații generale. Principalele comenzi și funcții


În MATLAB este diferență între literele mari și cele mici2. De
exemplu: “a” și “A” sunt două nume diferite. Funcțiile sunt apelate având
numele scrise cu litere mici.
Toate calculele în MATLAB sunt efectuate în dublă precizie, dar
formatul în care se afișează datele poate fi controlat prin diferite comenzi.
Așadar numărul de digiți afișați nu este în legătură cu precizia. Pentru a
schimba formatul afișat se tastează:
● format short pentru virgulă fixă, cu 5 cifre semnificative;
● format long pentru virgulă fixă, cu 15 cifre semnificative;
● format short e pentru virgulă flotantă, cu 5 cifre semnificative
zecimale;
● format long e pentru virgulă flotantă, cu 15 cifre
semnificative zecimale;
● format short g cel mai bun dintre cel cu virgulă fixă și virgulă
flotantă, cu 5 cifre semnificative;
● format long g cel mai bun dintre cel cu virgulă fixă și virgulă
flotantă, cu 15 cifre semnificative;

2
comanda casesen off permite trecerea în modul nesesitiv
comanda casesen on permite revenirea în modul sensitiv

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
18 Lucrarea 1

Prelucrarea semnalelor biomedicale

● format bank pentru plasarea a doi digiti semnificativi la


dreapta punctului zecimal.
Exemplu
Formate diferite împreună cu afișarea pe monitor a unui vector având
componente de diferite valori.
x=[1/2 1.34e-6]
format short
x=
0.5000 0.0000
format long
x=
0.50000000000000 0.00000134000000
format short e
x=
5.0000e-001 1.3400e-006
format long e
x=

Același lucru se poate face dacă se setează din meniul File,


Preferences, General, iar aici formatul dorit (a se revedea fig.4).
1.4.1 Comenzi generale
Semnificațiile unor comenzi uzuale sunt următoarele:
● cd apelează directorul curent
Exemplu
>> cd
D:\MATLAB\bin

● dir listează fișierele din directorul curent


● dir numedirector listează fișierele din directorul
“numedirector”
● chdir schimbă directorul curent cu directorul specificat
● who și whos furnizează numele variabilelor ce au fost definite
în spațiul de lucru MATLAB.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 19

Semnale analogice-Seria și transformata Fourier

Exemplu
» who
Your variables are:

J1 dj param x1 x4
N dt s0 x2 x5
Y pad s1base1 x3 x6

 who listează variabilele curente din memorie


 whos listează variabilele, dimensiunile lor, precum și tipul
acestora (reale sau complexe).

● what listează fișierele M, MAT și MEX din directorul curent


● clear toate variabilele din memoria de lucru
● clc fereastra de comandă
● clg fereastra grafică
● diary numefișier determină copierea sesiunii de lucru (comenzi și
răspunsuri pe ecran) în fișierul “numefișier “
● home mută cursorul în colțul din stânga-sus a eranului

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
20 Lucrarea 1

Prelucrarea semnalelor biomedicale

● error și fprintf afișează informațiile de eroare; sintaxa este error


(‘error string’) având ca efect afișarea textului “error string” și
abandonarea execuțiilor comenzilor din fișierul M din care face parte
Exemplu
Se presupune ca apare urmatoarea comandă într-un fișier M:
if n<0
error('n trebuie sa fie numar pozitiv.')
end

Pentru n ≤ 0 , pe monitor apare următorul text și programul se


oprește:

??? Error using ==> numefisier

● warring are efect similar cu error numai ca execuția programului


nu este înreruptă
● help obține informații despre toate comenzile din MATLAB
● help urmat de numele unei anumite funcții sau fișier M obține
informații cu privire la respectiva funcție sau respectivul fișier M.
Exemplu:
Tastarea help sum returnează următarele informații:

SUM Sum of elements.


S = SUM(X) is the sum of the elements of the vector X. If X is
a matrix, S is a row vector with the sum over each column. For N-
D arrays, SUM(X) operates along the first non-singleton
dimension.
If X is floating point, that is double or single, S is accumulated
natively, that is in the same class as X, and S has the same class as
X. If X is not floating point, S is accumulated in double and S has
class double.
S = SUM(X,DIM) sums along the dimension DIM.

● exit, quit determină părăsirea programului

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 21

Semnale analogice-Seria și transformata Fourier

1.4.2 Citirea datelor din fișiere


Prelucrarea semnalelor implică analiza, manipularea și sintetizarea
semnalelor. Punctul de plecare pentru a desfășura oricare dintre aceste
sarcini, este de a citi un semnal înregistrat anterior. Cea mai ultilizată
fucție care citește un semnal este load.m.

Exemplul 1
Se citește un semnal ECG, ecg.txt descrărcat din baza de date
Physionet și apoi se salvează în format MATLAB (extensia mat)3. Apoi
se reîncarcă semnalul folosind noul fișier salvat.

%load in a previously downloaded ecg signal (physionet.org)


ecg_sig = load('ecg.txt'); %
http://eleceng.dit.ie/dorran/matlab/ecg.txt
% It is known that this signal was sampled at 100Hz from
physionet website
plot(ecg_sig);
ylabel('Amplitude')
xlabel('Sample Number')
len_ecg = length(ecg_sig);
save('ecg_data.mat', 'ecg_sig', 'len_ecg');
clear all;
whos
load('ecg_data.mat') % load the variables back in
whos % show that the variables have been reloaded

Semnalul ECG înregistrat este reprezentat în Figura 4.

3
http://eleceng.dit.ie/dorran/matlab/ecg.txt

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
22 Lucrarea 1

Prelucrarea semnalelor biomedicale

1.5

1
Amplitude

0.5

-0.5

-1
0 1000 2000 3000 4000 5000 6000
Sample Number

Figura 4. Reprezentarea semnalului ECG

După ce se testează whos se afișează

Name Size Bytes Class Attributes

ecg_sig 6000x1 48000 double


len_ecg 1x1 8 double

Funcțiile wavread.m și imread.m citesc date audio, respective


imagine.

Se încarcă un semnal audio și un semnal imagine4 și se redă semnalul


audio și se reprezintă semnalul imagine.

[sound_sig fs] = wavread('drums.wav');


%http://eleceng.dit.ie/dorran/matlab/drums.wav
sound('drums.wav', fs)
sound(sound_sig(1:100000))
image_signal = imread('floor_black_circle.bmp');

4
http://eleceng.dit.ie/dorran/matlab/problems/hardware_demo/

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 23

Semnale analogice-Seria și transformata Fourier

image(image_signal)

50

100

150

200

250

300

350

400

450

500
50 100 150 200 250 300 350 400 450 500

1.4.3 Operatori aritmetici


În MATLAB se utilizează următorii operatori aritmetici:

+ adunare
- scădere
* înmulțire
/ împărțire
^ ridicare la putere
‘ transpus

1.4.4 Operatori relaţionali şi logici


În MATLAB se utilizează următorii operatori relaționali și logici:

<, =<, >, >=, operatori relaționali uzuali


== operatorul de egalitate
~ = operatorul de inegalitate
& operatorul de SI logic
| operatorul de SAU logic
~ operatorul de NU logic

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
24 Lucrarea 1

Prelucrarea semnalelor biomedicale

1.4.5 Operatori booleeni. Expresii booleene


Există operatori booleeni ce conectează expresii relaţionale. Aceşti
operatori sunt &&, || şi ~ şi reprezintă operatorii şi (and), sau (or) şi
respectiv nu (not). Sunt predefinite constantele booleene true şi false ce
au valorile 1 şi repectiv 0.
Operatorul ~ este are aceeaşi prioritate ca şi operatorii + şi –.
Priorităţile celorlalţi operatori booleeni sunt respectiv && şi ||. Prioritatea
oricărui operator aritmetic sau relaţional este mai mare decât cea a
operatorilor booleeni && şi ||. In scrierea expresiilor booleene se pot
utiliza paranteze rotunde, ( şi ), pentru a grupa termeni.
Exemple. Fie variabilele a şi b cu valorile
a = 12
b = 13
Expresii booleene cu aceste variabile şi valoarea lor sunt prezentate
în exemplele următoare:

Expresie booleeană Valoare


a < 14 && b < 17 1
a > 5 && b < 7 0
a > 0 || b + 1 > 2 1
~(1 > -1) 0
În scrierea expresiilor booleene sunt utile teoremele lui De Morgan5.
Există operatori booleeni ce acţionează asupra scalarilor şi
elementelor unei matrici.
Aceşti operatori sunt &, |, şi ~. Ei reprezintă operatorii şi (and), sau
(or), şi respectiv nu (not).
Orice număr diferit de 0 este considerat că reprezintă valoarea
adevărat, orice număr 0 reprezintă valoarea fals. Operatorul ~ are aceeaşi
prioritate ca şi operatorii + şi –. Operatorii & şi | sunt operatori binari.
Priorităţile lor sunt respectiv & şi | şi mai mici decât cele ale operatorilor
aritmetici. În cele ce urmează sunt prezentate exemple de expresii
booleene.

5
~(a || b) = ~a && ~b și ~(a && b) = ~a || ~b

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 25

Semnale analogice-Seria și transformata Fourier

Expresie booleană Valoare


~1 0
~5.2 0
~-7.4 0
~0 1
a&~a 0
a | ~a 1
~1 > -1 1

Există funcţiile:
• xor cu două argumente, ce corespunde operatorului xor (sau
exclusiv). Funcţia xor are valoarea true dacă un singur argument
are valoarea true (dar nu amândouă).
De exemplu, expresia xor(0, 4) are valoarea 1, iar expresia xor(1, 4)
are valoarea 1.
• all – returnează 1 dacă toate elementele unui vector sunt
adevărate sau nenule. Operează şi cu matrici (pe coloane).
• any - returnează 1 dacă oricare din elementele argumentului sunt
adevărate sau nenule; în caz contrar returnează 0
1.4.6 Caractere speciale

= operator de atribuire
, separator (de argumente și funcții)
[] folosite pentru formarea vectorilor și a matricilor
() folosite pentru expresii aritmetice, pentru argumente ale
funcțiilor, pentru notații indirecte, pentru a repera un
element într-un vector sau matrice
: folosite în indexarea variabilelor
; indică sfârșitul unei linii
... indică faptul că se continuă comanda pe linia următoare
% indică un comentariu

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
26 Lucrarea 1

Prelucrarea semnalelor biomedicale

1.4.7 Funcţii matematice


● funcții matematice elementare

abs valoarea absolută


sqrt rădăcina pătrată
real partea reală a unei variabile complexe
imag partea imginară a unei variabile complexe
angle unghiul (faza) unei variabile complexe
conj conjugatul unei variabile complexe
rem restul unei împărțiri întregi
sign semnul unei variabile
exp exponențială
log logaritm natural
log10 logaritm zecimal

● funcții trigonometrice
cos, sin, tan, cot, sec funcțiile trigonometrice uzuale, cu
argumentul în radiani
acos, asin, atan, acot, funcțiile trigonometrice inverse
asec uzuale
cosh, sinh, tanh, coth, funcții hiperbolice
sech
acosh, asinh, atanh, funcții hiperbolice inverse
acoth, asech

1.4.8 Funcţii destinate analizei datelor

max valoarea maximă a unei variabile


min valoarea minimă a unei variabile
mean valoarea medie a unei variabile
sum suma elementelor unei variabile

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 27

Semnale analogice-Seria și transformata Fourier

cumsum suma cumulată a elementelor unei variabile


cumsqr suma pătratelor elementelor unei variabile
prod produsul elementelor unei variabile
cumprod produsul cumulaat al elementelor unei variabile
std deviația standard

1.4.9 Funcţii de intrare

input permite introducerea datelor de la tastatură


ginput permite prelucrarea datelor în mod grafic, de la
mouse sau cursor

1.4.10 Comenzi de control


if comandă pentru execuție condiționată
else, elseif comandă utilizată cu “if”
for comandă pentru crearea ciclurilor cu un număr finit
de pași
while comandă pentru crearea ciclurilor cu condiție logică
end comandă pentru încheierea ciclurilor “for”, “while”
și “if”
break comandă pentru teerminarea forțată într-un ciclu
return returnează execuția la funcția precizată
pause generează o pauză și așteaptă intervenția
utilizatorului

1.4.11 Definirea variabilelor


Variabilelor li se atribuie valori numerice, tipărindu-se direct
expresia numerică.
De exemplu
a =1+2
conduce la rezultatul
a=
3

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
28 Lucrarea 1

Prelucrarea semnalelor biomedicale

Rezultatul nu se afișează dacă se pune punct și virgulă la sfârșitul


expresiei, de exemplu
Unei variabile i se poate atribui o formulă ce utilizează operatorii
menționați anterior
a=1+2;
nu mai conduce la afișarea rezultatului.

și un număr sau variabile definite anterior. De exemplu, presupunând că


“a” este variabila definită în exemplul anterior, atunci

b=3^a
va returna valoarea
b=
27

Există și variabile speciale și constant

i, j sqrt(-1)
pi 3,1416....
ans numele implicit al unei variabile sau al unui
rezultat
eps precizia relativă în vigulă mobilă
Inf simbolul pentru infinit
NaN Not- a- Number
flaps contor al operatorilor în virgulă mobilă
nargin numărul argumentelor de intrare ale funcției
nargout numărul argumentelor de ieșire ale funcției

1.4.12 Matrici, vectori și scalari-definire și operații


MATLAB-ul este un pachet de programe care lucrează numai cu un
singur tip de obiecte și anume matrici numerice rectangulare ce au
elemente reale sau complexe. În acest sens scalarii sunt asimilaţi
matricilor cu o linie şi o coloană (1x1), iar vectorii sunt asimilaţi

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 29

Semnale analogice-Seria și transformata Fourier

matricelor cu o linie (1xn) sau o coloană (nx1). Operaţiile şi comnenzile


în MATLAB sunt asemănătoare modului de lucru obişnuit.
Definirea matricelor se face prin una din metodele:
• introducerea explicită;
• generarea prin instrucţiuni şi funcţii;
• crearea de fişiere M;
• încărcarea din fişiere de date externe.
Cea mai simplă metodă constă în utilizarea unei liste explicite.
Trebuie respectate următoarele reguli:
• elementele unei linii trebuie separate prin blancuri sau virgulă;
• liniile se separă prin punct-virgulă ”;”;
• elementele matricii sunt cuprinse între paranteze drepte “[ ] ”.
Elementele matricilor pot fi numere reale sau complexe şi orice
expresie MATLAB.
Exemplu: Matricile sunt definite introducând elementele linie cu linie:

A=[1 2 4; 3 6 8 ]

Definește matricea
1 2 4
A= 
3 6 8 
Elementele unei matrici A pot fi identificate, în MATLAB, prin
notaţia A(i,j) şi semnifică elementul de la intersecţia liniei i cu coloana j.
Pentru a face referire la un element al matrcei sunt necesari doi indici, iar
referirea la un element al unui vector se face cu un singur indice.
Se remarcă faptul că dacă se atribuie o valoare unui element care
ocupă o poziție în afara dimensiunii maxime a unei marice sau unui
vector, dimensiunea acesteia/ acestuia este mărită automat până la
valoarea indicelui noului element, iar elementele nedefinite sunt setate la
valoarea zero.
● size (A) returnează dimensiunea matricei A.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
30 Lucrarea 1

Prelucrarea semnalelor biomedicale

Exemplu: cu A definit din exemplul anterior


size(A)
returnează
ans
2 5
Se definesc un mai multe matrici speciale:
• matricea nulă
A=[]
• matricea nulă de ordin n x m :
zeros(n,m)
• matricea unitară de ordin n x m :
ones(n,m)
• matricea cu diagonală 1, de ordin n x n:
eye(n)
• maticea de ordin n x m de numere aleatoare distribuite
uniform,
rand (n,m)
• maticea de ordin n x m de numere aleatoare distribuite normal,
randn (n,m)
Vectorii pot fi definii în două moduri.
1.Primul mod utilizează elemente arbitrare:
Exemplu
v = [1 2 3 4 5 ]
ceează un vector cu 1 linie și 5 coloane. Se pot adăuga elemente la vector:
v(6)=6
ceea ce conduce la:
v=[1 2 3 4 5 6]
1 
 
Fie vectorul C = 2
 
3 
Așadar C (2 ) = 2 .

2. Al doilea mod este utilizat pentru a crea vectori cu elemente egal


spațiate. Sintaxa definirii unui astfel de vector este următoarea:
k=amin:pas:amax

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 31

Semnale analogice-Seria și transformata Fourier

Numărul din mijloc definește incrementul. Dacă acesta lipsește,


atunci implicit valoarea incrementului este 1.

Exemplu
k=0:0.5:5
ceează un vector cu elementele 0,0.5,1,1.5....5.

Se pot defini mai multe tipuri speciale de vectori:


● vector cu elemente distribuite liniar
linspace (x1,x2,N) generează un vector linie cu N elemente
distribuite liniar între valorile x1 și x2
linspace (x1,x2) generează un vector linie cu 100 de elemente
spațiate liniar între x1 și x2.
● vector cu elemente distribuite logaritmic
logspace (d1,d2,N) generează un vector linie cu N elemente
distribuite logaritmic între decadele 10^d1 și 10^d2.
logspace (d1,d2) generează un vector linie cu 50 elemente distribuite
logaritmic, egal spațiate între decadele 10^d1 și 10^d2. Dacă d2 este π ,
atunci punctele sunt între 10^d1 și pi.
● length (v) returnează lungimea vectorului v
Este posibil de a transforma o matrice cu anumite dimensiuni într-o
matrice cu alte dimensiuni.
Transformarea matricelor se face în felul următor: elementele
matricei originale se aşază într-un vector, coloană după coloană. Vectorul
obţinut se transformă într-o matrice obținând din vector coloanele noii
matrici. Funcţia ce se utilizează se numeşte reshape.m6. In continuare se
prezintă câteva exemple de utilizare a acestei funcţii.

a = [11 12 13; 14 15 16]


b=reshape(a, 3, 2)
c=reshape(a, 2, 3)
d=reshape(a, 6, 1)

6
reshape(x,m,n) returnează o matrice cu m x n ale cărei elemente sunt luate
coloană după coloană din x; trebuie ca x să aibă m x n elemente.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
32 Lucrarea 1

Prelucrarea semnalelor biomedicale

a=

11 12 13
14 15 16
b=

11 15
14 13
12 16
c=
11 12 13
14 15 16
d=
11
14
12
15
13
16

Se pot efectua diferite operații cu matrici și vectori. Astfel:


a) adunarea și scăderea
z=x+y
z=x-y
b) înmulțirea
z=x*y
c) împărțirea la dreapta
z=x/y
este identică cu x*y-1 (y-1 este inversa matricii y).
d) înmulțirea element cu element (între componentele a două
matrici de aceleași dimensiuni)
z=x.*y
e) împărțirea la stânga
z=x\y
este identică cu x-1*y (x-1 este inversa matricii x).

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 33

Semnale analogice-Seria și transformata Fourier

f) ridicarea la putere
z=x.^p
reprezintă ridicarea la puterea p a matricei x. Expresia x^p are sens
numai pentru matrici pătratice și p scalar.
g) transpunerea
z=x’
Acest lucru face ca pentru o matrice cu dimensiunea nxm să se
obțină o matrice z cu dimensiunea mxn.
h) Produsul scalar al doi vectori se calculează cu instrucțiunea
sum:
z= sum(a.*b)
1.5 Comenzi pentru reprezentări grafice
1.5.1 Funcţii MATAB elementare pentru reprezentari grafice
Funcţiile MATAB pentru reprezentarile grafice elementare sunt:
● figure creează o fereastră grafică
● image afișează o imagine
● clf șterge figura curentă
● close all închide toate ferestrele grafice
● hold on/off permisiunea/interzicerea suprapunerii reprezentărilor
grafice
● plot desenează graficul în coordonate x-y liniare
● loglog este similar cu plot, cu excepția faptului că reprezintarea
grafică este la scară logaritmică pe x și y
● semilogx, semilogy reprezintare grafică la scară semilogaritmică
pe x, respectiv pe y
● subplot reprezintare grafică într-o porțiune a ecranului
● bar reprezintă un grafic cu bare
● hist reprezintă un grafic sub forma unei histograme
● polar reprezintă un grafic în coordonate polare
Exemplu: Să se reprezinte grafic un semnal sinusoidal
x (t ) = sin( 2π 0.1t ) și un semnal y (t ) = e −0.1t x (t )
Se scrie următorul program în MATLAB.
t=0:0.1:100;
x=sin(2*pi*0.1*t);

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
34 Lucrarea 1

Prelucrarea semnalelor biomedicale

y=exp(-.1*t).*x;
subplot(211)
plot(t,x,'k'),ylabel('x(t)'),xlabel('timp sec)');
subplot(212)
plot(t,y,'k'),ylabel('y(t)'),xlabel('timp (sec)');

Se obține urmatoarea reprezentare grafică


1

0.5
x(t)

-0.5

-1
0 20 40 60 80 100
timp sec)

0.5
y(t)

-0.5
0 20 40 60 80 100
timp (sec)

● stairs reprezintă un grafic în trepte (în scară)


● legend creează legenda graficelor
● text plasarea unui text pe grafic la o poziție impusă
● gtext plasarea unui text pe grafic la poziția selectabilă cu mous-ul
● axis realizează scalarea axelor
În cele ce urmează se vor prezenta sintaxele celor mai des utilizate
comenzi. Pentru celelalte comenzi se recomandă utilizarea comenzii help.
Pentru reprezentarea graficilor în coordonate liniare se utilizează
funcția plot. Funcţia plot se apelează cu una din sintaxele:
● plot (x,y) reprezintă vectorul y funcție de vectorul x.
Dacă x este vector, iar y este matrice, atunci coloanele lui y sunt
trasate în funcție de vectorul x.
Dacă x și y sunt matrici de aceeași dimensiune, atunci se reprezintă
coloanele lui y în funcție de coloanele lui x

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 35

Semnale analogice-Seria și transformata Fourier

● plot (y)
Dacă argumentul y este complex, plot(y) este echivalent cu
plot(real(y), imag(y)).
Dacă y este un vector (linie sau coloană), atunci funcţia plot trasează
graficul y=y(i), unde i=1,2,…n este numărul de ordine al elementului y.
● plot (x,y,’linie tip’) reprezintă vectorul y funcție de vectorul x, cu
linia tip specificată
● plot (x1,y1,x2,y2,…) reprezintă simultan mai multe grafice, în
Același sistem de coordonate.
Pentru a reprezenta un grafic într-o anumită parte a ferestrei grafice
se folose;te comanda subplot având sintaxa:
● subplot(m,n,p) sau subplot(mnp) împarte fereastra grafică într-o
matrice mxn și reprezintă graficul în poziția p. Numerotarea pozițiilor se
face începând cu prima linie, apoi a doua ș.a.m.d.
● axis([xmin xmax ymin ymax]) stabilește scalarea axelor unei
reprezentari grafice curente la valorile precizate de scalarii: xmin, xmax,
ymin, ymax.
● axis(axis) “îngheață” limitele axelor la valorile curente, astfel
încât următoarele reprezentări să se facă cu aceleași limite
● axis(‘auto’) autoscalează reprezentarea grafică curentă, alegând
cele mai bune limite
● axis(‘on’) reface etichetele axelor graficelor
● axis(‘off’) șterge etichetele axelor graficelor
● axis(‘tight’) setază limitele axelor corespunzător intervalului
datelor
Reprezentarea discretă a datelor se face cu funcția stem sub forma
unor linii terminate cu cerculeț la extremitatea opusă axei. Se apelează cu
una din sintaxele:
● stem(y) trasează un grafic din linii terminate cu cerculeț, cu
elementele vectorului y
● stem(x,y) trasează un grafic din linii terminate cu cerculeț, cu
locațiile specificate de vectorul x. Valorile lui x trebuie să fie egal spațiate
și crescătoare.
● stem (x,y,’linie-tip’) Este similară funciei plot (x,y,’linie-tip’), cu
deosebirea că se trasează graficul cu linii terminale cu cerculeț.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
36 Lucrarea 1

Prelucrarea semnalelor biomedicale

● stem (x,y, ‘filled’) este similară comenzii stem(x,y) cu deosebirea


că liniile sunt terminate cu buline

Exemplul 1 Să se genereze un semnal discret


x (n ) = 2e j πn / 9
, n ∈ N , 0 ≤ n ≤ 40 și să se reprezinte grafic prin
linii terminate cu cerculețe

Programul este următorul:


n=0:40;
x=2*exp((j*pi/9)*n);
stem(n,real(x),'filled');
stem(n,imag(x),'filled');

Reprezentarea grafică pentru partea reală este următoarea:

1.5

0.5

-0.5

-1

-1.5

-2
0 5 10 15 20 25 30 35 40

iar pentru partea imaginară


2

1.5

0.5

-0.5

-1

-1.5

-2
0 5 10 15 20 25 30 35 40

1.5.2 Personalizarea graficilor


Pentru plasarea în câmpul graficelor a unor texte, etichete ale axelor,
precum și a titlului se utilizează următoarele funcții:

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 37

Semnale analogice-Seria și transformata Fourier

● title (‘text’) titlul graficului se plasează deasupra acestuia; ‘text’


este un șir de caractere care reprezintă titlul graficului;
● xlabel (‘text’) precizarea etichetei axei x; ‘text’ este un șir de
caractere care reprezintă numele axei, unitatea de măsură, etc.
● ylabel (‘text’) precizarea etichetei axei y; ‘text’ este un șir de
caractere care reprezintă numele axei, unitatea de măsură, etc.
● grid on se trasează o rețea de linii orizontale și verticale pe grafic
● grid off se elimină rețeaua de linii orizontale și verticale trasate pe
grafic
Graficele se pot trasa utilizând linii, markere, culori. Acest lucru este
prezentat în Tabelul 1

Tabel 1. Tipurile de linii, marchere şi culori pentru reprezentările grafice


în MATLAB

Linii tip Markere tip Culori


continuă - plus + galben y

întreruptă -- steluță * mov m


două puncte : cerc ° albastru-deschis c
linie-punct -. x x rosu r
punct . verde i
albastru b
alb w
negru k

Exemplul 2
Se reprezintă grafic funcția f ( x ) = sin (2π 50t ) , cu culoarea neagră
și linie-punct și funcția g ( x ) = − f (x ) cu markere * de culoare roșie. Se
scrie titlul “graficele funcțiilor f(x) și g(x)”; pe axa x se scrie t, iar pe y se
scrie f(x) și g(x).
Programul MATLAB este
t=0:.001:0.02
f=sin(2*pi*50*t)
g=-f

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
38 Lucrarea 1

Prelucrarea semnalelor biomedicale

plot(t,f,'-.k',t,g,'*r'),grid on
title('Graficele functiilor f(x) si g(x)'),xlabel('t'),
ylabel('f(x) si g(x)')

Se obțin graficele următoare


Graficele functiilor f(x) si g(x)
1

0.8

0.6

0.4

0.2
f(x) si g(x)

-0.2

-0.4

-0.6

-0.8

-1
0 0.005 0.01 0.015 0.02
t

Exemplul 3
Se consideră un fișier s1base1.dat ce reprezintă înregistrarea unui
semnal electroencefalografic (EEG) pe 6 canale: central (stâng c3 și drept
c4), parietal (stâng p3 și drept p4) și occipital (stâng o1 și drept o2). Să se
scrie un program care permite afișarea acestor înregistrări, într-o figură cu
6 linii și o coloană, cu marcarea axelor (timpul și numele canalelor
respective). Graficele să fie cu culoarea neagră.

load('s1base1.dat');
s1base1=s1base1';
x1=s1base1(:,1);
x2=s1base1(:,2);
x3=s1base1(:,3);
x4=s1base1(:,4);
x5=s1base1(:,5);
x6=s1base1(:,6);
n=0:10/2499:10;

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 39

Semnale analogice-Seria și transformata Fourier

subplot(611),plot(n,x1,'k')
axis([0 10,-25 25])
title('EEG pentru activitate de baza') ylabel('c3');
subplot(612),plot(n,x2,'k')
axis([0 10,-25 25]);
ylabel('c4')
subplot(613),plot(n,x3,'k')
axis([0 10,-25 25]);
ylabel('p3')
subplot(614),plot(n,x4,'k')
axis([0 10,-25 25]);
ylabel('p4')
subplot(615),plot(n,x5,'k')
axis([0 10,-25 25]);
ylabel('o1')
subplot(616),plot(n,x6,'k')
axis([0 10,-25 25]);
ylabel('o2'),xlabel('time')

Reprezenrarea grafică obținută în urma rulării programului este


următoarea:

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
40 Lucrarea 1

Prelucrarea semnalelor biomedicale

1.6 Signal ProcessingToolbox. Caracteristici principale


Este o colecţie de instrumente construite pe baza calculelor în
MATLAB. Cuprinde:
● diferite operaţii necesare pentru prelucrarea semnalelor (de la
generarea anumitor tipuri de semnale până la proiectarea şi
implementarea filtrelor)
● modelare
● analiză spectrală

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 41

Semnale analogice-Seria și transformata Fourier

Intrările de bază cu care lucrează sunt semnalele şi sistemele. Se pot


reprezenta sisteme liniare invariante în timp utilizând diferite modele (de
ex. funcţii de transfer, câştig poli-zerouri) şi conversia dintre modele.
Comenzile din Signal ProcessingToolbox sunt prezentate în Tabelul
2.
Tabel 2. Comenzi din Signal ProcessingToolbox

Waveform generation
chirp Swept-frequency cosine generator
diric Dirichlet (periodic sinc) function
gauspuls Gaussian pulse generator
pulstran Pulse train generator
rectpuls Sampled aperiodic rectangle generator
sawtooth Sawtooth function
sinc Sinc or sin(pi*x)/(pi*x) function
square Square wave function
tripuls Sampled aperiodic triangle generator.
Transforms
czt Chirp-z transform
dct Discrete cosine transform
dftmtx Discrete Fourier transform matrix
fft Fast Fourier transform
fftshift Swap vector halves
hilbert Hilbert transform
idct Inverse discrete cosine transform.
ifft Inverse fast Fourier transform.
Filter analysis and implementation
abs Magnitude
angle Phase angle
casfilt Cascade filter implementation
conv Convolution
fftfilt Overlap-add filter implementation.
filter Filter implementation
filtfilt Zero-phase version of filter

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
42 Lucrarea 1

Prelucrarea semnalelor biomedicale

filtic Determine filter initial conditions


freqs Laplace transform frequency response
freqspace Frequency spacing for frequency response
freqz Z-transform frequency response
grpdelay Group delay
impz Impulse response (discrete).
latcfilt Lattice filter implementation
unwrap Unwrap phase
upfirdn Up sample, FIR filter, down sample
zplane Discrete pole-zero plot
Linear system transformations
convmtx Convolution matrix
latc2tf Lattice or lattice ladder to transfer function conversion
poly2rc Polynomial to reflection coefficients transformation
rc2poly Reflection coefficients to polynomial transformation
residuez Z-transform partial fraction expansion
sos2ss Second-order sections to state-space conversion
sos2tf Second-order sections to transfer function conversion
sos2zp Second-order sections to zero-pole conversion
ss2sos State-space to second-order sections conversion
ss2tf State-space to transfer function conversion
ss2zp State-space to zero-pole conversion
tf2latc Transfer function to lattice or lattice ladder conversion
tf2ss Transfer function to state-space conversion
tf2zp Transfer function to zero-pole conversion
zp2sos Zero-pole to second-order sections conversion
zp2ss Zero-pole to state-space conversion
zp2tf Zero-pole to transfer function conversion
IIR digital filter design.
butter Butterworth filter design
cheby1 Chebyshev type I filter design
cheby2 Chebyshev type II filter design
ellip Elliptic filter design
maxflat Generalized Butterworth lowpass filter design

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 43

Semnale analogice-Seria și transformata Fourier

yulewalk Yule-Walker filter design


buttord Butterworth filter order selection
cheb1ord Chebyshev type I filter order selection
cheb2ord Chebyshev type II filter order selection
ellipord Elliptic filter order selection
FIR filter design
cremez Complex and nonlinear phase equiripple FIR filter design
fir1 Window based FIR filter design - low, high, band, stop,
multi
fir2 Window based FIR filter design - arbitrary response
fircls Constrained Least Squares filter design - arbitrary
response
fircls1 Constrained Least Squares FIR filter design - low and
highpass
firls FIR filter design - arbitrary response with transition bands
firrcos Raised cosine FIR filter design
intfilt Interpolation FIR filter design
kaiserord Window based filter order selection using Kaiser window
remez Parks-McClellan optimal FIR filter design
remezord Parks-McClellan filter order selection.
Statistical signal processing
cohere Coherence function estimate
corrcoef Correlation coefficients
cov Covariance matrix
csd Cross Spectral Density
psd Power Spectral Density
spectrum psd, csd, cohere and tfe combined
tfe Transfer function estimate
xcorr Cross-correlation function
xcov Covariance function
specgram Spectrogram using short-time Fourier transform
Windows
bartlett Bartlett window
blackman Blackman window

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
44 Lucrarea 1

Prelucrarea semnalelor biomedicale

boxcar Rectangular window


chebwin Chebyshev window
hamming Hamming window
hanning Hanning window
kaiser Kaiser window
triang Triangular window
Parametric modeling
invfreqs Analog filter fit to frequency response
invfreqz Discrete filter fit to frequency response
levinson Levinson-Durbin recursion
lpc Linear Predictive Coefficients using autocorrelation
method
prony Prony's discrete filter fit to time response
stmcb Steiglitz-McBride iteration for ARMA modeling
ident See the System Identification Toolbox
Specialized operations
cceps Complex cepstrum
decimate Resample data at a lower sample rate
deconv Deconvolution
demod Demodulation for communications simulation
interp Resample data at a higher sample rate.
interp1 General 1-D interpolation. (MATLAB Toolbox)
medfilt1 1-Dimensional median filtering
modulate Modulation for communications simulation
rceps Real cepstrum and minimum phase reconstruction
resample Resample sequence with new sampling rate
Analog lowpass filter prototypes
besselap Bessel filter prototype
buttap Butterworth filter prototype
cheb1ap Chebyshev type I filter prototype (passband ripple)
cheb2ap Chebyshev type II filter prototype (stopband ripple)
ellipap Elliptic filter prototype
Frequency translation
lp2bp Lowpass to bandpass analog filter transformation

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 45

Semnale analogice-Seria și transformata Fourier

lp2bs Lowpass to bandstop analog filter transformation


lp2hp Lowpass to highpass analog filter transformation
lp2lp Lowpass to lowpass analog filter transformation
Filter discretization
bilinear Bilinear transformation with optional prewarping
impinvar Impulse invariance analog to digital conversion
Other
besself Bessel analog filter design
conv2 2-D convolution
cplxpair Order vector into complex conjugate pairs.
detrend Linear trend removal
fft2 2-D fast Fourier transform
fftshift Swap quadrants of array
ifft2 Inverse 2-D fast Fourier transform
polystab Polynomial stabilization
stem Plot discrete data sequence
strips Strip plot
xcorr2 2-D cross-correlation
Signal GUI (Graphical User Interface)
sptool Signal Processing Tool interface
Demonstrations
cztdemo Chirp-z transform and FFT demonstration
filtdemo Filter design demonstration
moddemo Modulation/demodulation demonstration
sosdemo Second-order sections demonstration

2 Desfăşurarea lucrării
1. Operarea cu matrici, vectori și scalari
a) Se consideră următoarele matrici:
A = [2 3 4; 5 2 9; 16 0 0]
B = [1 2 3; 1 1 1; 2 3 2]
Să se calculeze în MATLAB:

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
46 Lucrarea 1

Prelucrarea semnalelor biomedicale

a) C1 = A + B
b) C2 = A − B
c) C3 = A + p
d) C4 = A* B
e) C5 = A * p
f) D = A'
g) E = B'
h) Z = A/ B
i) W = A\ B
j) Y = A.^ p

Să se verifice că Z = A * B −1 si W = A−1 * B .
b) Să se genereze un vector cu pas liniar, cu limitele:
a min = 2, a max = 10, pas = 2 .
c) Să se genereze un vector cu pas liniar, cu limitele:
a min = 2, a max = 10, N = 5 , unde N este numărul de elemente.
d) Să se genereze un vector cu N=5 elemente distribuite
logaritmic între decadele 10-2 și 102.
e) Fie un vector y = [1 : 0.11 : 123]
Să se genereze un vector cu toate elementele egale cu 1, având
lungimea egală cu numărul elementelor vectorului y.
f) Să se efectueze produsul scalar al vectorilor:

a = [2 3]
b = [− 4 4]
g) Să se efectueze produsul vectorial al vectorilor de la punctul
(f).
h) Să se calculeze produsul element cu element al matricilor:
A = [1 2 3; 4 5 6; 7 8 9]
B = [0 1 0; 0 1 0; 0 1 0]

2. Reprezentarea grafică

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 1 47

Semnale analogice-Seria și transformata Fourier

1. Să se reprezinte grafic semnalul discret:


 1 
x(n ) = sin  2π n  pentru n ∈ [0,20]
 10 
Graficul să fie cu culoarea roșie, cu cerculețele umplute. Să se scrie
titlul și identificările axelor.
2. Să se genereze o secvență exponențială complexă de tipul
x ( n ) = e cn ,
unde c = a + jb . Să se reprezinte grafic partea reală și partea imaginară
ale aceastei secvențe pe aceeași figură, cu specificarea axelor, a titlurilor
graficelor.
3. Să se creeze o funcție, pe care o veți numi generareexp.m, prin
care să se genereze o secvență exponențială x(n ) = a n , de lungime finită N,
începând cu indicele n0. Apoi să se reprezinte grafic această funcție.
4. Se consideră înregistrarea semnalului electroencefalografic din
fișierul s1base1.dat. Să se scrie un program care permite afișarea primelor
512 puncte ale semnalelor respective într-o singură figură, pe trei linii și
două coloane.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
48 Lucrarea 1

Prelucrarea semnalelor biomedicale

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 2

Semnale analogice
Seria și transformata Fourier
1 Considerații teoretice
1.1 Seria Fourier
Un semnal analogic x(t)este periodic dacă și numai dacă:
 +  = , ∀ ∈ . (1)
T se numește perioadă.
Nu există biosemnale periodice, ci numai semnale cvasiperiodice. De
exemplu semnalul ECG este un semnal cvasiperiodic.
Un semnal analogic periodic x(t), de perioadă T, se poate scrie ca
suma ponderată de semnale sin și cos din PF7 dacă sunt satisfacute
condițiile lui Dirichlet:
1) este absolut integrabil pe o perioada T
2) are un numar finit de maxime si minime în intervalul (0,T)
3) are un numar finit de discontinuităţi în intervalul (0,T)
Mulțimea PF conţine un număr infinit de funcţii (este necesar să se
utilizeze pentru descompunere un număr mare de funcţii sin şi cos). Se
poate limita numărul de funcţii, cu condiția ca să nu se obţină erori mari.
1.1.1 Seria Fourier trigonometrică
Un semnal periodic x(t), de pulsaţie Ω0, ce există pentru toate
valorile lui t şi satisface condiţiile lui Dirichlet, poate fi descompus în
serie Fourier trigonometrică astfel:
∞ (2)
x ( t ) = ∑  ak cos ( k Ω 0t ) + bk sin ( k Ω 0t ) 
k =0

ș  se numesc coeficienţii seriei Fourier trigonometrice și se


calculează cu relațiile:

7 PF = {sin ( nΩ0t ) , cos ( mΩ0t ) , ∀n, m}


50 Lucrarea 2

Prelucrarea semnalelor biomedicale

T
2 (3)
x ( t ) cos ( k Ω 0t ) dt
T ∫0
ak =

T
1
x ( t )dt
T ∫0
a0 =

T
2
x ( t ) sin ( k Ω 0t ) dt
T ∫0
bk =

1.1.2 Proprietăţi importante


1. Dacă funcţia este pară, x ( −t ) = x ( t ) seria Fourier
trigonometrică are numai termeni în cos, adică
T (4)
T 2
2 2
bk = ∫ x ( t ) sin ( k Ω0t ) dt = ∫ x ( t ) sin ( k Ω t ) dt =
0
T 0 T T

2

0 T
2

2 
=  ∫ x ( t ) sin ( k Ω0t ) dt + ∫ x ( t ) sin ( k Ω 0t ) dt  =
T T
 − 2 0

 T T

2 2 2

=  − ∫ x ( t ) sin ( k Ω0t ) dt + ∫ x ( t ) sin ( k Ω 0t ) dt  = 0
T 0
 0



(5)
 =  cosΩ 


2. Dacă funcţia este impară, x ( −t ) = − x ( t ) seria Fourier


trigonometrică are numai termeni în sin, adică

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 2 51

Semnale analogice-Seria și transformata Fourier

(6)
T
T 2
2 2
ak = ∫ x ( t ) cos ( k Ω0t ) dt = ∫ x ( t ) cos ( k Ω t ) dt =
0
T 0 T T

2

0 T
2

2 
=  ∫ x ( t ) cos ( k Ω0t ) dt + ∫ x ( t ) cos ( k Ω 0t ) dt  =
T T
 − 2 0

 T T

2 2 2

=  − ∫ x ( t ) cos ( k Ω0t ) dt + ∫ x ( t ) cos ( k Ω0t ) dt  = 0
T 0
 0



(7)
 =   sinΩ 


1.1.3 Seria Fourier armonică


∞ (8)
x ( t ) = ∑ Ak cos ( k Ω 0t + Φ k )
k =0

a0
A0 =
2
Ak = ak2 + bk2
bk
Φ k = − arctg
ak

Se pune în evidență amplitudinea și faza armonicii k .


1.1.4 Seria Fourier sub formă de exponenţială complexă

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
52 Lucrarea 2

Prelucrarea semnalelor biomedicale

∞ (9)
x (t ) = ∑ ck e jk Ω0t
k =−∞
T
1
x ( t ) e− jk Ω0t dt
T ∫0
ck =

ck = ck e jΦk
ak + jbk
ck =
2
ak − jbk
c− k =
2
1 2
ck = ak + bk2
2
b
Φ k = − arctg k
ak
Reprezentarea modulului | | în funcţie de kΩ reprezintă spectrul
de amplitudine.
Reprezentarea fazei Φ în funcţie de kΩ reprezintă spectrul de fază
1.1.5 Relaţia lui Parceval
Puterea unui semnal periodic de perioadă T este:
(10)
 ∞ 
T T T
1 1 1
∫ x (t ) dt = ∫ x ( t ) x∗ ( t ) dt = ∫ x ( t )  ∑ cn∗e − jnΩ0t  dt =
2
Px =
T 0
T 0 T 0  n =−∞ 
∞  T
∗ 1
 ∞ ∞

∑ n T ∫ ( )  ∑ n n ∑ cn
− jnΩ0t ∗ 2
= c x t e dt = c c =
n =−∞  0  n =−∞ n =−∞

∞ (11)

2
Px = cn
n =−∞

Graficul | |! în funcţie de kΩ se numeşte spectru de putere al


semnalului.
Puterea semnalului este distribuită de-a lungul diferitelor
componente de frecvenţă în directă legătură cu pătratul modulului
coeficienţilor seriei Fourier.
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 2 53

Semnale analogice-Seria și transformata Fourier

Seria Fourier oferă o descriere alternative a unui semnal periodic și


este utilă în special pentru evaluarea efectului filtrării unui semnal.
1.2 Transformata Fourier
Se consideră un semnal x(t) analogic aperiodic. Dacă semnalul
respectă condițiile lui Dirichlet:

1. x(t) este absolut integrabil, adică "%|| < ∞
2. x(t) trebuie să aibă un număr finit de discontinuități în fiecare
interval finit
3. x(t) trebuie să aibă un număr finit de maxime și minime în fiecare
interval finit
semnalul are transformată Fourier.
Transformata Fourier directă a acestui semnal se definește ca fiind:

(12)
XΩ= '  ( %)*+
,.
%

(13)
XΩ= '  ( %)*+ ,.
%
Transformata Fourier inversă este:

1 (14)
xt= ' 1Ω ( )*+ ,Ω.
20
%

2 Exemple MATLAB
2.1 Exemplul 1 - biosemnal ce poat fi aproximat ca fiind semnal
periodic
S-a monitorizat temperatura abdominală şi consumul de oxigen la un
porumbel într-un mediu lumină-întuneric controlat și s-a constatat că
există o anumită periodicitate determinată de succesiunea lumină-
întuneric (zi-noapte), adică de ceasul circadian8.
Se urmărește programul lucrare2_ex1.m:

8
Bruce E., Biomedical signal processing and signal modeling, John Wiley & Sons,
2001.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
54 Lucrarea 2

Prelucrarea semnalelor biomedicale

% Afiseaza temperatura (tb) si consumul de oxigen (vo2) a


unui porumbel pe durata a 48 ore
% ambele variabile apar ca avand variatii circadiene
close all
clear all
load circadian.mat
figure
subplot(211)
plot(t, tb), grid on
ylabel('T_b (grade)')
title('Temperatura corpului (T_b) si consumul de oxigen
(V_O_2) timp de 48 ore')
axis([0 50 37 42])
subplot(212)
plot(t,vo2), grid on
ylabel('V_O_2 (ml/min)')
xlabel('Time (ore)')
axis([0 50 3 9])

Se obține reprezentarea din Figura 1.

Temperatura corpului (Tb) si consumul de oxigen (VO2) timp de 48 ore


42

41
Tb (grade)

40

39

38

37
0 10 20 30 40 50

9
8
VO2 (ml/min)

7
6
5
4
3
0 10 20 30 40 50
Time (ore)

Figura 1. Temperatura corpului și consumul de oxigen al unui porumbel, pe


timp de 48 ore

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 2 55

Semnale analogice-Seria și transformata Fourier

Se observă că, în absența perturbațiilor, semnalele ar putea fi


considerate periodice, având perioada 24 ore. Ne vom concentra atența
numai pentru temperature corpului. Aceasta ar părea că poate fi modelată
cu un semnal sinusoidal, având perioada de 24 ore. Întrebarea firească
este legată de amplitudinea și faza acestui semnal. Se dorește să se afle
perechea amplitudine-fază ce minimizează eroarea pătratică medie dintre
aproximare și semnalul real de temperatură.
Se presupune că se iau 18 valori pe durata a 24 ore, prin urmare
durata dintre două măsurări successive (perioada de eșantionare) Ts este
de 24/18, adică 1,333 ore. Semnalul este 2 = 234 , cu 0 ≤ 3 ≤ 35.
Semnalul aproximat este:
<
2̃  = : sin ;20 != 34 + >? + 2 , (15)
unde : este amplitudinea, > este faza, iar 2 valoarea medie a
semnalului sinusoidal (2 = 39,3556B ).
Se calculează eroarea medie pătratică dintre semnalul real și cel
aproximat:
H%<
1 (16)
C = E2̃ 34  − 234 G! , D = 36.
D
I

Prin urmare, trebuie să se afle o pereche A, > care să minimizeze .


L L
Se formează perechi pentru care : ∈ E1; 2,5G și > ∈ K− , M. Se consideră
! !
câte 30 valori pentru fiecare, prin urmare se obțin 900 cazuri. Valorile
pentru care s-a obținut C minim sunt : = 1,85 și > = 0.
În Figura 2 se prezintă semnalul original și semnalul aproximat, cu
valorile precizate anterior.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
56 Lucrarea 2

Prelucrarea semnalelor biomedicale

Data=punctat, Aproximare=solid
42

41
Tb (grade)

40

39

38

37
0 5 10 15 20 25 30 35 40 45 50
Time (ore)

Figura 2. Semnalul real și cel aproximat

Pentru acest lucru am folosit funcția numită fitsine.m.


Dacă se completează codul precedent cu această funcție, se obține
reprezentarea din Figura 2.
Dacă se face diferența dintre semnalul real și cel aproximat se obține
graficul din Figura 3.

1.5

0.5
)
rade
T (g
b

-0.5

-1
0 10 20 30 40 50
Time (ore)

Figura 3. Eroarea aproximării semnalului real cu cel din Figura 2

După cum era de așteptat, aproximarea obținută este una grosieră a


temperaturii corpului. Interesant este faptul că deviațiile de la valorile
reale sunt similare în cele două cicluri de câte 24 ore și par a avea o
frecvență de 3 cicluri pe zi, adică o perioadă de 8 ore. Dacă se folosește
aceeași metodă ca cea prezentataă anterior pentru a apoxima eroarea cu o
sinusoidă cu perioada de 8 ore, se va obține o reprezentare ca în Figura 4.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 2 57

Semnale analogice-Seria și transformata Fourier

Data=punctat, Aproximare=solid
1.5

0.5
T (grade)
b

-0.5

-1
0 10 20 30 40 50
Time (ore)

Figura 4. Eroarea și aproximarea acestia

Dacă se sumează această aproximare a erorii cu semnalul aproximat


anterior, se obține o reprezentare ca cea din Figura 5.

Data=punctat, Aproximarea=solid
41.5

41

40.5

40
T (grade)

39.5

39
b

38.5

38

37.5

37
0 10 20 30 40 50
Time (ore)

Figura 5. Semnalul initial și aproximarea acestuia obținută prin suprapunerea


aproximației sinusoidale cu aproximarea erorii

Se observă că se obține o mai bună aproximare a semnalului original


decât cea obținută prin aproximarea cu un singur semnal sinusoidal. Acest
procedeu poate fi repetat de mai multe ori, deși impresia poate fi că
eroarea devine repede atât de mică încât să devină neglijabilă.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
58 Lucrarea 2

Prelucrarea semnalelor biomedicale

2.2 Exemplul 2 - seria Fourier a unui semnal dreptunghiular


periodic-fenomenul Gibbs
Se consideră un semnal analogic dreptunghiular, de periaodă T ce
satisface condițiile lui Dirichlet. Prin urmare, are serie Fourier.
În figura 6 este ilustrat un asemenea semnal.

0.8

0.6

0.4

0.2
x(t)

-0.2

-0.4

-0.6

-0.8

-1

-0.06 -0.04 -0.02 0 0.02 0.04 0.06


timp

Figura 6. Semnal dreptunghiular periodic, cu perioada T


Se demonstrează că descompunerea în serie Fourier trigonometrică
are expresia:
Prin urmare, este necesar un număr infinit de termeni pentru a
reproduce fidel un semnal dreptunghiular periodic. Dacă seria se
trunchiază, eroarea cea mai mare apare în punctele de discontinuitate a
semnalului dreptunghiular, unde apar oscilații. Acest fenomen se numește
fenomenul Gibbs și arată faptul că armonicile de ordin superior ale seriei
Fourier au cea mai mare importanță în punctele unde semnalul se schimbă
brusc. În Figura 7 este prezentat cazul când pentru descompunerea
semnalului dreptunghiular periodic s-au folosit 30 armonici.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 2 59

Semnale analogice-Seria și transformata Fourier

Semnalul se compune din 30 armonici


1.5
semnal
reconstructie cu 30 armonici
1

0.5

-0.5

-1

-1.5
0 0.2 0.4 0.6 0.8 1
Timp

Figura 7. Reprezentarea unui semnal dreptunghilar


și a seriei Fourier folosind 30 armonici

3 Desfășurarea lucrării
1. Exemplul 1
1. Se înțelege funcția fitsin.m.
2. Se completează fișierul script lucrare2_ex1.m cu liniile de
cod necesare pentru a se putea vizualiza atât semnalul
aproximat și cel real ca în figura 2.
3. Se completează fișierul script lucrare2_ex1.m cu liniile de
cod necesare pentru a se putea reprezenta diferența dintre
semnalul real și cel aproximat, precum și semnalul care se
obține dacă se sumează semnalul de eroare și aproximarea
acestuia cu semnalul sinusoidal având parametri
specificați.
4. Se repetă procedura de aproximare a noii erori dintre
semnalul aproximat prin sumare și semnalul real.
5. Se interpreteză rezultatul.
6. Concluzii
2. Exemplul 2
1. Se demonstrează relația (12)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
60 Lucrarea 2

Prelucrarea semnalelor biomedicale

2. Se rulează programul lucrare2_ex2.m ce ilustrează


fenomenul Gibbs.
3. Se studiază efectul măririi numărului de armonici utilizat
în seria Fourier.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 3

Eşantionarea semnalolor analogice

1 Noţiuni teoretice
Un semnal analogic sinusoidal, reprezentat de relaţia

x a (t ) = A cos(2πF0t + θ) , (1)

eşantionat cu o frecvenţă de eşantionare Fs = 1/T, conduce la un semnal


discret în domeniul timp de tipul

x(n ) = A cos(2πf 0 n + θ ) , (2)

unde f0 =F0 /FS este frecvenţa relativă a semnalului sinusoidal discret.


Dacă se presupune că frecvența F0 aparține domeniului fundamental
OP OP
(− ≤ F ≤ ) este posibil să se reconstruiască semnalul analogic,
! !
xa(t), din eşantioanele sale, x(n).
Pe de altă parte, dacă semnalele armonice

xk (t ) = A cos(2πFk t + θ) , (3)

unde Fk = F0 + kF0 , k 0 = ±1,±2, K sunt eşantionate cu o frecvență de


eșantionare FS, semnalele discrete obținute în urma eșantionării sunt
aceleaşi ca cel dat de relaţia (2). Este evident ca Fk este în afara
domeniului fundamental.
Astfel, un număr infinit de semnale analogice este reprezentat după
eşantionare prin acelaşi semnal discret din domeniul timp (adică prin
acelaşi set de eşantioane). Dacă se dispune de o secvenţă x(n), este incert
cărui semnal analogic xa(t) îi corespunde. Se poate spune că semnalele

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
62 Lucrarea 3

Prelucrarea semnalelor biomedicale

analogice ce au frecvenţele Fk = F0 + kF0 , k = ±1,±2,K nu sunt distincte


faţă de frecvenţa F0 după eşantionare şi deci sunt aliasuri ale semnalului
având frecvența F0 din domeniul fundamental.
Teorema eşantionării: Dacă frecvenţa cea mai înaltă din spectrul unui
semnal analogic xa(t) este Fmax =B, pentru refacerea semnalului analogic
din eşantioanele sale este necesar ca frecvenţa de eşantionare FS să fie cel
puţin dublă faţă de frecvenţa maximă, Fmax , din spectrul semnalului ,
adică

FS ≥ 2 Fmax = 2 B , (4)

iar refacerea semnalului se face cu ajutorul unui filtru trece jos ideal, după
funcţia de interpolare dată de relaţia
 n 

sin 2πB t − 
 n   2 B  (5)
xa (t ) = ∑ xa  
n = −∞  2 B  2πB t − n 
 
 2B 
Schematic, trecerea de la un semnal analogic la unul discret și invers,
poate fi privită ca în Figura 1.

Figura 1 Trecerea de la semnal analogic la semnal discret și reciproc

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 3 63

Eșantionarea semnalelor analogice

2 Exemple MATLAB
În această lucrare se urmăreşte punerea în evidență a erorii de alias
apărută ca urmare a eşantionării unui semnal analogic cu o frecvenţă sub
frecvenţa minima de eșantionare şi reconstrucţia unui semnal analogic
dintr-un semnal discret.
Nu este uşor a se ilustra fenomenul de alias cu ajutorul unui program
MATLAB, deoarece acest mediu lucrează numai cu semnale discrete,
reprezentate prin vectori. Se utilizează reproduceri vizuale (sau audio) ale
semnalului pentru a ilustra fenomenul de aliasing.
Deoarece în MATLAB se poate lucra doar cu semnale discrete şi nu
este posibil să se genera un semnal analogic, trebuie simulată axa t a
timpului real (caracteristic semnalelor analogice).
Pentru a simula semnale se va alege ca frecvenţă de simulare o
frecvenţă de cel puţin 5 ori mai mare decât frecvenţa de eşantionare.
În concluzie, vor exista două frecvenţe de eşantionare în această
lucrare: una pentru eşantionare şi una pentru simularea semnalului
continuu, mult mai mare decât cea de eşantionare.
Exemplul 1
Se consideră un semnal analogic sinusoidal având frecvența de 400
Hz, înregistrat pe o durată de 5 ms. Acest semnal este eșantionat cu
frecvența de eșantionare de 10 kHz. Să se afișeze semnalul pe durata
înregistrării, precum și semnalul eșantionat9, pe aceeași figură, pe grafice
separate.
Programul lucrare3_ex1.m ilustrează procesul de eşantionare.

%lucrare5_ex1
%Exercitiul 1
clear all
close all
Fo=400;
Fs=8000;

9
Notă: se va folosi comanda stem
stem(Y) afişează secvenţa de date Y ca linii de la axa x terminate cu cercuri
stem(X,Y) afişează secvenţa de date Y pentru valorile specificate în X.
stem(...,'filled') produce afişare tip stem cu markere.
stem(...,'linespec') utilizează tipurile de linii specificate (a se vedea plot)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
64 Lucrarea 3

Prelucrarea semnalelor biomedicale

tfinal=5*10^-2;
tn=0:1/Fs:tfinal-1/Fs; %ms
phi=0;
x=sin(2*pi*Fo*tn+phi);
subplot(211);
plot(10^3*tn,x);
%xlabel('Time, msec');
ylabel('Amplitude');xlabel('Time, msec');
title('Semnalul continuu x_{a}(t)');
axis([0 5 -1.2 1.2])
subplot(212);stem(10^3*tn,x);
ylabel('Amplitude');
title('Semnalul esantionat x_{n}(t)');
axis([0 5 -1.2 1.2])

După rularea programului se obține reprezentarea din Figura 2.

Semnalul continuu xa(t)

0.5
Amplitudine

-0.5

-1
0 1 2 3 4 5
Timp, msec
Semnalul esantionat x(n)
1

0.5
Amplitudine

-0.5

-1
0 1 2 3 4 5

Figura 2. Semnalul continuu și semnalul discret (Exemplul 1)

a) Exemplul 2
Se consideră un semnal analogic sinusoidal având frecvența de 400
Hz, eșantionat cu frecvența de eșantionare de 10 kHz. Să se afișeze

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 3 65

Eșantionarea semnalelor analogice

semnalul analogic folosind o frecvență de simulare, semnalul eșantionat și


semnalul eșantionat reprezentat cu plot.

%lucrare3_ex2
%Exercitiu 2
clear all
close all
N=499;
Fsim=50000;
Fo=400;
Fs=10000;
phi=0;
n=0:N;
xa=cos(2*pi*(Fo/Fsim)*n+phi);
xs=[];
xn=[];
for i=1:length(xa)/(Fsim/Fs);
xn(i)=xa(1+(Fsim/Fs)*(i-1));
xs=[xs 1 zeros(1,(Fsim/Fs)-1)];
end;
subplot(311);plot((0:length(xa)-1),xa);
axis([0 (length(xa)-1) -1.2 1.2 ]);
legend('Semnal analogic');
subplot(312);stem((0:length(xn)-1),xn);
axis([0 (length(xn)-1) -1.2 1.2]);
legend('Semnalul esantionat');
subplot(313);plot((0:length(xn)-1),xn);
axis([0 (length(xn)-1) -1.2 1.2]);
legend('Semnalul esantionat reprezentat cu plot');
xlabel('timp');

Se obține reprezentarea din Figura 3.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
66 Lucrarea 3

Prelucrarea semnalelor biomedicale

1
Semnal analogic
0

-1
0 50 100 150 200 250 300 350 400 450

1
Semnalul esantionat
0

-1
0 10 20 30 40 50 60 70 80 90

1
Semnalul esantionat reprezentat cu plot
0

-1
0 10 20 30 40 50 60 70 80 90
timp

Figura 3. Semnalul continuu, semnalul discret și cel discret reprezentat cu funcția


plot (Exemplul 2)
Programul lucrare3_ex2.m poate ilustra efectul erorii alias în
domeniul timp şi reconstrucţia semnalului continuu. Pentru acest lucru, se
va modifica frecvența de eșantionare.
b) Exemplul 3
Se consideră un semnal analogic având frecvența de 13Hz. Să se
afișeze semnalul analogic folosindu-se o frecvență de simulare convenabil
aleasă.
Semnalul se eșantionează cu frecvența de 10Hz. Să se afiseze
semnalul discret obținut.
% lucrare3_ex3
clear all
close all
F=13;
Fsim=100*F;
t = 0:1/Fsim:1;
xa = cos(2*pi*F*t);
subplot(211)
plot(t,xa);grid on
xlabel('Timp, msec')
title('Semnal analogic x_{a}(t)');
Fs=10;

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 3 67

Eșantionarea semnalelor analogice

T=1/Fs;
n = 0:T:1;
xs = cos(2*pi*F*n);
subplot(212);
stem(n,xs,'r');
grid on;
xlabel('Timp index n')
title('Semnal discret x[n]');

Se obține reprezentarea din Figura 4.

Semnal analogic xa(t)


1

0.5

-0.5

-1
0 0.2 0.4 0.6 0.8 1
Timp, msec
Semnal discret x[n]
1

0.5

-0.5

-1
0 0.2 0.4 0.6 0.8 1
Timp index n

Figura 4. Semnalul continuu, semnalul discret obținut prin eșantionare cu Fs=10Hz


(Exemplul 3)
c) Exemplul 4
Se consideră un semnalul din exemplul anterior. Semnalul se
eșantionează cu frecvența de 10 Hz. Să se afiseze pe același graphic
semnalul discret obținut prin eșationare cu Fs=10 Hz și semnalul analogic
reconstruit utilizaând formula de interpolare data de teorema eșantionării.

%lucrare3_ex4
clear all
close all
F = 13;

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
68 Lucrarea 3

Prelucrarea semnalelor biomedicale

T = 0.1;
n = (0:T:1)';
xn = cos(2*pi*F*n);
t = linspace(-0.5,1.5,500)';
ya = sinc((1/T)*t(:,ones(size(n))) -
(1/T)*n(:,ones(size(t)))')*xn;
stem(n,xn,'r')
hold on
plot(t,ya)
grid on
xlabel('Timp, msec');ylabel('Amplitudine');
axis([0 1 -1.2 1.2]);

0.8

0.6

0.4

0.2
Amplitudine

-0.2

-0.4

-0.6

-0.8

-1

0 0.2 0.4 0.6 0.8 1


Timp, msec

Figura 5. Semnalul discret obținut prin eșantionare cu Fs=10Hz a unui semnal


analogic de frecvență F=13Hz și semnalul reconstruit (Exemplul 4)

Dacă analizăm reprezentarea din Figura 4 a semnalului analogic


inițial având frecvența F=13 Hz și cea din Figura 5, ce reprezintă
semnalul refăcut din semnalul discret obținut prin eșantionare cu
frecvența de 10 Hz, se observă că nu sunt identice (adică semnalul
reconstituit nu este acelați cu semnalul inițial) Semnalul reconstituit este

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 3 69

Eșantionarea semnalelor analogice

un semnal cu o frecvență mai mică (și anume 3Hz) decât cea a semnalului
de la care s-a plecat.
d) Exemplul 5
Se consideră un semnal sinusoidal având frecvența de 3 Hz. Să se
scrie un program care să permită afișarea semnalului continuu și a
eșantioanelor atunci când se eșantionează cu frecvențele de eșantionare de
100 Hz, 50 Hz, 10 Hz și 6 Hz.

clear all
close all
f = 3;
t = 0:0.0005:1;
xa = cos(2*pi*f*t);
n=0:1/100:1;
xn=cos(2*pi*f*n);
figure
plot(n,xn,'o','MarkerFaceColor','r','MarkerSize',10)
hold on
plot(t,xa,'LineWidth',2), grid on
xlabel('Fs=100Hz');ylabel('Amplitudine');
n=0:1/50:1;
xn=cos(2*pi*f*n);
figure
plot(n,xn,'o','MarkerFaceColor','r','MarkerSize',10)
hold on
plot(t,xa,'LineWidth',2), grid on
xlabel('Fs=50Hz');ylabel('Amplitudine');
n=0:1/10:1;
xn=cos(2*pi*f*n);
figure
plot(n,xn,'o','MarkerFaceColor','r','MarkerSize',10)
hold on
plot(t,xa,'LineWidth',2), grid on
xlabel('Fs=10Hz');ylabel('Amplitudine');
n=0:1/6:1;
xn=cos(2*pi*f*n);
figure
plot(n,xn,'o','MarkerFaceColor','r','MarkerSize',10)
hold on
plot(t,xa,'LineWidth',2), grid on
xlabel('Fs=6Hz');ylabel('Amplitudine');

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
70 Lucrarea 3

Prelucrarea semnalelor biomedicale

Se obțin graficele din Figura 6.

0.8

0.6

0.4

0.2
Amplitudine

-0.2

-0.4

-0.6

-0.8

-1
0 0.2 0.4 0.6 0.8 1
Fs=100Hz

0.8

0.6

0.4

0.2
Amplitudine

-0.2

-0.4

-0.6

-0.8

-1
0 0.2 0.4 0.6 0.8 1
Fs=50Hz

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 3 71

Eșantionarea semnalelor analogice

0.8

0.6

0.4

0.2
Amplitudine

-0.2

-0.4

-0.6

-0.8

-1
0 0.2 0.4 0.6 0.8 1
Fs=10Hz

0.8

0.6

0.4

0.2
Amplitudine

-0.2

-0.4

-0.6

-0.8

-1
0 0.2 0.4 0.6 0.8 1
Fs=6Hz

Figura 6. Rezultatele rulării codului din exercițiul 6

3 Desfășurarea lucrării
Exercițiul 1
Să se refacă exemplele 3 și 4 pentru următoarele 4 valori pentru Fs:
26 Hz, 40 Hz , 100 Hz și 1000 Hz.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
72 Lucrarea 3

Prelucrarea semnalelor biomedicale

Să se modifice frecvența semnalului la 3 Hz, iar apoi la 7 Hz. Să se


reprezinte aceste semnale sinusoidale și versiunile lor eșantionate cu
frecvența de eșantionare 10 Hz. Ce concluzii se pot trage?

Exercițiul 2
Fie un semnal sinusoidal analogic dat de relaţia
xa (t ) = cos 2πF0t
a) Să se afişeze semnalul x(n) pentru 0≤ n ≤50 pentru FS=5 kHz
şi F0=0,5;2;3;4,5 kHz. Explicaţi similarităţile şi diferenţele
între diferitele grafice.
b) Presupunem că F0=2 kHz, iar FS=50 kHz. Să se afişeze x(n).
Care este frecvenţa f0 ?

Exercițiul 3
Pentru semnalul eşantionat dat de relaţia (2), fie Fs=8 kHz.
a) Să se reprezinte cu plot semnalul sinusoidal iniţial (1). Fie
frecvenţa semnalului sinusoidal F0=300 Hz şi eşantioanele
luate pe durata de 10 ms. Faza este arbitrară. Să se reprezinte
semnalul discret. Să se compare.
b) Să se reprezinte semnalul discret cu plot. În acest caz punctele
sunt conectate cu linii, astfel încât aspectul de semnal
sinusoidal este evident. Conectarea punctelor cu linii este o
formă de reconstrucţie a semnalului care transformă semnalul
discret în semnal continuu. Aceasta nu este forma ideală dată
de teorema eşantionării, dar, în multe situaţii este
satisfăcătoare.
c) Să se efectueze mai multe reprezentări ale semnalului discret,
modificând F0 de la 100 Hz la 475 Hz în paşi de 125 Hz. Folosiţi
subplot pentru reprezentare. Comentaţi.
d) Repetaţi c) dar variaţi frecvenţa sinusoidei de la 7525 la 7900
Hz în paşi de 125 Hz. Comentaţi fenomenul în comparaţie cupunctul
c).
e) Refaceţi c) dar variaţi frecvenţa F0 de la 32100 la 32475 în
paşi de 125 Hz.
Exercițiul 4

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 3 73

Eșantionarea semnalelor analogice

Fie un semnal sinusoidal analogic eşantionat cu frecvenţa FS=10


kHz. Se consideră 0<t<0.5. Se va afişa numai pentru 0<t1<0.001. Fie
F0=1 kHz. Să se scrie un program care să afişeze semnalul analogic
pentru fiecare armonică, considerând că are 9 armonici. Să se pună în
evidenţă fenomenul de aliasing.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
74 Lucrarea 3

Prelucrarea semnalelor biomedicale

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 4

Semnale discrete
1 Considerente teoretice
Prin semnal se înţelege orice cantitate sau calitate fizică care variază
cu timpul, spaţiul sau oricare altă sau alte variabile independente şi
transportă sau conţine informaţie. Deşi semnalele pot fi reprezentate în
multe moduri, în toate cazurile informaţia este conţinută în modelul de
variaţie adoptat. Matematic, semnalele sunt modelate ca funcţii de una sau
mai multe variabile independente.
Un semnal se numeşte monodimensional dacă este reprezentat în
funcţie de o singură variabilă independentă.
Un semnal se numeşte M-dimensional dacă valoarea sa este o funcţie
de M variabile independente.
Prelucrarea numerică a semnalelor se ocupă cu reprezentarea
numerică a semnalelor originale în domeniul variabilei sau al variabilelor
sau într-un domeniu transformat şi cu modificarea algoritmică a acestora
cu ajutorul procesoarelor numerice pentru a analiza, modifica sau extrage
informaţii din semnale.
Un semnal definit în timp discret, x [k ] sau x (n ) (ca notație), este o
funcţie a cărei variabilă independentă este un întreg şi este reprezentat de
obicei printr-o secvenţă de numere.
Modelul matematic al unui semnal discret poate fi definit ca o
aplicație
x : F → X ,n → x [ n ]
astfel încât, pentru secvenţe unidimensionale
∀n ∈ F ⊆ N sau Z ⇒ x (n ) ∈ X ⊆ N , R sau C
Obişnuit, x (n ) defineşte al k-lea eşantion al semnalului discret x (n )
indiferent dacă acesta provine din eşantionarea unui semnal analogic sau
nu. Descrierea secvenţelor poate fi efectuată prin:
• reprezentarea funcţională;
• reprezentarea tabelară;

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
76 Lucrarea 4

Prelucrarea semnalelor biomedicale

• reprezentarea prin secvenţe de numere.


Un semnal x (n ) este periodic, de perioadă N dacă şi numai dacă
x (n + N ) = x (n ∀n ∈ Ζ ),
unde N număr întreg pozitiv.
Cea mai mică valoare pozitivă a lui N pentru care relaţia precedentă
este îndeplinită se numeşte perioadă fundamentală. Dacă nu există nici o
valoare pentru N care să satisfacă relaţia, semnalul se numeşte neperiodic
sau aperiodic.
1.1 Operaţii asupra semnalelor discrete
A. Operații asupra variabilei independente timp
1. Decalarea în timp.
Un semnal x(n) poate fi decalat în timp înlocuind variabila
independentă n prin n-k, unde k ∈ Z. Pentru k > 0 semnalul obținut este
întârziat cu k unități, iar pentru k < 0 semnalul rezultat este în avans cu k
unități.
Exemplu
Fie un semnal discret x (n ) = 0,7 n u (n ) .
Să se reprezinte semnalele obținute prin întârzierea, respectiv avans
cu 3 unități a semnalului x(n).
Semnalul x(n), semnalul întârziat cu 3 unități, x(n-3), și cel avansat
cu 3 unități, x(n+3), sunt reprezentate în Figura 1.
x(n)=0,7n*u(n)
1 5

0.5

0
-2 0 2 4 x(n+3)6 8 10 12
1

0.5

0
-2 0 2 4 x(n-3) 6 8 10 12
1

0.5

0
-2 0 2 4 6 8 10 12

Figura 1. Reprezentarea semnalului x (n ) = 0,75n u (n ) (a),


a semnalului întârziat x (n − 3) (b) şi a semnalului în avans x (n + 3) (c)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 4 77

Semnale discrete
Dacă semnalul x(n) este înregistrat sau memorat, este simplu să se
decaleze în timp semnalul, dar fizic operația de avans al semnalului nu
este realizabilă deoarece o asemenea operație implică eșantioane ale
semnalului care nu au fost generate încă.
2. Reflexia în timp
Rezultatul înlocuirii variabilei n cu -n este o reflexie a semnalului
față de origine (n = 0).
Exemplu
Se consideră același semnal ca cel din exemplul precedent. Să se
reprezinte semnalul reflectat.
Se obține reprezentarea din Figura 2.

x(n)=0,75 n*u(n)
1

0.8

0.6

0.4

0.2

0
-10 -8 -6 -4 -2 0 2 4 6 8 10
x(-n)
1

0.8

0.6

0.4

0.2

0
-10 -8 -6 -4 -2 0 2 4 6 8 10

Figura 2. Exemplu de reflexie pentru semnalul x (n ) = 0,75n u (n )

Este important să se specifice că operațiile de decalare în timp și


reflexie nu sunt comutative.
3. Scalarea în timp
Înlocuirea variabilei n cu µn, unde µ ∈ N este numită scalare sau
decimare.
B. Operații asupra amplitudinii
Modificările amplitudinii includ scalarea, adunarea și multiplicarea
semnalelor discrete.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
78 Lucrarea 4

Prelucrarea semnalelor biomedicale

1. Scalarea amplitudinii cu o constantă A.


Această operație conduce la obținerea unui semnal y(n) dat de relația

y (n ) = Ax (n ) .

2. Suma a două semnale x1(n) și x2(n).


Semnalul rezultat y(n) este dat de relația

y (n ) = x1 (n ) + x2 (n ) .

3. Produsul a două semnale x1(n) și x2(n).


Semnalul rezultat y(n) este dat de relația

y (n ) = x1 (n ) ⋅ x 2 (n ) .
1.1 Generarea unor semnale elementare
Semnalele elementare sunt generate cu următoarele secvenţe de
comenzi MATLAB
1. Impulsul unitate: delta=[1;zeros(100,1)]
2. Semnalul treaptă unitate u=ones(100,1)
3. Semnal dreptunghiular: d=[ones(1,5), zeros(1,3)]
4. Semnal sinusoidal: s=2*(pi/8)*(0:15)
5. Semnal tip "sinc" : sc=sinc(0:0.25:8)
6. Semnal exponențial: ex=exp(-(0:15))
7. Semnalul ce reprezintă ridicarea la pătrat: ex1=pow2(-0.5*(0:15))
8. Semnalul ce reprezintă ridicarea la cub: ex2=3.^(0:15)
9. Secvența aleatoare distribuită normal: ran=randn(1,16)
În continuare sunt prezentate câteva programe simple de generare şi
vizualizare a unor semnale elementare pentru anumite domenii de valori
ale variabilei independente.
Pentru a obţine impulsul unitate centrat pe valoarea 0 a variabilei
independente se utilizează programul MATLAB lucrarea_4_ex1.m.
Impulsurile δ [n − n0 ] pot fi folosite la construirea trenurilor de impulsuri
periodice, de perioadă P și lungime MP
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 4 79

Semnale discrete
M −1
s[ n ] = ∑ Al δ[ n − lP ] .
l =0

% lucrarea 4 ex1
% generarea impulsului unitate delta
clear all
close all
% generarea unui vector linear între -20 ?i 20
n = -20:20;
delta = [zeros(1,20) 1 zeros(1,20)];
% afi?area
stem(n,delta);
xlabel('Timp n');ylabel('Amplitudine');
title('Impuls unitate discret');
axis([-20 20 0 1.2]);
% generarea trenurilor de impulsuri
P=5;
M=6;
x=[1;zeros((P-1),1)];
y=x*ones(1,M);
y1=y(:);
figure
stem(y1)
xlabel('tren de impulsuri')
axis([0 length(y1) 0 1.2]);

1.2 Generarea unei secvenţe exponenţiale complexe

% lucrarea4_ex2
% generarea unui semnal discret de tip exponentíal complex
clear all
close all
c = (1/20)+(pi/9)*i;
K = 2;
n = 0:40;
x = K*exp(c*n);
subplot(2,1,1);
stem(n,real(x));
xlabel('Timp n');ylabel('Amplitudine');
title('Parte reală');
subplot(2,1,2);

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
80 Lucrarea 4

Prelucrarea semnalelor biomedicale

stem(n,imag(x));
xlabel('Timp n');ylabel('Amplitudine');
title('Parte imaginară');

În urma rulării programului se obține reprezentarea din Figura 1.


Parte reală
15

10
Amplitudine

-5

-10
0 5 10 15 20 25 30 35 40
Timp n
Parte imaginară
15

10
Amplitudine

-5

-10
0 5 10 15 20 25 30 35 40
Timp n

Figura 1. Partea reală și partea complex a unui semnal discret de tip


exponețial complexe

1.3 Generarea unei secvenţe exponenţiale reale

% lucrarea4_ex3
% generarea unei secvente exponential reale
clear all
close all
n = 0:20;
a = input('a=')
A = 0.2;
x = A*a.^n;
stem(n,x);
xlabel('Timp n');ylabel('Amplitudine');

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 4 81

Semnale discrete
1.4 Generarea unei secvenţe sinusoidale

% lucrare4_ex5
% generarea unei secvené sinusoidale
clear all
close all
n = 0:40;
f = input('f=');
faza = 0;
A = 1.5;
arg = 2*pi*f*n - faza;
x = A*cos(arg);
stem(n,x); % afisarea secventei
axis([0 40 -3 3]);
grid;
title('secventa sinusoidala');
xlabel('Timp n');
ylabel('Amplitudine');
axis;

1.5 Generarea unei secvenţe modulate în amplitudine

% lucrarea4_ex5
% generarea unei secventa modulate in amplitudine
clear all
close all
n = 0:100;
m = 0.1;
fpurtatoare = 0.1;
fmodulatoare = 0.01;
xpurtatoare = sin(2*pi*fpurtatoare*n);
xmodulatoare = sin(2*pi*fmodulatoare*n);
y = (1+m*xpurtatoare).*xmodulatoare;
stem(n,y);grid;
xlabel('Timp n');ylabel('Amplitudine');

1.6 Generarea unui semnal netezit prin mediere

% lucrarea4_ex6
% netezirea semnalelor prin mediere
clear all

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
82 Lucrarea 4

Prelucrarea semnalelor biomedicale

close all
R=31;
% generare de zgomot aleatoriu (a se revedea functia rand)
zgomot = 0.8*(rand(R,1) - 0.5);
m = 0:R-1;
%generarea unui semnal neperturbat
s = 2*m.*(0.9.^m);
%generarea unui semnal perturbat aditiv cu zgomot
x = s + zgomot';
plot(m,zgomot','r-',m,s,'k--',m,x,'b-.');
xlabel('Timp n');ylabel('Amplitudine');
x1 = [0 0 x];
x2 = [0 x 0];
x3 = [x 0 0];
%medierea celor trei secvente decalate
y = (x1 + x2 + x3)/3;
hold on
plot(m,y(2:R+1),'m');
legend('zgomot[n] ','s[n] ','x[n] ','y[n] ');
xlabel('Timp n');ylabel('Amplitudine');

În urma rulării programului se obține reprezentarea din Figura 2.

8
zgomot[n]
7 s[n]
x[n]
6 y[n]

5
Amplitudine

-1
0 5 10 15 20 25 30
Timp n

Figura 2. Reprezentarea unui semnal netezit prin mediere

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 4 83

Semnale discrete
1.7 Proprietăți asupra variabilei independente
Exemplul 1
Se realizează o funcție MATLAB care face decalarea cu k eșantioane
pentru 3< ≤ 3 ≤ 3! .
function [y,m]=decalare(x,n1,n2,k)
n=n1:n2;
m=n+k;
y=x;

S-a scris următorul program care verifică funcția.

clear all
close all
n1=0;
n2=100;
n=n1:n2;
x = sin(2*pi*1/100*n);
k=3;
[y,m] = decalare(x,n1,n2,k); % decalare la dreapta cu 3
esantioane
subplot(2,1,1), stem(n,x), title('semnal initial')
subplot(2,1,2), stem(m,y),axis([0 n2 -1.2 1.2],
title('semnal intarziat cu 3 esantioane')

S-a obținut reprezentarea din Figura 3.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
84 Lucrarea 4

Prelucrarea semnalelor biomedicale

semnal initial
1

0.5

-0.5

-1
0 20 40 60 80 100

semnal intarziat cu 3 esantioane


1

0.5

-0.5

-1
0 20 40 60 80 100

Figura 3. Reprezentarea unui semnal decalat

Exemplul 2
Se realizează o funcție MATLAB care realizează reflexia unui semnal
discret.
function [y,n]=reflexie(x,m)
y=fliplr(x);
n=-fliplr(m);
Se verifică funcția creată cu ajutorul următorului cod10:
clear all
close all
n=-10:100;
x=sin(2*pi*(1/100)*n);
[y,m]=reflexie(x,n);
subplot(211)
stem(n,x), grid
title('semnal initial')
subplot(212)
stem(m,y), grid
title('semnal reflectat')

10
Se va verifica și cum lucrează funcția fliplr.m.
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 4 85

Semnale discrete

Se obține reprezentarea din Figura 4.

semnal initial
1

0.5

-0.5

-1
-20 0 20 40 60 80 100

semnal reflectat
1

0.5

-0.5

-1
-100 -80 -60 -40 -20 0 20

Figura 4. Reprezentarea unui semnal reflectat

1.8 Proprietăți asupra aplitudinii


Exemplul 1
Se realizează o funcție adunare_semnale.m care efectuează adunarea
a două semnale discrete.

function [z,p]=adunare_semnale(x,n,y,m)
% p durata lui y(n)
p=min(min(n),min(m)):max(max(n),max(m));
% initializare cu un vector cu elemente egale cu 0, de
lungime egala cu p
z1=zeros(1,length(p));
z2=z1;
%z1 cu durata lui x
a=find((p>=min(n))&(p<=max(n))==1);
z1(a)=x;
%z2 cu durata lui y
b=find((p>=min(m))&(p<=max(m))==1);

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
86 Lucrarea 4

Prelucrarea semnalelor biomedicale

z2(b)=y;
z=z1+z2;

Se verifică funcția realizată cu ajutorul următorului program:


2 Desfăşurarea lucrării
1. Exercitiul 1.
Să se genereze și să se reprezinte urmatoarele secvențe. Variabila n
trebuie să aparțină numai domeniului indicat.

< 3 = 0,9δ3 − 5, 1≤3≤20


! 3 = 0,8δ3, −15≤3≤15
R 3 = 1,5δ3 − 333, 300≤3≤350
= 3 = 4,9δ3 + 7, −10≤3≤0.
δ[n] este semnalul impuls unitate discret.

2. Exercițiul 2
Să se realizeze o funcție care să returneze un semnal impuls unitate
discret decalat cu n0 eșantioane, precum și afișarea acestuia. Semnalul
este definit și reprezentat pe un interval finit cuprins între n1 și n211.

3. Exercițiul 3
Să se realizeze o funcție care să returneze un semnal treaptă unitate
discret decalat cu n0 eșantioane, precum și afișarea acestuia. Semnalul
este definit și reprezentat pe un interval finit cuprins între n1 și n2.

4. Exercitiul 4.
Să se genereze și să se reprezinte în domeniul indicat următoarele
semnale sinusoidale
0
< = 23 ; 3? , −15 ≤ 3 ≤ 15
17
0
! = 23 ; 3? , 0 ≤ 3 ≤ 68
17

11
Este elegant să se utilizeze relața logică 3 == 0.
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 4 87

Semnale discrete
0
R = 23 ;303 + ? , −10 ≤ 3 ≤ 10
3
0 0
= = cos U 3 + W , 0 ≤ 3 ≤ 25
√17 3
Să se dea o formulă mai simplă pentru x3(n) și să se studieze
periodicitatea secvențelor. Se va verifica și în MATLAB periodicitatea.

5. Exercițiul 5.
Să se genereze un vector cu 1000 elemente dintr-un semnal
sinusoidal: xsin=sin(2*pi*1:0.1:1000). Să se vizualizeze semnalul pentru
200 eșantioane.
Să se determine maximul, minimul media, mediana și dispersia
semnalului cu ajutorul comenzilor max, min, mean, median, std.
Să se repete aceste comenzi pentru secvențele generate de comenzile
square, sawtooth, rand, randn.

6. Exercițiul 6.
Să se scrie o funcție Matlab care să genereze o sinusoidă de lungime
finită, cu 5 argumente de intrare: 3 pentru parametrii sinusoidei si 2
pentru a specifica primul și ultimul indice al secvenței finite. Funcția va
returna un vector coloană care va conține valorile sinusoidei și
reprezentarea grafică a acesteia.

7. Exercitiul 7.
Să se modifice funcția de la exercitiul 6, astfel încât să se returneze 2
argumente: un vector al indicilor semnalului și valorile semnalului.
8. Exercitiul 8.

Cu ajutorul funcțiilor realizate, să se arate că operațiile de reflexie și


decalare nu sunt comuntative.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
88 Lucrarea 4

Prelucrarea semnalelor biomedicale

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 5

Sisteme discrete liniare şi invariante în timp

1 Considerente teoretice
Un sistem discret este un dispozitiv sau un algoritm care operează
asupra unui semnal discret, numit intrare sau excitaţie, conform unor
reguli bine definite, pentru a produce un alt semnal discret, numit ieşirea
sau răspunsul sistemului.
Semnalul de intrare x[n] este transformat de sistemul discret în
semnalul de ieşire y[n] , conform relaţiei
y[n] ≡ H [x[n]] (1)

unde H reprezintă transformarea (numită uneori şi operator) sau


procesarea realizată de sistem asupra lui x[n] pentru a produce y[n] .
1.1 Clasificarea sistemelor discrete
1.1.1 Sisteme statice şi dinamice
Un sistem discret se numeşte static sau fără memorie dacă ieşirea sa
la un moment oarecare n depinde numai de intrarea din acel moment.
În caz contrar, sistemul se numeşte dinamic sau cu memorie. Dacă
ieşirea unui sistem la un moment n este complet determinată de intrările
x[n − N ],..., x[n] ( N ≥ 0 ), se spune că acesta are memorie de ordinul N.
Dacă N este finit, sistemul este cu memorie finită, iar dacă N = ∞,
sistemul are memorie infinită.
1.1.2 Sisteme discrete invariante şi variante în timp
Prin definiţie, un sistem relaxat, descris de operatorul H este
invariant în timp dacă şi numai dacă

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
90 Lucrarea 5

Prelucrarea semnalelor biomedicale

x[n ] → y [n ] ⇒ x[n − k ] → y[n − k ] (2)


H H

pentru orice semnal de intrare x[n] şi orice deplasare k.


Pentru a determina dacă un sistem este sau nu invariant în timp se
procedează în felul următor: se consideră o intrare arbitrară x[n], care va
produce răspunsul y[n] . Se întârzie semnalul de intrare cu k unităţi şi se
recalculează ieşirea. În general, aceasta se poate scrie

y[n, k ] = H [x[n − k ]] (3)

Dacă ieşirea y[n, k ] este egală cu y[n − k ] pentru toate valorile lui k,
sistemul este invariant în timp. În caz contrar, dacă y[n, k ] ≠ y[n − k ] ,
chiar pentru o singură valoare a lui k, sistemul este variant în timp.
1.1.3 Sisteme discrete liniare şi neliniare
Prin definiţie, un sistem discret, relaxat, caracterizat de operatorul H
este liniar dacă satisface principiul superpoziţiei, adică

H [ a1 x1 [n] + a2 x2 [n] ] = a1 H [x1 [n]] + a2 H [x2 [n]] (4)

pentru orice secvenţe de intrare arbitrare x1 [n] şi x 2 [n ] şi pentru orice


constante arbitrare a1 şi a2 .
Dacă un sistem discret nu satisface principiul superpoziţiei, el se
numeşte neliniar.
1.1.4 Sisteme discrete cauzale şi necauzale
Un sistem discret este cauzal dacă ieşirea sa la un moment n, y[n] ,
depinde numai de valoarea prezentă şi cele trecute ale intrării (
x[n], x[n − 1], ...) şi de nici o valoare viitoare ( x[n + 1], x[n + 2], ...). În
caz contrar sistemul se numeşte necauzal.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 5 91

Sisteme discrete liniare şi invariante în timp

1.1.5 Sisteme discrete stabile şi instabile


Un sistem oarecare, relaxat, se spune că este stabil în sens MIME
dacă şi numai dacă orice semnal de intrare limitat produce un semnal de
ieşire limitat, adică

∃M x , M y : x[n ] ≤ M x < ∞ ⇒ y [n ] ≤ M y < ∞ , (5)


implicând condiţia
∑ | h[n] | < ∞ (6)
n

sau că toţi polii funcţiei H(z) sunt de modul subunitar.

2 Aplicaţii rezolvate
2.1 Proprietăţile sistemelor discrete.
2.1.1 Proprietatea de liniaritate pentru sistemele discrete.

% lucrarea5_ex1
% generare semanal intrare
clear all
close all
n = 0:40;
a = 2;b = -3;
x1 = cos(2*pi*0.1*n);
x2 = cos(2*pi*0.4*n);
x = a*x1 + b*x2;
%definirea sistemului
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
%calculul iesirii y1[n] si y2[n]
y1 = filter(num,den,x1);
y2 = filter(num,den,x2);
%calculul iesirii y[n]
y = filter(num,den,x);
yt = a*y1 + b*y2;
% calculul diferentei iesirilor d[n]
d = y - yt;
% afisarea iesirilor si a diferentei

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
92 Lucrarea 5

Prelucrarea semnalelor biomedicale

subplot(311)
stem(n,y);
ylabel('Amplitudine');
title('Iesire produsa suma ponderata a semnalelor de
intrare : a \cdot x_{1}[n] + b \cdot x_{2}[n]');
subplot(312)
stem(n,yt);
ylabel('Amplitudine');
title('Iesirea ponderata: a \cdot y_{1}[n] + b \cdot
y_{2}[n]');
subplot(313)
stem(n,d);
xlabel('Timp n');ylabel('Amplitudine');
title('diferenta iesirilor');

Se obțin graficile din Figura 1.


Iesire produsa suma ponderata a semnalelor de intrare : a⋅ x1[n] + b⋅ x2[n]
50
Amplitudine

-50
0 5 10 15 20 25 30 35 40
Iesirea ponderata: a ⋅ y1[n] + b⋅ y2[n]
50
Amplitudine

-50
0 5 10 15 20 25 30 35 40
-15
x 10 diferenta iesirilor
5
Amplitudine

-5
0 5 10 15 20 25 30 35 40
Timp n

Figura 1. Verificarea proprietății de liniaritate

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 5 93

Sisteme discrete liniare şi invariante în timp

2.1.2 Proprietatea de invarianţă în timp pentru sistemele discrete.

% lucrarea5_ex2
% generarea semnalului de intrare
clear all
n = 0:20;
k = input('decalarea este k=');
a = 2;b = 3;
x = a*cos(2*pi*0.1*n) + b*cos(2*pi*0.4*n);
%semnal decalat cu k unitati
xd = [zeros(1,k) x];
%definirea sistemului prin definirea coeficientilor de la
numaratorul si numitorul functiei de transfer
num = [2.2403 2.4908 2.2403];
den = [1 -0.4 0.75];
% calculul iesirii y[n]
y = filter(num,den,x);
% calculul iesirii yd[n]
yd = filter(num,den,xd);
% calculul diferentei d[n]
%[zeros(1,k) y] este iesirea decalata cu k esantioane
ydecalat=[zeros(1,k) y];
d=ydecalat-yd;
% afisarea iesirilor
subplot(411)
stem(n,y);
ylabel('Amplitudine');
title('Iesirea y[n]'); grid;
subplot(412)
stem(ydecalat)
title('Iesirea decalata cu k y[n-k]'); grid;
subplot(413)
stem(yd)%(1:21));
ylabel('Amplitudine');
title('iesirea datorata intrarii decalate cu k x[n-k]');
grid;
subplot(414)
stem(d);
xlabel('Timp n'); ylabel('Amplitudine');
title('Diferenta semnalelor'); grid;

Se obțin graficile din Figura 2.


Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
94 Lucrarea 5

Prelucrarea semnalelor biomedicale

Iesirea y[n]
Amplitudine

20
0
-20
0 5 10 15 20
Iesirea decalata cu k y[n-k]
20
0
-20
0 5 10 15 20 25
iesirea datorata intrarii decalate cu k x[n-k]
Amplitudine

20
0
-20
0 5 10 15 20 25
Diferenta semnalelor
Amplitudine

1
0
-1
0 5 10 15 20 25
Timp n

Figura 2. Verificarea proprietății de invarianță în timp

2.1.3 Proprietarea de stabilitate a sistemelor discrete (în funcţie de


răspunsul la impuls)

% lucrarea5_ex3
% stabilitatea este testata pe baza sumei raspunsurilor la
impuls
% values of the impulse response samples
clear all
close all
%definirea sistemelor
num = [1 -0.8];
den = [1 1.5 0.9];
N = 200;
%raspunsul la impuls cand sistemul este descris prin num si
den
h = impz(num,den,N+1);
suma = 0;
for k = 1:N+1;
suma = suma + abs(h(k));

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 5 95

Sisteme discrete liniare şi invariante în timp


if abs(h(k)) < 10^(-6), break, end
end
% afisarea raspunsului la impuls
n = 0:N;
stem(n,h)
xlabel('Timp n'); ylabel('Amplitudine');
title('raspunsul la impuls h[n]')
disp('Value =');disp(abs(h(k)));

raspunsul la impuls h[n]


3

1
Amplitudine

-1

-2

-3
0 50 100 150 200
Timp n

Figura 3. Verificarea proprietății de satbilitate cu ajutorul răspunsului la


impuls

3 Desfăşurarea lucrării
Exemplul 1
Se consideră programul lucrarea5_ex1.m.
Ieşirea y[n] obţinută prin ponderarea intrării şi yt[n] obţinută prin
combinarea ieşirilor y1[n] şi y2[n] cu aceleşi ponderi conduc la concluzia
ca sistemul este liniar sau neliniar?
Să se modifice programul astfel încât să simuleze sistemul
y [ n ] = x [ n ] x [ n − 1] .

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
96 Lucrarea 5

Prelucrarea semnalelor biomedicale

Comparând secvenţa y[n] cu yt[n] se poate concluziona ca sistemul


este…………..(linear sau nelinear).

Exemplul 2
Se consideră programul lucrarea5_ex2.m
Secvenţele de ieşire y[n] şi y[n-10] generate prin rularea
programului conduc la concluzia că sistemul este sau nu invariant în
timp?
Să se modifice programul astfel încât să simuleze sistemul
y [ n ] = nx [ n ] + x [ n − 1] .
Noile secvenţe de ieşire y[n] şi y[n-10] generate prin rularea
programului conduc la concluzia că sistemul este sau nu invariant în
timp?

Exemplul 3
Se consideră programul lucrarea5_ex3.m
Sistemul descris în program este stabil sau instabil?
Valoarile lui h [ k ] sunt……

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 6

Răspunsul sistemelor liniare invariante în timp la


semnale de intrare oarecare - Suma de convoluţie

1 Noţiuni teoretice
Dacă semnalul de intrare x(n) este o sumă ponderată de impulsuri
unitate, adică:

x (n ) = ∑ x(k )δ (n − k ) ,
k = −∞

atunci răspunsul sistemului liniar la aplicarea acestui semnal este:


 ∞  ∞
y (n ) = h[x(n )] = H  ∑ x(k )δ (n − k ) = ∑ x(k )H [δ (n − k )]
k = −∞  k = −∞
Dacă sistemul este invariant în timp (SIT), formula se simplifică
considerabil. De fapt, dacă răspunsul unui sistem invariant în timp (SIT)
la o secvenţă unitate δ(n) este notat cu h(n), adică
hn = HEδnG
atunci, datorită proprietăţii de invarianţă, răspunsul sistemului la o
secvenţă unitate întârziată δ(n-k) este
h3 −  = HEδ3 − G
Răspunsul sistemului la aplicarea semnalului x(n) este:
∞ ∞
y (n) = ∑ x ( k ) h ( n, k ) = ∑ x (k ) h(n − k ) (1)
k =−∞ k =−∞

Sistemele SIT sunt complet caracterizate printr-o singură funcţie


h(n), adică răspunsul la impuls unitate δ(n).
Formula (1) este numită suma de convoluţie. Se spune că între
semnalul de intrare x(n) şi răspunsul la impuls h(n) se aplică operaţia de
convoluţie pentru a se obţine ieşirea y(n).
Se va explica procedura matematică cât şi cea grafică de calcul a
răspunsului y(n), fiind date intrarea x(n) şi răspunsul la impuls h(n).

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
98 Lucrarea 6

Prelucrarea semnalelor biomedicale

Presupunem că se doreşte să se calculeze ieşirea unui sistem la un


moment n = n0.

y (n0 ) = ∑ x(k )h(n
0 − k)
k = −∞

Atât x(h), cât şi h(n0 - k) sunt funcţii de k.


1. Se reflectă h(k) faţă de 0 pentru a se obţine h(-k)
2. Se întârzie h(-k) cu n0 şi se obţine h(n0-k)
3. Se multiplică x(k) cu h(n0-k) şi se obţine x(k) h(n0-k)
4. Se sumează toate produsele pentru a se obţine valoarea ieşirii la
momentul n = n0.
Această procedură se referă la obţinerea răspunsului sistemului
pentru un singur moment de timp n0, dar în general este important
răspunsul la orice moment de timp n∈(-∞, ∞). În consecinţă, paşii 2 până
la 4 trebuie repetaţi, pentru orice întârziere n.
Trebuie specificat faptul că operaţia de convoluţie este comutativă.
3 ∗ ℎ3 = ℎ3 ∗ 3
ceea ce înseamnă că h(k) este nealterat, în schimb secvenţa de intrare este
reflectată şi defazată. Deşi y(n) este identică, produsul secvenţelor în cele
două forme ale formulei de convoluţie nu sunt identice.

2 Comenzi MATLAB
Comenzile MATLAB utilizate pentru calculul convoluţiei liniare
sunt:
conv
deconv
Pentru a calcula convoluţia discretă a două secvenţe x(n) şi h(n),
adică 3 ∗ ℎ3 , se definesc vectorii x şi h având elementele
secvenţelor x(n) şi h(n). Apoi se utilizează comanda
y = conv(x,h)
Această comandă presupune că primul element în x şi primul element
în h corespund momentului de timp n=0, astfel încât primul element al
vectorului de ieşire y corespunde la n=0. Dacă situaţia nu este aceasta,
atunci vectorul de ieşire va fi calculat corect, dar idexul elementelor
trebuie corectat. De exemplu,
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 6 99

Suma de convoluţie

x = [1 1 1 1 1];
h =[0 1 2 3];
y = conv(x,h);
conduce la y = [0 1 3 6 6 6 5 3]. Dacă indexul pentru x şi cel pentru h
sunt cei precizați anterior, atunci y[0] = 0, y[1] = 1, .... În general,
indexul primului element din y este suma dintre indexul primului element
din x şi indexul primului element din h. De exemplu, dacă primul
elemnet din h corespunde la n = -2 şi primul element din x corespunde la
n = -3, atunci primul element din y corespunde la n = -5.
Trebuie avut grijă atunci când se calculează convoluţia unor secvenţe
infinite. Dacă vectorul x are lungimea q şi vectorul h are lungimea r,
atunci trebuie ca vectorul y să fie trunchiat pentru a avea o lungime
min(q,r).
Comanda conv poate fi utilizată şi pentru a înmulţi polinoame: să
presupunem că în vectorul a sunt introduşi coeficienţii polinomului a(s)
şi în vectorul b coeficienţii polinomului b(s), atunci coeficienții
polinomului a(s)b(s) pot fi gasiţi ca elemente ale vectorului definit ca ab
= conv(a,b).
Comanda deconv este inversa convoluţiei. Poate fi utilizată pentru
împărţirea polinoamelor. Fiind date polinoamele a(s) şi b(s) cu
coeficienţii memoraţi în a şi b, atunci coeficienţii polinomului c(s) =
b(s)/a(s) se găsesc utilizând comanda c = deconv(b,a).

3 Aplicaţii rezolvate

Exemplul 1
Ilustrarea situaţiei în care indexul semnalului discret pentru primul
element este diferit de 0.
Se consideră un semnal definit astfel:
0 3 = −1
3 = \ 1 0 ≤ 3 ≤ 10
0 10 < 3 ≤ 14
Să se calculeze convoluția 3 ∗ 3.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
100 Lucrarea 6

Prelucrarea semnalelor biomedicale

% Exemplul 1
clear all
close all
x = [0 ones(1,10) zeros(1,5)]; % corespunde la n=-1 până
la n=14
y = conv(x,x);
n=-1:14;
subplot(211)
stem(n,x)
subplot(212)
stem(n(1)+n(1):n(end)+n(end),y)
title('Exemplul 1')
ylabel('x[n]*v[n]')
xlabel('n')

Se obține o reprezentare ca cea din Figura 1.

1
0.8

0.6

0.4

0.2

0
-2 0 2 4 6 8 10 12 14

Exemplul 1
10

8
x[n]*v[n]

0
-5 0 5 10 15 20 25 30
n

Figura 1. Convoluția semnalelor din Exemplul 1

Exemplul 2
Ilustrarea convoluţiei pentru semnale armonice discrete.
Se consideră două semnale discrete care au provenit din semnale
analogice cu frecvențe de 2 Hz și 5 Hz. Să se calculeze convoluția acestor

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 6 101

Suma de convoluţie

semnale și să se reprezinte semnalele și convoluția acestora.

% Exemplul 2
clear all
close all
n=0:1/100:1;
x = sin(2*pi*2*n);
h = sin(2*pi*5*n);
y = conv(x,h);
subplot(311)
stem(n,h);
title('Exemplul 2')
ylabel('h[n]')
subplot(312)
stem(n,x)
ylabel('x[n]')
subplot(313)
stem(n,y(1:length(n)))
xlabel('n')
ylabel('y[n]')

Se obține reprezentarea din Figura 2.


Exemplul 2
1
h[n]

-1
0 0.2 0.4 0.6 0.8 1
1
x[n]

-1
0 0.2 0.4 0.6 0.8 1
10
y[n]

-10
0 0.2 0.4 0.6 0.8 1
n

Figura 2. Convoluția semnalelor din Exemplul 2

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
102 Lucrarea 6

Prelucrarea semnalelor biomedicale

Exemplul 3
Ilustrarea convoluţiei pentru care indexul primelor elemente este 0.
% Exemplul 3
clear all
close all
a = input('Type in the first sequence = ');
b = input('Type in the second sequence = ');
c = conv(a, b);
M = length(c)-1;
n = 0:M;
disp('output sequence =');disp(c)
stem(n,c);
xlabel('Time index n');
ylabel('Amplitude');
title('Éxemplul 3')

Se obține reprezenatrea din Figura 3.

Éxemplul 3
60

50

40
y(n)

30

20

10

0
0 2 4 6 8 10 12 14 16
n

Figura 3. Convoluția semnalelor din Exemplul 3

Exemplul 4
Ilustrarea situaţiei în care indexul semnalului discret pentru primul
element este diferit de 0.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 6 103

Suma de convoluţie

S-a arătat că dacă se folosește funcția conv, se presupune că primul


indice de timp al fiecărei secvențe este 0. Dacă însă semnalele discrete
sunt definite pe un alt support, atunci funcția conv nu oferă nici o
informație de timp. Din această cauză, este necesar să se cunoască indicile
inferior și indicile superior al rezultatului. Se presupune că secvențele
sunt finite.
Să facem următoarele notații:
]3; 3^_ ≤ 3 ≤ 3^4 `
aℎ3; 3b_ ≤ 3 ≤ 3b4 c.
Se arată că:
ad3; 3^_ + 3b_ ≤ 3 ≤ 3^4 + 3b4 c
Se realizează o funcție, pe care o numim convolutie.m ce permite
calculul a două secvențe definite pe suporturi diferite de timp.

function [y,ny]=convolutie(x,h,nx,nh)
nxi=nx(1);
nxs=nx(end);
nhi=nh(1);
nhs=nh(end);
nyi=nxi+nhi;
nys=nxs+nhs;
ny=nyi:nys;
y=conv(x,h);
subplot(311)
stem(nx,x)
subplot(312)
stem(nh,h)
subplot(313)
stem(ny,y)

Se efectuează convoluția următoarele secvențe:


3 = E1 1 1 1 1 1 1G , − 3 ≤ 3 ≤ 3
ℎ3 = E1 1 1 1 1 1 G , − 1 ≤ 3 ≤ 4
și se obție reprezentare din Figura 4.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
104 Lucrarea 6

Prelucrarea semnalelor biomedicale

0.5

0
-3 -2 -1 0 1 2 3
1

0.5

0
-1 0 1 2 3 4
6

0
-4 -2 0 2 4 6 8

Figura 4. Convoluția semnalelor din Exemplul 4 (folosind funcția convolutie.m)

4 Aplicaţii propuse

Exercițiul 1
Se dau secvenţele:
1, daca n = 0,1,2,3,4,5
x[n] = 
 0, in rest
n + 1, daca n = 0,1,2
h[n] = 
 0, in rest

Exercițiul 2
Calculaţi analitic y[n] = x[n] ∗ h[n] şi verificaţi rezultatul,folosind
funcţia conv.m.
Arătaţi că operaţia de convoluţie este asociativă (se vor folosi
h ( n ) = 0,5n h2 ( n ) = 0,3n n = [1: 20]
semnalele 1 , , ).

Exercițiul 3
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 6 105

Suma de convoluţie

Se dau secvenţele:
x[n] = u[n] − u[n − N ]
h[n] = α n ⋅ u[n]
a) Calculaţi convoluţia lor pe suportul n = [0,99] pentru cazurile
N = 50;α = 0,5 şi N = 50;α = 1 .
b) generaţi cu ajutorul programului MATLAB cele două secvenţe
pe suportul n = 0,99 şi calculaţi convoluţia lor liniară.
c) reprezentaţi grafic secvenţele x[n], h[n] , precum şi secvenţele
rezultate la punctul b).

Exercițiul 4
Să se scrie un program prin care să se arate că filtrarea este o operaţie
de convoluţie.

Exercițiul 5
Se consideră două semnale discrete x(n) și h(n).
3 = 4e3 − 1 + 3e3 − 2 + 2e3 − 3
ℎ3 = Ee3 + e3 − 1G/2
1. Să se calculeze manual convoluția celor două secvențe.
2. Scrieți un program MATLAB în care să se afișeze cele două
semnale
3. Calculați în acest program convoluția, utilizând comanda conv.
4. Afișați semnalele și rezultatul convoluției utilizând comanda
subplot.
5. Descrieți natura efectului răspunsului la impuls h(n).

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
106 Lucrarea 6

Prelucrarea semnalelor biomedicale

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 7

Corelaţia şi autocorelaţia secvenţelor 1D

1 Consideraţii teoretice
1.1 Funcţia de corelaţie şi funcţia de autocorelaţie a semnalelor
deterministe discrete
Corelaţia este o operaţie matematică care seamănă cu convoluţia
deoarece:
- pentru ambele operaţii sunt necesare două semnale;
- formulele lor de definiţie sunt asemănătoare.
Spre deosebire de convoluţie, obiectivul corelaţiei este acela de a
măsura gradul de similitudine dintre cele două semnale implicate.
Corelaţia este o operaţie utilă în multe aplicaţii ca: geologie, radar,
comunicaţii digitale, bioinginerie.
Fie două semnale discrete, x(n) şi y(n), pe care dorim să le
comparăm. Presupunem că ambele semnale sunt de energie finită.
Funcţia de corelaţie sau intercorelaţie dintre semnalele x(n) şi y(n)
este o secvenţă, notată rxy(l), care este definită cu relaţia:
∞ (1)
rxy (l ) = ∑ x(n )y (n − l ) , l∈Z
n = −∞
sau
∞ (2)
rxy (l ) = ∑ x(n + l )y (n ) , l∈Z .
n = −∞

l reprezintă decalajul în timp; indicele xy arată secvenţele pentru care


se defineşte funcţia de corelaţie. Ordinea indicilor („xy”) arată direcţia în
care este aplicat decalajul. Dacă se inversează rolul celor două secvenţe,
se obţine:

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
108 Lucrarea 7

Prelucrarea semnalelor biomedicale

∞ (3)
ryx (l ) = ∑ y(n )x(n − l )
n = −∞

sau, relaţia echivalentă


∞ (4)
ryx (l ) = ∑ y(n + l )x(n) .
n = −∞
Comparând relaţiile (1) şi (2) cu (3), respectiv (4) se observă că

rxy (l ) = ryx (− l ) (5)

Legătura dintre convoluţia şi corelaţia celor două secvenţe, x(n) şi


y(n), este dată de relaţia

rxy (l ) = x(l ) ∗ y (− l ) (6)

Atunci când x(n) = y(n) se defineşte funcţia de autocorelaţie, rxx(l), ca


fiind

∞ (7)
rxx (l ) = ∑ x(n )x(n − l ),
n = −∞
sau, cea echivalentă:

∞ (8)
rxx (− l ) = ∑ x(n + l )x(n)
n = −∞

Când secvenţele sunt de durată finită şi limitele de sumare sunt finite


În particular, dacă x(n) şi y(n) sunt secvenţe cauzale de lungime N, (x(n) =
y(n) = 0 pentru n ∉ (0, N ] ) funcţia de corelaţie devine

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 7 109

Corelaţia şi autocorelaţia secvenţelor 1D

N − k −1 (9)
rxy (l ) = ∑ x(n )y(n − l )
n=i

iar cea de autocorelaţie este

N − k −1 (10)
rxx (l ) = ∑ x(n )x(n − l ) ,
n=i

unde: i = 1, k = 0 pentru l ≥ 0 si i = 0, k = 1 pentru l < 0.


Calculul funcţiei de corelaţie este mai simplu decât cel al sumei de
convoluţie. Calculul funcţiei de corelaţie, rxy (l), cu formula dată de relaţia
(1) presupune parcurgerea următorilor paşi:
1. Se translează y(n) cu l unităţi
- spre dreapta, dacă l este pozitiv;
- spre stânga, dacă l este negativ.
2. Se multiplică x(n) cu y(n-l) .
3. Se adună toate produsele calculate la punctul anterior.
Între funcţia de corelaţie şi energiile celor două semnale există relaţia

rxy (l ) ≤ rxx (0 )ryy (0) = E x E y (11)

Dacă x(n) = y(n) se obţine:

rxx (l ) ≤ rxx (0 ) = E x (12)

Acest lucru arată că funcţia de autocorelaţie a unui semnal discret


este maximă în origine.
Dacă una din cele două secvenţe x(n) sau y(n) este multiplicată cu un
scalar, forma funcţiei de corelaţie nu se modifică, ci doar amplitudinea sa.
Deoarece scalarea nu este importantă pentru operaţia de corelaţie, în
practică se recurge la normalizarea secvenţelor de corelaţie şi
autocorelaţie în domeniul cuprins între -1 şi 1.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
110 Lucrarea 7

Prelucrarea semnalelor biomedicale

Funcţia de autocorelaţie normalizată se defineşte astfel:

rxx (l ) (13)
ρ xx (l ) =
rxx (0)

Similar, funcţia de corelaţie normalizată se defineşte ca fiind

rxy (l ) (14)
ρ xy (l ) =
rxx (0)ryy (0)

Evident,
ρ xx (l ) ≤ 1 si ρ xy (l ) ≤ 1 . (15)

Prin urmare, aceste secvenţe sunt independente de scalarea


semnalului.
Aplicând relaţia (5) pentru x(n)=y(n), se obţine:

rxx (l ) = rxx (− l ) (16)

adică funcţia de autocorelaţie este o funcţie pară. Prin urmare, este


suficient să se calculeze rxx(l) pentru l ≥ 0.
2 Comenzi MATLAB
c = xcorr (A,B), unde A şi B sunt vectori de lungime M , returnază o
secvenţă de corelaţie de lungime 2*M-1 într-un vector coloană
c = xcorr (A), unde A este un vector, este secvenţa de autocorelaţie.
c = xcorr (A,B,’option’), este similară celor de mai sus şi specifică
o opţiune de scalare:

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 7 111

Corelaţia şi autocorelaţia secvenţelor 1D

- biased
- unbiased
- coeff normalizează secveţa atfel încât funcţia de autcorelaţie
este 1 pentru dacalaj 0.
[c,lags] = xcorr (A,B,’option’), returnează într-un vector c de
lungime 2M-1 funcţia de corelaţie, iar într-un vector lags decalajele
3 Aplicații rezolvate
3.1 Corelația unui semnal perturbat cu zgomot aditiv
Se consideră o secvență x(n) egală cu

3 = E13 11 17 2 − 10 − 8 6G, cu 0 = −5.

Se consideră secvența sa întârziată și perturbată cu zgomot aditiv:

d3 = 3 − 2 + g3,


unde w(n) este semnalul de zgomot (semnal aleator cu distribuție
Gaussiană având media 0 și dispersia egală cu 1).
Prin construcție, y(n) este foarte similar cu x(n-2) și, prin urmare
funcția de corelație a acestor secvențe trebuie să pună în evidență cea mai
puternică similaritate în l=2. Pentru a verifica acest lucru, se va calcula
funcția de corelație1. Pentru calculul corelației se va folosi relația dintre
corelație și convoluție.

%semnal perturbat aditiv cu zgomot-folosind convolutia


clear all
close all
x=[13 11 17 2 -10 -8 6 ];%semnal iniíal
nx=-3:3;% suportul de timp pentru care este definit x(n)
k=2;% decalajul
[xd,nxd]=decalare(x,nx(1),nx(end),k);% semnal x decalat cu
k esantioane
w=randn(1, length(xd));%semnal de zgomot
nw=nxd;

1
Se folosesc funcții realizate în Lucrarea 6.
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
112 Lucrarea 7

Prelucrarea semnalelor biomedicale

[y,ny]=adunare_semnale(xd,nxd,w,nw);%adunare semnal decalat


cu semnal de zgomot
[xr,nxr]=reflexie(x,nx);%semnal reflectat
% corelatia calculata ca si convolutie dinte primul semnal
si al doilea reflectat
[ryxr,nryxr]=convolutie(y,xr,ny,nxr);
close all
figure
stem(nryxr,ryxr)
title('corelatia semnalului perturbat cu zgomot cu semanlul
intarziat')
w=randn(1, length(xd));
nw=nxd;
y=xd+w;
ny=nxd;
[xr,nxr]=reflexie(x,nx);
figure
[ryxr,nryxr]=convolutie(y,xr,ny,nxr);
figure
stem(nryxr,ryxr)
title('corelatia semnalului perturbat cu zgomot cu semanlul
intarziat')

Dacă se rulează programul, se obțin reprezentarile din Figura 1.

corelatia semnalului perturbat cu zgomot cu semnalul initial


1000

800
X= 2
Y= 805.2102
600

400

200

-200

-400
-4 -2 0 2 4 6 8

(a)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 7 113

Corelaţia şi autocorelaţia secvenţelor 1D

corelatia semnalului perturbat cu zgomot cu semnalul initial


800
X= 2
Y= 797.2821

600

400

200

-200

-400
-4 -2 0 2 4 6 8

(b)
Figura 1. Reprezentarea funcției de corelație dintre semnalul perturbat cu
zgomot aditiv și senalul întârziat

Din Figura 1 se observă că, pentru ambele situații (diferă numai


semnalul de zgomot suprapus peste semnalul decalat), corelația este
maximă pentru decalaj l=2.
Se poate folosi direct funcția xcorr.m. Astfel aceeași problemă poate
fi soluționată cu următorul program MATLAB.

%semnal perturbat aditiv cu zgomot-folosind convolutia


clear all
close all
x=[13 11 17 2 -10 -8 6 ];%semnal iniíal
nx=-3:3;% suportul de timp pentru care este definit x(n)
k=2;% decalajul
[xd,nxd]=decalare(x,nx(1),nx(end),k);% semnal x decalat cu
k esantioane
w=randn(1, length(xd));%semnal de zgomot
nw=nxd;
[y,ny]=adunare_semnale(xd,nxd,w,nw);%adunare semnal decalat
cu semnal de zgomot
[r,lag]=xcorr(y,x);
stem(lag,r)
title('corelatia semnalului perturbat cu zgomot cu semanlul
initial')

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
114 Lucrarea 7

Prelucrarea semnalelor biomedicale

Autocorelația sau corelația calculată cu funcția xcorr.m, are un


decalaj egal cu 0 în mijlocul secvenței (adică se returnează un decalaj
între –maxlag și maxlag). Din acest motiv, se obține reprezentarea din
Figura 2 (când se rulează programul anterior).

corelatia semnalului y(n) cu semnalul initial x(n)


800

600

400

200

-200

-400
-6 -4 -2 0 2 4 6

Figura 2. Reprezentarea funcției de corelație dintre semnalul perturbat cu


zgomot aditiv și senalul întârziat (utilizând xcorr.m)

3.2 Corelaţia semnalelor utilizată pentru analiza morfologică a


semnalelor biomedicale
A. Analiza activităţii creierului este descrisă prin apariţia anumitor
ritmuri (semnale de anumite frecvenţe) ce pot fi studiate analizând
semnalele EEG. Metodele de corelaţie pot fi utilizate pentru a analiza
similitudinile între două semnale EEG înregistrate pe diferite zone ale
scalpului. Funcţia de corelaţie pune în evidenţă vârfuri pentru perioade ale
undelor prezente în ambele semnale analizate. Astfel funcţia de
intercorelaţie poate fi utilizată pentru detecţia ritmurilor comune prezente
în două semnale, de exemplu în înregistrările EEG de pe două canale.
Funcţia de autocorelaţie pune în evidenţă vârfuri la intervale
corespunzând perioadelor anumitor ritmuri prezente în semnal (sau
multipli întregi ai acestora). Această proprietate facilitează determinarea
ritmurilor prezente pe un anume canal într-un semnal EEG.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 7 115

Corelaţia şi autocorelaţia secvenţelor 1D

Exemplu: se consideră o înregistrare EEG pe canalul o4 pe intervalul


4 – 5,81s şi apoi pe canalul c4 pe acelaşi interval, în cazul în care
subiectul stă cu ochii închişi şi roteşte mental un corp în spaţiu. Se
calculează funcţia de autocorelaţie pentru ambele cazuri. Se obţin
reprezentările din Figura 1.

Figura 1. Reprezentarea unei înregistrări EEG şi a funcţiei de autocorelaţie


pentru canalul o4

Printr-un algoritm de detecţie a vârfurilor (şi chiar prin inspecţie


vizuală) se stabileşte că funcţia de autocorelaţie are vârfuri la întârzieri de
0,1s şi multipli întregi de 0,1s, ceea ce conduce la o frecvenţă egală cu
10Hz.

B. Fișierul neural data.mat2 conține două forme de undă, z și y,


înregistrate de la doi neuroni diferiți din creier. Perioada de eșantionare
este de 0,2 ms. Se presupune că sunt implicați în aceeași funcție , dar sunt
separați de una sau mai multe sinapse (neuronal junctions) care ar
determina o întârziere a semnalului.

2
S-a folosit exemplul din cartea Semmlow J., Signals and Systems for
Bioengineers: A MATLAB-based Introduction, Academic Press, 2011
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
116 Lucrarea 7

Prelucrarea semnalelor biomedicale

Să se afișeze cele două semnale, să se determine dacă prezintă


similarități și dacă da, să se afle întârzierea atunci când gradul de
similitudine este cel mai ridicat.

% lucrarea 7 -exemplul 2
clear all; close all;
fs = 1/0.0002; % frecventa de
esantionare
load neural_data.mat;
t = (1:length(x))/fs; % vectorul de timp
subplot(211);
plot(t,y,'r',t,x,':k');
xlabel('Timp(sec)','FontSize',14);
ylabel('x(t) si y(t)','FontSize',14);
[rxy,lags] = axcor(x,y); % calcul corelatie
cu axcor (functie realizata)
subplot (212);
plot(lags/fs,rxy,'k'); % and plot
crosscorrelation
xlabel('Timp (sec)','FontSize',14);
ylabel('rxy','FontSize',14)
[max_corr, max_shift] = max(rxy);
disp([max_corr lags(max_shift)/fs])

1
x(t) si y(t)

0.5

-0.5
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4
Timp(sec)
0.6

0.4
rxy

0.2

-0.2
-0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4
Timp (sec)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 7 117

Corelaţia şi autocorelaţia secvenţelor 1D

4 Desfăşurarea lucrării

Exercițiul 1
Să se scrie un program care să calculeze pas cu pas funcţia de
corelaţie a două secvenţe discrete şi să reprezinte grafic rezultatul obţinut.
Se vor considera ecvenţele: x(n) = [1 3 − 2 1 2 − 1 4 4 2] şi
y(n ) = [2 − 1 4 1 − 2 3] . Să se verifice rezultatul folosind funcţia
xcorr(A,B).

Exercițiul 2
Utilizând programul realizat să se calculeze şi să se afişeze funcţia de
autocorelaţie a secvenţei x(n) de la punctul precedent. Concluzii.

Exercițiul 3
Să se calculeze şi să se afişeze funcţia de corelaţie a secvenţei x(n) cu
y(n ) = x(n − 2) . Concluzii.

Exercițiul 4
Să se calculeze funcţia de autocorelaţie a secvenţei x(n) în situaţia în
care este perturbat aditiv cu un zgomot aleator (se va utiliza funcţia rand.
Concluzii.
Exercițiul 5
Să se determine perioada unei secvenţe armonice
x(n ) = cos(0.25πn ), 0 ≤ n ≤ 95 , pertubate aditiv cu un zgomot având
amplitudinea distribuită uniform în domeniul [-0,5, 0,5] .

Exercițiul 6
Se consideră fişierele s1base1.dat şi s1rotate1.dat. Să se vizualizeze
înregistrările EEG din fişierele existente.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
118 Lucrarea 7

Prelucrarea semnalelor biomedicale

- să se extragă reprezentările de pe fiecare canal;


- să se reprezinte funcţiile de autocorelaţie pentru diferite canale
(pentru lungimi de 500 eşantioane);
- să se reprezinte funcţiile de corelaţie dintre diferite canale
(pentru lungimi de 500 eşantioane).
Concluzii.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8

Transformata Fourier discretă (TFD)


aplicată secvenţelor 1D
1 Noţiuni teoretice
Transformata Fourier şi seria Fourier implică descompunerea
semnalului discret în semnale sinusoidale discrete de diferite frecvenţe,
adică reprezentarea în domeniul frecvenţă, fiind instrumente matematice
utile în analiza şi proiectarea sistemelor invariante în timp.
În cazul semnalelor periodice, descompunerea se face în serie
Fourier, iar în cazul semnalelor aperiodice, descompunerea se face
apelând la transformata Fourier.
1.1 Seria Fourier pentru semnale discrete periodice
Fie o secvenţă periodică x(n) cu perioada N, adică:
x (n ) = x (n + N ) , n ∈ N . (1)
Seria Fourier a semnalului discret x(n) (DTFS) se exprimă ca:
N −1 j 2 πkn
x (n ) = ∑ ck e N , (2).
k =0

unde {ck } sunt coeficienţii seriei Fourier şi se calculează cu expresia:


n
1 N −1 − j 2 πl
ck = ∑ x (n )e
N n =0
N l = 1,2 ,...., N − 1 . (3)

Coeficienţii {ck } ai seriei Fourier formează spectrul semnalului


discret periodic x(n). Spectrul unui semnal discret periodic, cu perioada N,
este o secvenţă periodică cu perioada N. Deci orice N eşantioane
consecutive ale semnalului sau ale spectrului său asigură o descriere
completă a semnalului în domeniul timp, respectiv frecvenţă.
Dacă semnalul x(n) este real (x*(n) = x(n)) atunci

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
120 Lucrarea 8

Prelucrarea semnalelor biomedicale

ck = c N − k si ∠c k = −∠ c N − k (4)
adică:
c0 = cN si ∠c0 = −∠cN ,
c1 = cN −1 si ∠c1 = −∠cN −1 , (5)
M

cN = cN si ∠cN = 0, n par ,
2 2 2

c( N −1) = c( N +1) si ∠c( N −1) = −∠c( N +1) , n impar .


2 2 2 2

Pentru un semnal real, este suficient să se afle spectrul ck, numai pentru
N (N par) și numai pentru N − 1 (N impar). Acest lucru este în
k = 0, k = 0,
2 2
concordanță cu faptul că domeniul pulsațiilor ω al semnalelor discrete
reale este [0, π ] 14.
Puterea medie a unui semnal discret periodic cu perioada N se
definește cu formula
În funcție de coeficienții seriei Fourier, puterea medie se poate scrie

N −1
2
Px = ∑ ck . (6)
n =0
2
Secvența ck pentru k = 0,1,…,N-1 este distribuția de putere în
funcție de frecvență și se numește spectrul densității de putere.
Referindu-ne doar la module, densitatea spectrală de putere nu conține
nici o informație despre fază.
Spectrul densității de putere a unui semnal discret periodic este
discret și periodic, cu periada egală cu cea a semnalului.
1.2 Transformata Fourier pentru semnale discrete aperiodice
Transformata Fourier a unui semnal discret aperiodic, notat x(n), se
defineşte ca:

14 N k
0≤k ≤ ⇒ 0 ≤ 2k ≤ N ⇒ 0 ≤ 2πk ≤ πN ⇒ 0 ≤ 2π ≤ π ⇒ 0 ≤ 2πf ≤ π ⇒ 0 ≤ ω ≤ π
2 N

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 121

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D


X (ω) = ∑ x (n )e − jωn . (7)
n = −∞
X(ω) reprezintă descompunerea semnalelor x(n) în domeniul
frecvenţă și este cunoscută sub denumirea de Transformata Fourier
Discretă (TFD, acronimul în limba engleză este DFT- Discrete Fourier
Transform).
Domeniul de frecvenţă al transformatei Fourier în cazul semnalelor
discrete este [− π, π] sau, echivalentul [0,2π]. X(ω) este periodică, cu
perioada 2π.
Deoarece semnalul este discret în timp, transformata Fourier a
semnalelor dicrete implică o sumă de termeni în loc de o integrală, ca în
cazul semnalelor analogice.
Notând cu xN şi XN vectorii corespunzători valorilor semnalului,

−j
respectiv valorilor TFD a acestuia şi w N = e N
o rădăcină de ordin N a
unităţii, DFT în N puncte se exprimă în formă matriceală.
X N = WN ·xN (8)
unde WN este matricea transformării liniare, cu elementele
WN (i, k ) = ( wN ) .
ik

Transformata Fourier discretă inversă se obţine cu


1 (9)
x N = W N* X N
N
unde W N* este conjugata lui WN.
Transformata Fourier inversă este dată de relaţia:
1
x (n ) = ∫ X (ω)e jωn dω . (10)
2π 2π

definește transformată Fourier Discretă Inversă (ITFD, acronimul în


engleză este IDFT) și permite refacerea semnalului x(n) eșantioanele
spectrului.
Se consideră cazul semnalelor discrete de energie finită.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
122 Lucrarea 8

Prelucrarea semnalelor biomedicale

Energia semnalelor discrete aperiodice, în funcție de componentele


spectrale ale semnalului, este dată de relația:
π
1
∫ X (ω )
2
Ex = dω (11)
2π −π
și este cunoscută și sub denumirea de relația lui Parseval pentru semnale
discrete aperiodice, de energie finită.
Cantitatea
S xx (ω ) = X (ω )
2
(12)
este cunoscută sub denumirea de densitate spectrală de energie a
secvenței x(n). Fiind vorba de modul, Sxx(ω) nu conține nici o informație
de fază.
Dacă se presupune că x(n) este un semnal real atunci
X ∗ (ω ) = X (− ω ) ,

X (− ω ) = X (ω ) , (13)

∠X (− ω ) = −∠X (ω ) .

Prin urmare, se obține:


S xx (− ω ) = S xx (ω ) , (14)
ceea ce înseamnă că domeniul de frecvență al semnalelor discrete reale
poate fi limitat în domeniul frecvență la pulsații ω ∈ [ 0,π ] sau
 π π.
ω ∈ − , 
 2 2

1.3 Proprietăţile transformatei Fourier discrete


Proprietăţile transformatei Fourier discrete sunt grupate în Tabelul 1.

Tabelul 1. Proprietăţile transformatei Fourier

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 123

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

Proprietatea Domeniul timp Domeniul frecvenţă

Liniaritatea a1x(n ) + a2 x(n ) a1 X 1 (ω) + a2 X 2 (ω)

Decalarea în domeniu
x(n − k ) e − jωk X (ω)
timp
Reflexia în domeniul
x (− n ) X (− ω)
timp

Convoluţia x1 (n ) ∗ x2 (n ) X 1 (ω) ⋅ X 2 (ω)

Corelaţia rx1 x2 (l ) = x (l ) ∗ x (− l ) R x1 x2 (ω) == X 1 (ω) ⋅ X 2∗ (ω)

Teorema Wiener-
rxx (l ) S xx (ω)
Khintchine

X (ω − ω0 )
Decalajul în domeniul
e jω0n x (n )
frecvenţă
1 1
Modularea x (n ) cos ω0 n X (ω + ω0 ) + X (ω − ω0 )
2 2
∞ ∞
Teorema lui Parseval ∑ x1 (n )x2∗ (n ) ∫ X1(ω )X 2 (ω )dω

n =−∞ −∞
π
x1 (n )x 2 (n )
1
X 1 (λ ) X 2 (ω − λ )dλ
2π −∫π
Multiplicarea

Diferenţierea în domeniul dX (ω)


nx(n ) j
frecvenţă dω

Conjugata
x ∗ (n ) X ∗ (ω)
transformatei

2 Comenzi MATLAB folosite pentru calculul


transformatei Fourier discrete directe şi inverse

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
124 Lucrarea 8

Prelucrarea semnalelor biomedicale

Scopul lucrării este acela de a defini, implementa şi de a pune în


evidenţă unele dintre proprietăţi ale Transformatei Fourier Discrete cu
ajutorul programului MATLAB.
Transformata Fourier a unui semnal discret este instrumentul
principal pentru prelucrarea semnalelor discrete. Baza pentru Signal
Processing Toolbox o constituie metoda transformatei Fourier rapide
FFT-ul (Fast Fourier Transform) ce constă în calculul transformatei
Fourier discrete într-un timp redus. Multe din funcţiile din Toolbox
incorporează FFT-ul.
MATLAB-ul asigură funcţiile fft şi ifft pentru calculul transformatei
Fourier directe şi, respectiv, a inversei sale.
fft(x) este transformata Fourier discretă a vectorului x. Dacă lungimea
lui x este o putere a lui 2, se utilizează un algoritm de calcul al
transformatei Fourier rapide de tip radăcină a lui 2. Dacă lungimea lui x
nu este o putere a lui 2 se utilizează un algoritm mai puţin rapid, bazat pe
numere prime.
Dacă lungimea lui x este reprezentată de un număr prim, se
descompune problema în N puncte în trei probleme în N-1 puncte,
utilizându-se algoritmul Rader, apoi descompunerea pentru calulul
transformatei Fourier discrete în N-1 puncte.
Pentru matrici, operaţia FFT se aplică fiecărei coloane.
fft(x,N) este FFT în N-puncte, completată cu zerouri dacă x are mai
puţine puncte decât N puncte şi trunchiată dacă are mai multe.
fft(x,[],DIM) sau fft(x,N,DIM) efectuează FFT pe dimensiunea DIM.
Dacă vectorul x are lungimea N, tansformata Fourier discretă este un
vector X de lungime N.
fftshift(X) mută decalajul de zerouri în centrul spectrului. Pentru
vectori returnează un vector cu partea dreaptă şi stângă schimbate. Pentru
matrici fftshift(X) schimbă cadranele unu şi trei, doi şi patru.
Q = unwrap(P) corectează fazele exprimate în radiani din vectorul P,
prin adăugarea de ±20 atunci când valoarea absolute a saltului dintre
elemente consecutive din P este mai mare sau egal cu valoarea implicită a
saltului egală cu 0.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 125

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

Exemplu: Se consideră un semnal discret x(n) definit de relaţia:

3 = sin20153 + sin20403

Secvenţa MATLAB ce calculează TFD, amplitudinea şi faza sa este:

clear all
close all
n=0:1/99:1;
x=sin(2*pi*15*n)+sin(2*40*pi*n);
X=fft(x);
a=fftshift(abs(X)); b=unwrap(angle(X));1
subplot(211),stem(a),subplot(212),stem(b)

Se obține reprezentarea din Figura 1.

50

40

30

20

10

0
0 20 40 60 80 100

-5

-10

-15

-20
0 20 40 60 80 100

Figura 1. Graficele amplitudinii şi fazei transformatei Fourier discrete

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
126 Lucrarea 8

Prelucrarea semnalelor biomedicale

dftmtx(n) este o matrice complexă cu valori de-a lungul cercului


unitate, a cărui produs cu un vector coloană calculează TFD a vectorului,
y=dftmtx(n)*x (y este TFD a secvenţei x).
În practică, TFD se calculează mai efficient și se utilizează mai
puțină memorie cu algoritmul fft.
În cele ce urmează se arată calculul TFD folosinf atât dftmtx.m cât și
fft.m.

% diferenta dintre utilizarea fft si utilizarea dftmtx


clear all
close all
x = 1:100;
x=x';
y1 = fft(x);
n = length(x);
y2 = dftmtx(n)*x;
norma=norm(y1-y2)
norma =
9.6899e-013

Se mai poate folosi și funcția freqz.m pentru a calcula transformata


Fourier. Astfel
h = freqz(b,a,w) returnează răspunsul în frecvență (vectorul h)
calculat la pulsațiile (radiani/eșantion) aflate în vectorul w. Vectorul w
poate avea orice lungime.
Matricea transformatei Fourier inverse discrete este:
Ai = conj(dftmtx(n))/n
Pentru calculul transformatei Fourier inverse există diferite funcții
MATLAB.
ifft(X) este invera transformatei Fourier discrete a lui X.
ifft(X,N) este invera transformatei Fourier discrete a lui X în N-
puncte.
ifft(X,[],DIM) sau ifft(X,N,DIM) este invera transformatei discrete
Fourier a lui X pe dimensiunea DIM.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 127

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

3 Aplicaţii rezolvate
3.1 Exemplul 1- transformata Fourier discretă

% Exemplul 1
% Evalueaza DFT
clear all
close all
% Se calculeaza pulsatiile la care se evalueaza DFT
w = -4*pi:8*pi/511:4*pi;
num = [2 1];den = [1 -0.6];
h = freqz(num, den, w);
% Afisarea raspunsului in frecventa
subplot(2,1,1)
plot(w/pi,real(h));grid
title('Partea reala din H(omega})')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,1,2)
plot(w/pi,imag(h));grid
title('Partea imaginara din H(omega})')
xlabel('\omega /\pi');
ylabel('Amplitudine');
figure
subplot(2,1,1)
plot(w/pi,abs(h));grid
title('Spectrul de amplitudine |H(omega})|')
xlabel('\omega /\pi');
ylabel('Amplitudine');
subplot(2,1,2)
plot(w/pi,angle(h));grid
title('Spectrul de faza arg[H(omega})]')
xlabel('\omega /\pi');
ylabel('Faza in radiani');

Se obțin reprezentările din Figura 2 (a și b)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
128 Lucrarea 8

Prelucrarea semnalelor biomedicale

Partea reala din H(omega})


8

Amplitudine 6

0
-4 -3 -2 -1 0 1 2 3 4
ω /π
Partea imaginara din H(omega})
4

2
Amplitudine

-2

-4
-4 -3 -2 -1 0 1 2 3 4
ω /π

(a)

Spectrul de amplitudine |H(omega})|


8

6
Amplitudine

0
-4 -3 -2 -1 0 1 2 3 4
ω /π
Spectrul de faza arg[H(omega})]
2
Faza in radiani

-1

-2
-4 -3 -2 -1 0 1 2 3 4
ω /π

(b)
Figura 2. Modulul și faza transformatei Fourier discrete (Exemplul 1)

3.2 Exemplul 2 - proprietatea de deplasare în timp a DFT


Programul îşi propune să pună în evidenţă influenţa deplasării în timp
a unei secvenţe discrete asupra spectrului de amplitudine şi de fază. Se

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 129

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

consideră un semnal discret x(n) și un semnal deplasat cu k eşantioane la


dreapta.
% Exemplul 2
% Proprietatea de deplasare in timp a DFT
clear all
close all
w = -pi:2*pi/255:pi; %pulsatiile la care se calculeaza
raspunsul in frecventa
wo = 0.4*pi;
k = 10;
x = [1 2 3 4 5 6 7 8 9];
X = freqz(x, 1, w);
Xd = freqz([zeros(1,k) x], 1, w);
subplot(221)
plot(w/pi,abs(X));grid
title('Modulul Transformatei Fourier a secventei initiale')
subplot(222)
plot(w/pi,abs(Xd));grid
title('Modulul Transformatei Fourier a secventei deplasate')
subplot(223)
plot(w/pi,angle(X));grid
title('Faza Transformatei Fourier a secventei date')
subplot(224)
plot(w/pi,angle(Xd));grid
title('Faza Transformatei Fourier a secventei deplasate')

Modulul Transformatei Fourier a secventei initiale Modulul Transformatei Fourier a secventei deplasate
45 45

40 40

35 35

30 30

25 25

20 20

15 15

10 10

5 5

0 0
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Faza Transformatei Fourier a secventei date Faza Transformatei Fourier a secventei deplasate
4 4

3 3

2 2

1 1

0 0

-1 -1

-2 -2

-3 -3

-4 -4
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Figura 3. Exemplificarea proprietății de deplasare în timp a DFT

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
130 Lucrarea 8

Prelucrarea semnalelor biomedicale

Ce observaţi din punct de vedere al modulului Transformatei Fourier;


dar din perspectiva fazei? Cum explicaţi rezultatul obţinut?

3.3 Exemplul 3.- proprietatea de deplasarea în frecvenţă a DFT


Programul pune în evidenţă deplasarea spectrului unei secvenţe
discrete ca urmare a înmulţirii acesteia cu o secvenţă exponenţială
jω0 n
complexă în timp e .

% Exemplul 3
% Proprietatea de deplasare in frecventa
clear all
close all
w = -pi:2*pi/255:pi;
wo = 0.4*pi;
x1=[1 2 3 4 5 6 7 8 9];
L = length(x1);
X1 = freqz(x1, 1, w);
n = 0:L-1;
x2 = exp(wo*i*n).*x1;
X2 = freqz(x2, 1, w);
subplot(221)
plot(w/pi,abs(X1));grid
title('Spectrul de amplitudine al secventei initiale')
subplot(222)
plot(w/pi,abs(X2));grid
title('Spectrul de amplitudine al secventei deplasate in
frecventa')
subplot(223)
plot(w/pi,angle(X1));grid
title('Spectrul de faza al secventei initiale')
subplot(224)
plot(w/pi,angle(X2));grid
title('Spectrul de faza al secventei deplasate in frecventa')

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 131

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

Spectrul de amplitudine al secventei initiale Spectrul de amplitudine al secventei deplasate in frecventa


45 45

40 40

35 35

30 30

25 25

20 20

15 15

10 10

5 5

0 0
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Spectrul de faza al secventei initiale Spectrul de faza al secventei deplasate in frecventa


4 4

3 3

2 2

1 1

0 0

-1 -1

-2 -2

-3 -3

-4 -4
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Figura 4. Exemplificarea proprietății de deplasare în frecvență a DFT

Se vor face aceleaşi observaţii ca şi la Exemplul 2.


Următoarele două programe pun în evidenţă dualitatea timp-
frecvenţă, şi anume:
-convoluţie în timp reprezintă produs în frecvenţă;
-produs în timp reprezintă convoluţie în frecvenţă.
3.4 Exemplul 4.- proprietatea de convoluţie a DFT
% Exemplul 4
% Proprietatea de convolutie a DFT
clear all
close all
w = -pi:2*pi/255:pi;
x1 = [1 2 3 4 5 6 7 8 9];
x2 = [1 1 1 -2 1];
y = conv(x1,x2);
X1 = freqz(x1, 1, w);
X2 = freqz(x2, 1, w);
X = X1.*X2;% produsul transformatelor Fourier
Y = freqz(y,1,w);% transformata Fourier a convolutiei
subplot(221)
plot(w/pi,abs(X));grid
title('Modulul produsului dintre DFT ale celor doua secvente')
subplot(222)
plot(w/pi,angle(Y));grid
title('Faza produsului dintre DFT ale celor doua secvente')

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
132 Lucrarea 8

Prelucrarea semnalelor biomedicale

subplot(223)
plot(w/pi,abs(X));grid
title('Modulul DFT a convolutiei dintre cele doua secvente')
subplot(224)
plot(w/pi,angle(Y));grid
title('Faza DFT a convolutiei')

Modulul produsului dintre DFT ale celor doua secvente Faza produsului dintre DFT ale celor doua secvente
90 4

80 3

70 2

60 1

50 0

40 -1

30 -2

20 -3

10 -4
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Modulul DFT a convolutiei dintre cele doua secvente Faza DFT a convolutiei
90 4

80 3

70 2

60 1

50 0

40 -1

30 -2

20 -3

10 -4
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Figura 5. DFT a convoluției a două semnale discrete

3.5 Exemplul 5.- proprietatea de înmulţire a doua secvenţe

% Exemplul 5
% Proprietatea de multiplicare
clear all
close all
w = -pi:2*pi/255:pi;
x1 = [1 2 3 4 5 6 7 8 9];
x2 = [1 1 1 -2 1 2 3 4 1];
y = x1.*x2;
X1 = freqz(x1, 1, w);
X2 = freqz(x2, 1, w);
Y = freqz(y,1,w);% transformata Fourier a produsului
subplot(311)
plot(w/pi,abs(X1));grid
title('Modulul DFT a secventei x1')
subplot(312)
plot(w/pi,abs(X2));grid
title('Modulul DFT a secventei x2')
subplot(313)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 133

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

plot(w/pi,abs(Y));grid
title('Modulul DFT a produsului celor doua secvente')

Modulul DFT a secventei x1


50

0
-1 -0.5 0 0.5 1
Modulul DFT a secventei x2
20

10

0
-1 -0.5 0 0.5 1
Modulul DFT a produsului celor doua secvente
100

50

0
-1 -0.5 0 0.5 1

Figura 6. DFT a produsului a două semnale discrete

3.6 Exemplul 6.- proprietatea de inversare în timp

% Exemplul 6
% Proprietatea de inversare in timp
clear all
close all
w = -pi:2*pi/255:pi;
x = [1 2 3 4 5 6 7 8 9];
L = length(x)-1;
X1 = freqz(x, 1, w);
X2 = freqz(fliplr(x), 1, w); %vezi fliplr.m
X3 = exp(w*L*i).*X2;
subplot(221)
plot(w/pi,abs(X1));grid
title('Modulul DFT a secventei originale')
subplot(222)
plot(w/pi,angle(X1));grid
title('Faza DFT a secventei originale ')
subplot(223)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
134 Lucrarea 8

Prelucrarea semnalelor biomedicale

plot(w/pi,abs(X3));grid
title(' Modulul DFT a secventei reflectate')
subplot(224)
plot(w/pi,angle(X3));grid
title('Faza DFT a secventei reflectate')

Modulul DFT a secventei originale Faza DFT a secventei originale


50 4
40
2
30
0
20

10 -2

0 -4
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1

Modulul DFT a secventei reflectate Faza DFT a secventei reflectate


50 4
40
2
30
0
20

10 -2

0 -4
-1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1

Figura 7. DFT a unui semnalul discret reflectat

3.7 Exemplul 7. - relaţiile dintre DFT ale părţilor pare şi impare ale
secvenţelor reale periodice
Se reprezintă grafic partea reală şi cea imaginară a spectrului unei
secvenţe x(n) şi a spectrului părţii pare a acestei secvenţe:
1
xe (n ) = ( x (n ) + x (− n )) .
2

% Program P6_11
% Relatiile dintre DFT ale partilor pare
% si impare a secventelor reale
x = [1 2 4 2 6 32 6 4 2 zeros(1,247)];
x1 = [x(1) x(256:-1:2)];
xe = 0.5 *(x + x1);
XF = fft(x);

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 135

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

XEF = fft(xe);
clf;
k = 0:255;
subplot(2,2,1);
plot(k/128,real(XF)); grid;
ylabel('Amplitudine');
title('Re(DFT\{x[n]\})');
subplot(2,2,2);
plot(k/128,imag(XF)); grid;
ylabel('Amplitudine');
title('Im(DFT\{x[n]\})');
subplot(2,2,3);
plot(k/128,real(XEF)); grid;
xlabel('n');ylabel('Amplitudine');
title('Re(DFT\{x_{e}[n]\})');
subplot(2,2,4);
plot(k/128,imag(XEF)); grid; axis([0 2 -100 100])
xlabel('n');ylabel('Amplitudine');
title('Im(DFT\{x_{e}[n]\})');

3.8 Exemplul 12.- relaţia de echivalenţă a energiilor


N −1 N −1
1
∑ ∑ X (k )
2 2
Pentru o secvenţă x(n) se demonstrează că x ( n) =
n =0 N k =0

Programul următor pune în evidenţă această relaţie.

% Program P6_12
% Echivalenta energiilor
x = [(1:128) (128:-1:1)];
XF = fft(x);
a = sum(x.*x)
b = round(sum(abs(XF).^2)/256)

3.9 Exemplul 13- exemplu de semnal biomedical


Se aplică transformata Fourier unui semnal respirator. Se încarcă
fișierul Resp.mat.

% Lucrarea 8_exemplul 12
clear all;
close all;
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
136 Lucrarea 8

Prelucrarea semnalelor biomedicale

load Resp
Fs = 125;
max_freq = 2; % frecvenat max pentru afisare
N = length(resp);
f = (1:N)*fs/N; % vectorul de frecventa
t = (1:N)/fs; % vectorul de timp
plot(t,resp,'k');
xlabel('Timp (sec)','FontSize',14);
ylabel('Respiratie','FontSize',14);
figure;
X = fft(resp);
m_plot = round(max_freq/(fs/N)); % m pentru frecv 2Hz
subplot(211);
plot(f(1:m_plot-1),abs(X(2:m_plot)),'k');
xlabel('Frequency (Hz)','FontSize',14);
ylabel('|X(f)|','FontSize',14);
phase = unwrap(angle(X));
phase = phase * 360/(2*pi);
subplot(212);
plot(f(1:m_plot-1),phase(2:m_plot),'k');
xlabel('Frequency (Hz)','FontSize',14);
ylabel('|X(f)|','FontSize',14);
[peak m_peak] = max(abs(X(2:m_plot)));
max_freq = f(m_peak)
max_time = 1/max_freq
breath_min = 60/max_time

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 137

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

Respiratie
1.1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1
0 10 20 30 40 50 60
Timp (sec)

Figura 8. Reprezentarea unui semnal respirator

30
spectrul de amplitudine

20

10

0
0 0.5 1 1.5 2
Frecventa (Hz)

2000
spectrul de faza

1000

-1000

-2000
0 0.5 1 1.5 2
Frecventa(Hz)

Figura 9. Spectrul de amplitudine și de fază al semanlului respirator (Exemplul 13)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
138 Lucrarea 8

Prelucrarea semnalelor biomedicale

3.10 Exemplul 14 – semnal auditiv


Se încarcă un semnal audio bass.wav15. Se afișează semnalul, se
calculează transformata Fourier, se reprezintă în funcție de frecvență, apoi
se extrage un semnal ce reprezintă prima notă și se afișează spectrul de
amplitudine al acestui semnal.

clear all
close all
fs = 44100; % the signal is known to have been recorded at
this rate
bass_guitar = wavread('bass.wav', 5*fs); %read in first 5
seconds; fs = 44100Hz
ft = fft(bass_guitar);
mag_ft = abs(ft);
plot(mag_ft) % plot magnitudes versus frequency bins
ylabel('Magnitude/Amplitude')
xlabel('Bin Number')
low_freq_mags = mag_ft(1:2000); %the magnitudes of the low
freq content are stored in a new variable
%Note: 2000 in the above command corresponds to
2000/length(mag_ft)*fs = 400Hz
figure
plot(low_freq_mags);
ylabel('Magnitude/Amplitude')
xlabel('Bin Number')
N = length(mag_ft);
freq_scale = 0:fs/(N-1):fs;
figure
plot(freq_scale, mag_ft);
ylabel('Magnitude/Amplitude')
xlabel('Frequency (Hz)')
low_mag_freq_scale = freq_scale(1:length(low_freq_mags));
figure
plot(low_mag_freq_scale, low_freq_mags);
ylabel('Magnitude/Amplitude')
xlabel('Frequency (Hz)')
figure
plot(bass_guitar);

15
http://eleceng.dit.ie/dorran/matlab/problems/hardware_demo/

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 139

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

ylabel('Amplitude')
xlabel('Sample Number')
first_note = bass_guitar(1:38000); %exrtact the first note
from the signal
ft_first_note = fft(first_note);
mags = abs(ft_first_note);
freq_scale = 0: fs/(length(mags) -1) : fs;
low_freq_bin_range = length(mags)*(400/44100);
low_freq_mags = mags(1:low_freq_bin_range);
low_freq_scale = freq_scale(1: low_freq_bin_range);
figure
plot(low_freq_scale, low_freq_mags)
ylabel('Magnitude/Amplitude')
xlabel('Frequency (Hz)')

Rularea programului returnează mai multe figuri, dar le vom


reproduce numai pe acelea care reprezintă semnalu, spectrul său de
amplitudine și pe cel al primei note (Figura 10 a, b, c)
0.4

0.3

0.2

0.1
Amplitude

-0.1

-0.2

-0.3

-0.4
0 0.5 1 1.5 2 2.5
Sample Number 5
x 10

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
140 Lucrarea 8

Prelucrarea semnalelor biomedicale

5000

4500

4000

3500
Magnitude/Amplitude

3000

2500

2000

1500

1000

500

0
0 50 100 150 200 250 300 350 400
Frequency (Hz)

2000

1800

1600

1400
Magnitude/Amplitude

1200

1000

800

600

400

200

0
0 50 100 150 200 250 300 350 400
Frequency (Hz)

Figura 10 Rezultatele exemplului 10

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 8 141

Transformata Fourier discretă (TFD) aplicată secvenţelor 1D

4 Desfăşurarea lucrării
Exercițiul 1
Calculaţi şi vizualizaţi spectrul secvenţei 1D:
1, n = 0,7
x (n ) = 
0, in rest

Exercițiul 2
Calculaţi şi vizualizaţi TFD în N=50 de puncte ale unei secvenţe 1D
cosinusoidale cu frecvenţa f0=2,25/50, folosind secvenţe de comenzi
MATLAB16.

Exercițiul 3
Se dau două secvenţe 1D:
x=[0, 0.25, 0.5, 0.75, 1]
h=[0, 0.5, 1, 0.5, 0]
Calculaţi produsul transformatelor lor Fourier discrete şi transformaţi
apoi invers acest produs în domeniul timp.
Exercițiul 4
Scrieţi un program în MATLAB care să permită calculul convoluţiei
liniare a două secvenţe prin intermediul transformatei Fourier discrete.

Exercițiul 5
Se consideră un semnal analogic xa(t).

x a (t ) = sin 2π50t + sin 2π120t

Semnalul se eşantionează cu frecvenţa FS=1000Hz. Peste acest


17
semnal se suprapune un semnal aleatoriu de medie 0 .

16
Să se verifice efectul comenzii:
n1=length(x);
y2=x*dftmtx(n1).

17
A se vedea in MATLAB comanda randn (n,m)
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
142 Lucrarea 8

Prelucrarea semnalelor biomedicale

Se cere să se găsească o metodă de punere în evidenţă a frecvenţelor


semnalului util (semnalul fără zgomot).

Exercițiul 6
De consideră secvenţa:
n n ∈ N
x (n ) =  cu N = 8 .
0 in rest
Să se verifice următoarele proprietăţi ale transformatei Fourier
discrete:
• decalajul în timp
• inversiunea în timp
• decalajul în frecvenţă
• modularea

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9
Filtre cu răspuns finit la impuls (FIR)
1 Noţiuni teoretice
1.1 Caracterizarea filtrelor FIR
Filtrele FIR sunt specifice domeniului timp discret şi nu pot fi
obţinute prin transpunerea filtrelor analogice.
Un filtru cu răspuns finit la impuls (FIR) poate fi caracterizat, în mod
echivalent, prin una din ecuaţiile:
M −1
y (n ) = ∑ h (n )x(n − k ) ,
k =0
M −1
H (z ) = ∑ h (k )z − k ,
k =0
sau
M −1
H (ω) = ∑ h (n )e − jωn ,
k =0
unde: - h(n ) sunt coeficienţii răspunsului la impuls al filtrului;
- H ( z ) funcţia de transfer a filtrului;
- M ordinul filtrului;
- ω pulsaţia discretă.
Răspunsul în frecvenţă, H(ω), poate fi exprimat sub forma:
H (ω ) = H (ω ) e jΘ(ω ) ,
Atât funcţia de transfer de fază nulă, H(ω) cât şi funcţia de fază,
Θ(ω), sunt reale şi continue, aşa încât problemele legate de
discontinuităţile de fază sunt eliminate.
Deoarece h[n] este o funcţie reală, atunci H(ω) este o funcţie pară,
iar Θ(ω) impară.
Unul din cele mai simple filtre FIR este cu fază liniară. Numai
filtrele FIR pot fi proiectate a avea fază liniară. Se demonstrează că un

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
144 Lucrarea 9

Prelucrarea semnalelor biomedicale

filtru FIR are o fază liniară dacă şi numai dacă răspunsului la impuls, h[n]
, satisface condiţia:
h (n ) = ± h (M − 1 − n ) , n = 0, M − 1 ,
relaţie cunoscută şi sub numele de condiţia de liniaritate a lui Gibbs.
Filtrele pentru care este îndeplinită condiţia de simetrie (h(n)=h(M-1-
n)) sunt utilizate, în general, pentru filtrare propriu-zisă, pe când cele
pentru care este îndeplinită condiţia de asimetrie (h(n)=-h((M-1-n))sunt
utilizate în aplicaţii cu defazare (integrator, diferenţiator, transformator
Hilbert).
1.2 Metode de aproximare a filtrelor FIR
Metodele de aproximare ale funcţiei de transfer folosite în cazul
filtrelor FIR sunt:
1) metoda ferestrelor de timp;
2) metoda eşantionării în frecvenţă;
3) metoda optimală.
1.2.1 Metoda ferestrelor
Etapele de proiectare în cazul metodei ferestrelor sunt:
10 Specificarea răspunsului în frecvenţă ideal (dorit), notat H d (ω )
(atenuarea în banda de oprire, atenuarea în banda de trecere şi frecvenţele
capetelor de bandă).
20 Obţinerea impulsului la impuls hd [n ] prin calcularea transformatei
Fourier inverse:
π
1
hd [n ] = ∫ H d (ω )e
j ωn
dω ,
2π −π
Pentru filtrele selective de frecvenţă expresia pentru hd [n ] este dat ă
în tabelul 1.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 145

Filtre cu răspuns finit la impuls (FIR)

Tabelul 1. Răspunsurile la impuls ideale pentru filtre uzuale

Tipul filtrului Răspunsul la impuls ideal hD (0)


hd (n ), n ≠ 0
FTJ 2 f c sin (nω c ) (nω c ) 2 fc
FTS − 2 f c sin (nω c ) (nω c ) 1− 2 fc
FTB 2 f 2 sin(nω2 ) (nω2 ) − 2( f 2 − f1 )
2 f1 sin(nω1 ) (nω1 )

FOB 2 f1 sin (nω1 ) (nω1 ) − 1 − 2( f 2 − f1 )


2 f 2 sin (nω2 ) (nω2 )

În general, hd (n ) este de durat ă infinit ă ş i, pentru a se ob ţ ine un


filtru FIR, trebuie trunchiat. Pentru un filtru FIR de ordin M trunchierea se face
la n = M – 1, ceea ce este echivalent cu multiplicarea lui hd (n ) cu o
„funcţie fereastră”, notată w(n ) , având transformata Fourier W (ω) .
30 Se selectează funcţia fereastră care satisface specificaţiile filtrului,
apoi se determină numărul de coeficienţi ai filtrului folosind relaţiile
aproximative specificate în tabelul 2 (relaţiile dintre lăţimea benzii de
tranziţie şi lungimea filtrului).
40 Se obţin valorile lui wM [n] pentru funcţia fereastră aleasă şi
valoarea actuală a coeficienţilor filtrului FIR, h[n] după relaţia:
h (n ) = hd (n )wM (n ) ,
Efectele trunchierii în timp sunt riplurile din banda de trecere şi din
banda de blocare, precum şi o bandă de tranziţie nenulă.
În Tabelul 2 se prezintă câteva dintre ferestrele utilizate.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
146 Lucrarea 9

Prelucrarea semnalelor biomedicale

Tabel 2 Ferestre utilizate prentru proiectarea filtrelor FIR


Nume w(n)
dreptunghiulară
Bartlett 1−
2n
N
 2 πn 
Hann 1 + cos  n<
N −1
 N  2

Hamming  2 πn 
0.54 + 0.46 cos  
 N 
Blackman 2πn   4πn 
0.42 + 0.5 cos  + 0.08 cos 
 N   N 
 2
Kaiser  2n  
J 0 β 1 −   J 0( β )
  N − 1  
 

Tabelul 2. Parametrii ferestrelor de timp utilizate pentru


proiectarea filtrelor FIR
Tipul Lăţimea Riplul în Atenuarea Atenuare
ferestrei benzii de banda de lob în banda
tranziţie trecere principal/ de oprire
(normalizată) (Hz) lob secundar (dB)
(Hz) (dB)
Rectangul 0,9/M 0,7614 13 21
ar
Hanning 3,1/M 0,0546 31 44
Hamming 3,3/M 0,0194 41 53
Blackman 5,5/M 0,0017 57 74
Kaiser 2,93/M 0,0276 50
(β=4,54)
4,32/M 0,00275 70
(β=4,76)
5,71/M 0,000275 90
(β=8,96)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 147

Filtre cu răspuns finit la impuls (FIR)

1.2.2 Metoda eşantionării în frecvenţă


Această metodă permite proiectarea filtrelor FIR nerecursive pentru
filtre standard (FTJ, FTS, FTB, FOB) şi filtre cu răspuns în frecvenţă
arbitrar.
De asemenea poate fi folosită şi pentru proiectarea filtrelor FIR
recursive, cu câteva restricţii.
Această metodă are la bază tehnica prezentată pentru filtrele FIR cu
faza liniară.
a) Filtrele nerecursive cu eşantionare în frecvenţă.
Se poate specifica următorul set de frecvenţe, egal spaţiate, în care să
se specifice răspunsul în frecvenţă
2π M −1
ωk = (k +α ) , k = 0, pentru M impar
M 2
,
M
k = 0, − 1 pentru M par
2
Cu α=0, pentru filtre de tipul I sau α=1/2, pentru filtre de tipul II.
Se determină coeficienţii răspunsului la impuls h[n] al filtrului FIR
pornind de la aceste specificaţii în frecvenţă, egal decalate. Este de dorit
ca să se optimizeze cerinţele în frecvenţă în banda de tranziţie a filtrului.
Optimizarea se poate face numeric apelând la tehnicile programării
liniare.
Răspunsul în frecvenţă al unui filtru FIR este dat de relaţia:

H (ω) = ∑ h(n )e − jωn ,
k =0
Se presupune că răspunsul filtrului este dat la frecvenţele specificate
de relaţia (8). Se obţine:
 2π
H ( ωK ) = H ( k + α ) = H  ( k + α ) 
M 
M −1 − j 2π ( k +α ) n
,
H ( ωK ) = H ( k + α ) = ∑ h [ n ] e M

n=0

Din această relaţie, prin transformare inversă, se obţine răspunsul la


impuls h(n ) , în funcţie de H (n + α ) . Rezultă deci:
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
148 Lucrarea 9

Prelucrarea semnalelor biomedicale

j 2 π(k + α )n
1 M −1
h (n ) = ∑ H (k + α )e M n = 0, M − 1 ,
M k =0
Dacă h(n ) este real, se observă ca eşantioanele în frecvenţă
H (k + α ) satisfac proprietatea de simetrie:
H (k + α ) = H ∗ (M − k − α ) ,
Această condiţie împreună cu cea pentru h(n ) face ca numărul de
puncte în care se precizează H (ω ) să se reducă la (M + 1)/2 dacă M este
impar şi la M/2 dacă M este par.
Există patru situaţii posibile:
1. h[n] simetric, α=0
2. h[n] simetric, α=1/2
3. h[n] antisimetric, α=0
4. h[n] antisimetric, α=1/2.
Pentru fiecare situaţie se stabileşte relaţia pentru răspunsul la impuls
h(n ) .
Avantajul metodei eşantionării în frecvenţă constă în structura de
eşantionare eficientă atunci când multe din eşantioanele în frecvenţă sunt
zero.
1.2.3 Metoda optimală
În scopul minimizării erorii se pot utiliza 1-3 eşantioane suplimentare
situate în banda de tranziţie. Aceste se folosesc într-un procedeu de
optimizare, numit metoda celor mai mici pătrate.
O altă metodă folosită pentru proiectarea filtrelor FIR prin metoda
optimizării este metoda lui Remez.
2 Implementarea în MATLAB a filtrelor FIR
A. Metoda ferestrelor şi a eşantionării în frecvenţă
Pentru proiectarea filtrelor FIR cu ajutorul metodei ferestrelor şi a
eşantionării în frecvenţă se folosesc următoarele funcţii:

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 149

Filtre cu răspuns finit la impuls (FIR)

 fir1 implementează metoda clasică a proiectării filtrelor FIR cu


fază liniară prin metoda ferestrelor. Se pot proiecta filtre FTJ,
FTS, FTB şi FOB.
b=fir1(n,wn) returnează un vector b ce conţine n+1
coeficienţi ai unui filtru FIR, de tipul FTJ de ordin n, aproximat
prin metoda ferestrei Hamming, cu frecvenţa de tăiere wn.
Coeficienţii sunt ordonaţi în ordine descrescătoare a puterilor
lui z. wn este un număr între 0 şi 1, cu 1 corespunzând la ½ din
frecvenţa de eşantionare. Când wn este un vector cu două
elemente wn=[w1 w2], fir1 returnează un filtru FTB cu banda
de trecere cuprinsă între w1 şi w2 .
b=fir1(n,wn,’type’) are aceeaşi semnificaţie ca cea
anterioară. În plus, specifică tipul filtrului, unde:
- ‘high’ este pentru un filtru FTS cu frecvenţa de tăiere wn;
- ‘stop’ este pentru un filtru FOB, dacă wn=[w1 w2].
fir1 utilizează întotdeauna un ordin n par pentru filtrele
FTS şi FOB, datorită faptului că pentru ordin impar răspunsul
în frecvenţă la frecvenţa Nyquist (FS/2) este 0.
b=fir1(n,wn,window) utilizează fereastra specificată1 în
vectorul coloană al ferestrei corespunzătoare.Vectorul coloană
trebuie să fie de lungime n+1. Dacă nu este specificată nici o
fereastră, atunci implicit fir1 utilizează fereastra Hamming.
b=fir1(n, wn,’type’,window) acceptă drept parametri atât
‘type’ cât şi ‘window’ .
 fir2 reprezintă o combinţie dintre metoda ferestrelor şi cea de
eşantionare în frecvenţă, fereastra aleasă implicit fiind
fereastra Hamming.
b=fir2(n,f,m) returnează un vector linie b conţinând n+1
coeficienţi ai unui filtru FIR de ordinul n. Caracteristica

1
boxcar- pentru fereastra dreptunghiulară; blackman- pentru fereastra Blackman;
bartlett- pentru fereastra Bartlett; hamming- pentru fereastra Hamming; hann pentru
fereastra Hanning; kaiser- pentru fereastra Kaiser; pentru o listă completă a funcțiilor
fereastră utilizate se va folosi help-ul pentru funcția window

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
150 Lucrarea 9

Prelucrarea semnalelor biomedicale

amplitudine-frecvenţă a filtrului este cea dată de vectorii f şi


m:
- f este un vector ce conţine eşantioane în frecvenţă din
domeniul 0 la 1, unde 1 corespunde la FS/2. Primul punct a lui
f trebuie să fie 0 şi ultimul 1. Punctele trebuie să fie în
ordine crescătoare.
- m este un vector ce conţine amplitudinile dorite
la frecvenţele specificate în f.
- f şi m trebuie să aibă aceeaşi lungime.
Coeficienţii din b sunt ordonaţi în ordine descrescătoare a
puterilor lui z.
b=fir2(n,f,m,window) utilizează fereastra specificată în
vectorul coloană al ferestrei corespunzătoare. Vectorul coloană
trebuie să fie de lungime n+1. Dacă nu este specificată nici o
fereastră, atunci implicit fir2 utilizează fereastra Hamming.
b=fir2(n,f,m,npt,window) sau b=fir2(n,f,m,npt)
specifică numărul de puncte npt ale gridului în care fir2
interpolează răspunsul în frecvenţă, cu sau fără specificaţia de
fereastră.
 filter filtrează datele cu un filtru FIR sau un filtru IIR
y=filter(b,a,x) filtrează datele din vectorul x cu filtrul
descris prin coeficienţii din vectorii b şi a şi obţine datele
filtrate în vectorul y.
filter lucrează cu date de intrare atât reale cât şi complexe.
Exemplul 1. Să se proiecteze un filtru FTJ FIR de lungime 61, cu
frecvenţa de tranziţie (normalizată la 1 pentru la Fs 2 ) de 0,3, utilizând
fereastra Kaiser ( β = 4,533514 ) şi să se reprezinte modulul răspunsului
în frecvenţă.

%lucrarea 9-exemplul 1
% proiectarea unui filtru FTJ, FIR cu fereastra kaiser
% lungime = 61, Beta = 4.533514
clear all
close all

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 151

Filtre cu răspuns finit la impuls (FIR)

kw = kaiser(61,4.533514);
b = fir1(60,0.3,kw);
[h,omega] = freqz(b,1,512);
mag = 20*log10(abs(h));
plot(omega/pi,mag);axis([0 1 -80 5]); grid
xlabel('\omega/\pi'); ylabel('Castig (dB)')
title('Filtru trece jos FIR proiectat cu o fereastra Kaiser')

Filtru trece jos FIR proiectat cu o fereastra Kaiser

-10

-20

-30
Castig (dB)

-40

-50

-60

-70

-80
0 0.2 0.4 0.6 0.8 1
ω/π

Figura 1. Răspunsul în amplitudine al unui filtru trece jos FIR


proiectat cu fereastra Kaiser
Exemplul 2 Să se proiecteze un filtru FIR, prin metoda ferestrelor,
utilizând fereastra Hamming, având ordinul 64, cu banda de trecere
0.3<w<0.6. Să se reprezinte răspunsul în frecvenţă al filtrului şi răspunsul
la impuls în 100 de puncte.

%lucrare9_exemplul2
clear all
close all
b=fir1(64,[0.3 0.6]);
freqz(b,1);
x=[1 zeros(1,99)] ;
y=filter(b,1,x);
figure
stem(y)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
152 Lucrarea 9

Prelucrarea semnalelor biomedicale

title('Raspunsul la impuls')
xlabel('n')

În Figura 2 și Figura 3 sunt reprezentate răspunsul în frecvenţă


(modul și fază), respectiv răspunsul la impuls în 100 puncte.

50
Magnitude (dB)

-50

-100

-150
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

1000
Phase (degrees)

-1000

-2000

-3000
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

Figura 2. Răspunsul în amplitudine și răspunsul în fază al filtrului trece bandă FIR


proiectat cu fereastra Hamming (exemplul 2)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 153

Filtre cu răspuns finit la impuls (FIR)

Raspunsul la impuls
0.3

0.2

0.1

-0.1

-0.2

-0.3

-0.4
0 20 40 60 80 100
n

Figura 3. Răspunsul la impuls al filtrului trece bandă FIR


proiectat cu fereastra Hamming (exemplul 2)

Să se compare coeficienții filtrului conținuți în vectorul b și


răspunsul la impuls, returnat în vectorul y. Explicați rezultatul obținut.

Exemplul 3 Să se proiecteze un filtru FIR, având ordinul 100, prin


metoda eşantionării în frecvenţă (cu ajutorul comenzii fir2).
Caractreristica amplitudine-frecvenţă a filtrului este cea dată de vectorii f
şi m .
%lucrarea 9- exemplul 3
clear all
close all
f = [0 0.28 0.3 0.5 0.52 1];
m = [0.3 0.3 1.0 1.0 0.3 0.3];
b = fir2(100,f,m);
freqz(b,1,512)
[h,omega] = freqz(b,1,512);
figure
plot(omega/pi,abs(h));grid; axis([0 1 0 1.2]);
xlabel('\omega/\pi');ylabel('Amplitudine')
title('Raspunsul in amplitudine al filtrului FIR')

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
154 Lucrarea 9

Prelucrarea semnalelor biomedicale

În Figura 4 (a și b) este reprezentat răspunsul în frecvență al filtrului


FIR, proiectat prin metoda eșantionării în frecvență.

5
Magnitude (dB)

-5

-10

-15
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

0
-2000
Phase (degrees)

-4000

-6000

-8000

-10000
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

(a)
Raspunsul in amplitudine al filtrului FIR
1.2

0.8
Amplitudine

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1
ω/π

(b)
Figura 4. Răspunsul în frecvență al filtrului FIR
proiectat cu metoda eșantionării în frecvență (exemplul 3)
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 9 155

Filtre cu răspuns finit la impuls (FIR)

B. Proiectarea filtrelor FIR cu ajutorul metodei optimale


Pentru proiectarea filtrelor FIR cu ajutorul metodei optimale
se folosesc următoarele funcţii:
 fircls1 are la bază proiectarea filtrelor FIR cu fază liniară tip
FTJ şi FTS, având la bază metoda celor mai mici pătrate
b=fircls1(n,wo,dp,ds) generează un filtru FTJ, FIR cu
fază liniară, de lungime n+1, cu frecvenţa de tăiere
normalizată wo în domeniul 0 la 1 (1 corespunzând la ½ din
FS), cu dp deviaţia maximă faţă de 1 din banda de trecere şi cu
ds deviaţia maximă faţă de 0 din banda de oprire.
b=fircls1(n,wo,dp,ds,’high’) generează un filtru FTS
(ordinul n trebuie să fie par).
b=fircls1(n,wo,dp,ds,’design flag’) permite să se
monitorizeze proiectarea filtrului, unde “design flag” poate fi:
- ‘trace’ pentru o afişare a unui tabel utilizat în proiectare
- ‘plots’ pentru trasarea grafică a amplitudinii, a întârzierii
de grup a zerourilor şi polilor
- ‘both’ pentru afişarea atât tip text cât şi grafică
 firls are la bază proiectarea filtrelor FIR cu fază liniară prin
metoda celor mai mici pătrate
b=firls(n,f,a) returnează un vector b conţinând n+1
coeficienţi ai unui filtru FIR de ordinul n, a cărui caracteristică
de amplitudine aproximează pe cea dată de vectorii f şi a.
- f este un vector de perechi ale frecvenţelor din
domeniul 0 la 1, unde 1 corespunde la FS/2. Punctele trebuie să
fie în ordine crescătoare.
- a este un vector ce conţine amplitudinile dorite la
frecvenţele specificate în f. Amplitudinea dorită
corespunzătoare frecvenţelor cuprinse între perechile de
puncte (f(k), f(k+1)), cu k impar este un segment de dreaptă ce
leagă punctele (f(k), a(k)) şi (f(k+1), a(k+1)). Amplitudinea
dorită corespunzătoare frecvenţelor cuprinse între perechile de
puncte (f(k), f(k+1)), cu k par este nespecificată. Spaţiile între
astfel de puncte sunt regiuni ce nu interesează (don’t care
regions).
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
156 Lucrarea 9

Prelucrarea semnalelor biomedicale

- f şi a trebuie să aibă aceeaşi lungime. Lungimea trebuie să


fie un număr par.
b=firls(n,f,a,’ftype’) , ’ftype’ specifică tipul filtrului:
- ‘hilbert’ pentru filtre FIR cu fază liniară şi simetrie impară.
Această clasă include transformatorul Hilbert, ce are
amplitudinea egală cu 1 în întreaga bandă.
- ‘differentiator’ pentru filtru cu fază liniară şi simetrie
impară., utilizând o tehnică specială de ponderare. Pentru o
bandă cu amplitudine nenulă, eroarea medie pătratică este
ponerată cu un factor egal cu 1/f2, ceea ce face ca eroarea
la frecvenţe mici să fie mult mai mică decât la frecvenţe
ridicate. Pentru filtrele FIR de tip diferenţiator, pentru care
amplitudinea este proporţională cu frecvenţa, aceste filtre
minimizează eroarea medie pătratică relativă (integrala
pătratului raportului dintre eroare şi amplitudinea
corespunzătoare).
 remezord estimează ordinul unui filtru FIR prin metoda
optimală, utilizând algoritmul Parks-McClellan2.
[n,fo,ao,w]=remezord (f,a,dev) determină ordinul,
capetele normalizate ale benzilor de frecvenţă, amplitudinile
corespunzătoare şi ponderile care satisfac specificaţiile de
intrare cuprinse în f, a şi dev ce vor fi utilizate cu comanda
remez.
- f este un vector ce reprezintă capetele benzii (între 0 şi
F2/2)
- a este un vector ce specifică amplitudinile dorite în benzile
specificate de f. Lungimea lui f este de două ori lungimea
lui a minus 2.
- dev este un vector de aceeaşi lungime ca a şi specifică
deviaţia maximă permisă a riplurilor între răspunsul real în
frecvenţă şi cel dorit, pentu fiecare bandă.

2
Este o funcție depășită, care în variantele noi de MATLAB este numită
firpmord.m (are aceeași descriere ca remezord.m)
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 9 157

Filtre cu răspuns finit la impuls (FIR)

 remez proiectează un filtru FIR cu fază liniară utilizând


metoda Parks-McClellan, ce are la bază algoritmul Remez3..
Filtrul proiectat este optimal în sensul că eroarea maximă între
răspunsul în frecvenţă dorit şi răspunsul în frecvenţă obţinut să
fie minimizată. Uneori filtrele proiectate în acest mod se
numesc filtre de tip equiriplu
b=remez(n,f,a) returnează un vector linie b ce conţine cei
n+1 coeficienţi ai unui filtru FIR de ordin n a cărui
caracteristică amplitudine-frecvenţă este conţinută în vectorii f
şi a:
- f este un vector de perechi ale eşantioanelor în frecvenţă
din domeniul 0 la 1, unde 1 corespunde la FS/2. Punctele
trebuie să fie în ordine crescătoare.
- a este un vector ce conţine amplitudinile dorite la
frecvenţele specificate în f. Amplitudinea dorită
corespunzătoare frecvenţelor cuprinse între perechile de
puncte (f(k),f(k+1)), cu k impar este un segment de dreaptă
ce leagă punctele (f(k), a(k)) şi (f(k+1), a(k+1)).
Amplitudinea dorită corespunzătoare frecvenţelor cuprinse
între perechile de puncte (f(k), f(k+1)), cu k par este
nespecificată. Spaţiile între astfel de puncte sunt regiuni ce
nu interesează (‘don’t care regions”).
- f şi a trebuie să aibă aceeaşi lungime. Lungimea trebuie să
fie un număr par.
b=remez(n,f,a,w) utilizează vectorul w pentru a pondera
forma în fiecare bandă. Lungimea lui w este ½ din cea a lui f
şi a.
Se utilizează b=remez(n,fo,ao,w) cu ordinul n, vectorul
frecvenţă fo , răspunsul în amplitudine ao şi ponderile rezultate
din [n,fo,ao,w]=remezord (f,a,dev).
b=remez(n,f,a,’type’) specifică tipul filtrului:

3
Este o funcție depășită, care în variantele noi de MATLAB este numită firpm.m
(are aceeași descriere ca remez.m)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
158 Lucrarea 9

Prelucrarea semnalelor biomedicale

- ‘hilbert’ pentru filtru cu fază liniară şi simetrie impară.


Această clasă include transformatorul Hilbert, ce are
amplitudinea egală cu 1 în întreaga bandă.
- ‘differentiator’ pentru filtru cu fază liniară şi simetrie
impară., utilizând o tehnică specială de ponderare. Pentru o
bandă cu amplitudine nenulă, eroarea este ponderată cu un
factor egal cu 1/f ceea ce face ca eroarea la frecvenţe mici
să fie mult mai mică decât la frecvenţe ridicate. Pentru
filtrele FIR de tip diferenţiator, pentru care amplitudinea
este proporţională cu frecvenţa, aceste filtre minimizează
eroarea maximă relativă (maximul raportului dintre eroare
şi amplitudinea corespunzătoare).

Exemplul 4 Să se proiecteze un filtru trece jos FIR cu fază liniară,


având frecvența de tăiere 1500 Hz, frecvența din banda de oprire 2000
Hz, riplul în banda de trecere de 0.01, riplul în banda de oprire de 0,1.
Semnalul a fost eșantionat cu frecvența de 8000 Hz.
Se va determina mai întâi ordinul filtrului, utilizând funcția
firpmord.m, iar apoi se va proiecta prin metoda optimală, utilizând
metoda Parks-McClellan. Se va reprezinta modulul răspunsului în
frecvenţă al acestui filtru.

% lucrarea 9- exemplul 4
% proiectarea unui filtru FIR cu faza liniara prin metoda
optimala (equiripple)

% Estimarea ordinului
clear all
close all
fedge=input('Frecventele benzilor de trecere si de taiere =
');
mag=input('amplitudinile dorite in fiecare banda = ');
dev=input('deviatia permisa in fiecare banda = ');
FS=input('Frecventa de esantionare = ');
[n, fo, mo, w]=firpmord(fedge,mag,dev,FS);
fprintf('Ordinul filtrului este %f \n',n);
% proiectarea filtrului (aflarea coeficientilor b)
b = firpm(n,fo,mo,w);

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 159

Filtre cu răspuns finit la impuls (FIR)

disp('coeficientii filtrului FIR sunt'); disp(b)


[H,w] = freqz(b,1,256);
mag = 20*log10(abs(H));
plot(w/pi,mag);axis([0 1 -40 5]); grid
xlabel('\omega/\pi'); ylabel('Castig, dB');
title('Raspunsul in amplitudine')

Prin execuția programului se obține un ordin egal cu 21 și un răspuns


în amplitudine ca cel din Figura 5.

Raspunsul in amplitudine
5

-5

-10
Castig (dB)

-15

-20

-25

-30

-35

-40
0 0.2 0.4 0.6 0.8 1
ω/π

Figura 5. Răspunsul în amplitudine al filtrului FIR


proiectat cu metoda optimală (exemplul 4)

În cele ce urmează se vor prezenta câteva aplicații din domeniul


semnalelor biomedicale.

Exemplul 5
Să se filtreze trece jos cu un filtru FIR un semnal produs de
respirație, înregistrat pe o durată de 10 min, și care se găsește în

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
160 Lucrarea 9

Prelucrarea semnalelor biomedicale

Resp.mat.4Semnalul este filtrat cu frecvența de eșantionare de 12,5 Hz. Se


utilizează o frecvență așa de mică deoarece semnalul respirator are o
bandă foarte joasă. Frecvența de tăiere este 1 Hz și lungimea filtrului este
de de 17 și apoi de 65. Se vor folosi fereastrele dreptunghilare și
Blackman pentru a limita răspunsul la impuls.
Să se afișeze semnalul original și cel filtrat.

% lucrarea 9-exemplul 5
% ferestra dreptunghiulara si fereastra Blackman
% lungimea ferestrelor L = 17 si L = 65.
% frecventa de taiere normalizata este Fcn=Fc/(Fs/2)
close all;
clear all;
load('Resp.mat');
N = 1024; % numarul punctelor pentru afisare
Fs = 12.5;
f = (1:N)*Fs/N; % vectorul frecventelor pentru afisare
Fc = 2/Fs; % frecventa de taiere normalizata
L = [17 65];
for m = 1:2
L1 = L(m)-1; % L1 par
for k = 1:L(m) % generare functia sin(n)/n
n = k-L1/2 ; % n = k - L1/2 unde L1 par
if n == 0
b(k) = 2*Fc; % caz in care numitorul este 0
else
b(k) = sin(2*pi*Fc*n)/(pi*n); % raspunsul la impuls
end
end

%hn = hn .* blackman(L+1)';
H = fft(b,N);
figure(1)
subplot(1,2,m);
plot(f(1:N/2),abs(H(1:N/2)),'k');
text(2,.9,['lungime = ',num2str(L(m))],'FontSize',12);
xlabel('Frecventa (Hz)','FontSize',14);
axis([0 Fs/2 0 1.2]);
ylabel('B(f)','FontSize',14);

4
S-a folosit exemplul din cartea Semmlow J., Signals and Systems for
Bioengineers: A MATLAB-based Introduction, Academic Press, 2011

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 161

Filtre cu răspuns finit la impuls (FIR)

figure(2)
subplot(2,1,1)
plot(resp)
axis tight
title('semnal nefiltrat')
y=filter(b,1,resp)
subplot(2,1,2)
plot(y)
text(200,.9,['fereastra dreptunghiulara lungime =
',num2str(L(m))],'FontSize',12);
title('semnal filtrat')
axis tight
pause
end

close all;
clear all;
load('Resp.mat');
N = 1024;
Fs = 12.5;
f = (1:N)*Fs/N;
Fc = 2/Fs;
L = [17 65];
figure
for m = 1:2
L1 = L(m)-1;
for k = 1:L(m)
n = k-L1/2 ;
if n == 0
b(k) = 2*Fc;
else
b(k) = (sin(2*pi*Fc*n))/(pi*n);
end
end
wb = blackman(L(m));
b = b .* wb;
H = fft(b,N);
figure(1)
subplot(1,2,m);
plot(f(1:N/2),abs(H(1:N/2)),'k');
text(2,.9,['Length = ',num2str(L(m))],'FontSize',12);
xlabel('Frecventa (Hz)','FontSize',12);
axis([0 Fs/2 0 1.2]);
ylabel('B(f)','FontSize',12);
figure(2)
subplot(2,1,1)
plot(resp)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
162 Lucrarea 9

Prelucrarea semnalelor biomedicale

axis tight
title('semnal nefiltrat')
y=filter(b,1,resp)
subplot(2,1,2)
plot(y)
text(200,.9,['fereastra dreptunghiulara lungime =
',num2str(L(m))],'FontSize',12);
title('semnal filtrat')
axis tight
pause
end

Se obțin răspunsurile în frecvență ale ferestrei dreptunghiulare (de


lungime 17, respectiv 65) ca în Figura 6.
Semnalul nefiltrat și filtrat cu ferestra dreptungiulară este reprezentat
în Figura 7 (fereastră de lungime 17) și în Figura 8 (fereastră de lungime
65).
Se obțin răspunsurile în frecvență ale ferestrei Blackman(de lungime
17, respectiv 65) ca în Figura 9.
Semnalul nefiltrat și filtrat cu ferestra Blackman este reprezentat în
Figura 10 (fereastră de lungime 17) și în Figura 11 (fereastră de lungime
65).
1.2 1.2

1 1

lungime = 17 lungime = 65
0.8 0.8
B(f)

B(f)

0.6 0.6

0.4 0.4

0.2 0.2

0 0
0 2 4 6 0 2 4 6
Frecventa (Hz) Frecventa (Hz)

Figura 6. Răspunsurile în frecvență ale ferestrei dreptunghiulare


Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 9 163

Filtre cu răspuns finit la impuls (FIR)

semnal nefiltrat
1

0.8

0.6

0.4

0.2
100 200 300 400 500 600 700

semnal filtrat
1
fereastra dreptunghiulara lungime = 17
0.8
0.6
0.4
0.2
0
100 200 300 400 500 600 700

Figura 7. Semnalul nefiltrat și filtrat cu ferestra dreptungiulară

semnal nefiltrat
1

0.8

0.6

0.4

0.2
100 200 300 400 500 600 700

semnal filtrat
1
fereastra dreptunghiulara lungime = 65
0.8
0.6
0.4
0.2
0
100 200 300 400 500 600 700

Figura 8. Răspunsurile în frecvență ale ferestrei dreptunghiulare

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
164 Lucrarea 9

Prelucrarea semnalelor biomedicale

1.2 1.2

1 1

Length = 17 Length = 65
0.8 0.8
B(f)

B(f)
0.6 0.6

0.4 0.4

0.2 0.2

0 0
0 2 4 6 0 2 4 6
Frecventa (Hz) Frecventa (Hz)

Figura 9. Răspunsurile în frecvență ale ferestrei Blackman

semnal nefiltrat
1

0.8

0.6

0.4

0.2
100 200 300 400 500 600 700

semnal filtrat
0.8
fereastra dreptunghiulara lungime = 17
0.6

0.4

0.2

0
100 200 300 400 500 600 700

Figura 10. Semnalul nefiltrat și filtrat cu ferestra Blackman

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 165

Filtre cu răspuns finit la impuls (FIR)

semnal nefiltrat
1

0.8

0.6

0.4

0.2
100 200 300 400 500 600 700

semnal filtrat
1
fereastra dreptunghiulara lungime = 65
0.8
0.6
0.4
0.2
0
100 200 300 400 500 600 700

Figura 11. Semnalul nefiltrat și filtrat cu ferestra Blackman

O altă variantă folosind funcția conv.m pentru filtrare este următorul:

%lucrare9_exemplul 3-var 2
%lucrare9_exemplul 3-var 2
close all; clear all;
load Resp;
N = length(resp);
Fs = 12.5;
t = (1:N)/Fs;
L = 65;
Fc = 1;
plot(t,resp+1,'k'); hold on;
wb = blackman(L);
b=fir1(L-1,Fc/(Fs/2),wb)
y = conv(resp,b,'same');
subplot(211)
plot(resp,'r'),axis tight
title('semnal nefiltrat')
subplot(212)
plot(t,y,'k');axis tight

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
166 Lucrarea 9

Prelucrarea semnalelor biomedicale

title('semnal filtrat')
xlabel('Timp (sec)','FontSize',14);

semnal nefiltrat
1

0.8

0.6

0.4

0.2
100 200 300 400 500 600 700

semnal filtrat
1

0.8

0.6

0.4

0.2
10 20 30 40 50
Timp (sec)

Figura 12. Semnalul nefiltrat și filtrat cu ferestra Blackman de lungime 65

Exemplul 6
Să se filtreze trece bandă un semnal EEG care se află slavat în
fișierul eeg.mat. Frecvențele benzii de trecere sunt 6 Hz și 12 Hz. Se va
ultiliza o fereastră Blackman de lungime 129. Frecvența de eșantionare
este de 200 Hz.
Se vor afișa semnalul nefiltrat și cel filtrat.
După realizarea codului, se obține reprezentarile din Figura 13 și
Figura 14.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 167

Filtre cu răspuns finit la impuls (FIR)

5
x 10
EEG 5

-5
0 1 2 3 4 5
Timp (sec)
5
x 10
semnal EEG filtrat

-2

-4
0 1 2 3 4 5
Timp (sec)

Figura 13. Semnalul EEG nefiltrat și filtrat cu ferestra Blackman de lungime 129
7
x 10
2.5

2
Amplitudine

1.5

0.5

0
0 5 10 15 20 25
Frecventa (Hz)

Figura 14 Spectrul semnalul EEG nefiltrat și a celui filtrat


cu ferestra Blackman de lungime 129

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
168 Lucrarea 9

Prelucrarea semnalelor biomedicale

2.1 Proiectarea filtrelor FIR cu ajutorul instrumentelor interactive


Există câteva posibilități de utiliza interfețele grafice în MATLAb,
unele pentru definirea și vizualizarea diferitelor tipuri de ferestre, precum
și pentru proiectarea filtrelor digitale. Funcțiile folosite pentru apelarea
diferitelor interfețe grafice sunt următoarele:
- fdatool- deschide instrumentul pentru proiectarea și analiza
filtrelor
- fvtool - deschide instrumentul pentru vizualizarea filtrelor
- sptool- deschide instrumentul interactiv de prelucrare de
semnal digital
- wintool- deschide intrumentul pentru proiectarea și analiza
ferestrelor
- wvtool- deschide intrumentul pentru vizualizarea
ferestrelor.
Când se tastează în spațiul de lucru wintool, apare fereastra din
Figura 15a. Se pot alege diferite fereste, diferite ordine pentru aceste
ferestre și se pot vizualiza simultan forma acestora și răspunsul în
amplitudine al lor (Figura 16b).

(a)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 169

Filtre cu răspuns finit la impuls (FIR)

(b)
Figura 15 Instrumentul pentru proiectarea și analiza ferestrelor

Numai pentru vizualizarea unei anumite ferestre se apelează la funcți


wvtool. Astfel, dacă se scrie wvtool(hamming(64)) apare ferestra din
Figura 16.
Time domain Frequency domain
40
1
20

0.8 0
Magnitude (dB)
Amplitude

-20
0.6

-40
0.4
-60

0.2
-80

0 -100
10 20 30 40 50 60 0 0.2 0.4 0.6 0.8
Samples Normalized Frequency ( ×π rad/sample)

Figura 16 Instrumentul pentru vizualizarea ferestrelor

Pentru a deschide instrumentul pentru proiectarea filtrelor, se


tastează sptool la prompterul din MATLAB. Apare fereastra din Figura

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
170 Lucrarea 9

Prelucrarea semnalelor biomedicale

17a. Cu ajutorul acestui instrument se pot proiecta filtre. Se selectează


tipul de filtru dorit, de exemplu FIRbp(design), apoi se selectează New.
Se generează un filtru prestabilit într-o fereastă ca cea din Figura 17b.

(a)

(b)
Figura 17 Instrumentul pentru proiectarea și analiza filtrelor

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 171

Filtre cu răspuns finit la impuls (FIR)

Se pot alege doar trei opţiuni pentru proiectarea filtrelor FIR:


equiriplu (ce are la bază funcţia remez), cele mai mici pătrate (ce
accesează funcţia firls) şi fereastra Kaiser (ce accesează funcţia fir1)
(Figura 18).

Figura 18 Instrumentul pentru proiectarea și analiza filtrelor (alegerea


algoritmului)
Se pot selecta oricare din configuraţiile standard: FTJ, FTS, FTB şi
FOB.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
172 Lucrarea 9

Prelucrarea semnalelor biomedicale

Figura 19 Instrumentul pentru proiectarea și analiza filtrelor (alegerea tipului de


filtru)

Pentru a vizualiza răspunsul în frecvenţă al filtrului, răspunsul la


impuls, diagrama poli-zerouri, şi răspunsul la impuls treaptă se poate
selecta View din fereastra corespunzătoare pentru SPTool (Figura 20)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 173

Filtre cu răspuns finit la impuls (FIR)

Figura 20 Instrumentul pentru proiectarea și analiza filtrelor


(alegerea tipului de analiză)

Se poate filtra un semnal cu ajutorul unui filtru proiectat selectând un


filtru în lista Filters, iar semnalul din lista Signals şi apoi selectând
Apply.

3 Desfăşurarea lucrării

1. Exercițiul 1
Să se reprezinte grafic ferestrele dreptunghiulară, triunghiulară,
Hanning, Hamming, Blackman şi Kaiser (pentru diferite valori ale lui β )
utilizând comenzile: rectwin, bartlett, hanning, hamming, blackman şi
kaiser. Să se determine şi să se reprezinte modulul răspunsului în
frecvenţă al acestora. Să se remarce valorile lobilor secundari. Trageţi
concluzii cu privire la efectul acestor ferestre în proiectarea filtrelor FIR.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
174 Lucrarea 9

Prelucrarea semnalelor biomedicale

2. Exercițiul 2
Să se studieze posibilitățile interfeței wintool pentru proiectarea și
analiza spectrală a diferitelor ferestre.

3. Exercițiul 3
Să se conceapă un filtru FIR, de tip FTB, de ordinul 25, prin metoda
ferestrelor (fereastră dreptunghiulară, Bartlett, Blackman, Hamming,
Hanning, Kaiser), având limitele benzii de trecere Fp1=12 kHz şi Fp2=16
kHz. Se consideră o frecvenţă de eşantionare de FS=96 kHz.
Pentru fiecare tip de fereastră să se reprezinte:
- răspunsul în frecvenţă al filtrului;
- răspunsul la impuls;
- distribuţia zerourilor ;
Să se compare răspunsurile în frecvenţă şi să se precizeze ce fereastră
asigură cea mai îngustă bandă de tranziţie.
Comentaţi forma răspunsului la impuls şi distribuţia zerourilor sale.

4. Exercițiul 4
Să se scrie programul afferent exemplului 6 exemplificat în
paragraful anterior.

5. Exercițiul 5
Să se proiecteze un filtru FIR, de tip FTS, de ordinul 48, prin metoda
eşantionării în frecvenţă, având frecvenţa limită a benzii de trecere Fp=10
kHz. Frecvenţa de eşantionare este Fs =30 kHz. Să se reprezinte răspunsul
în frecvenţă al filtrului, precum şi localizarea zerourilor sale.

6. Exercițiul 6
Să se proiecteze un filtru FTJ având ordin minim, cu frecvenţa de
tăiere din banda de trecere de Fp1=500 Hz şi frecvenţa din banda de
oprire de Fo1=600 Hz, având o frecvenţă de eşantionare Fs= 2000 Hz, o
atenuare de cel puţin 40 dB în banda de oprire şi de cel mult 3 dB în
banda de trecere.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 9 175

Filtre cu răspuns finit la impuls (FIR)

7. Exercițiul 7
Să se aplice metoda Remez pentru a se determina ordinul unui filtru
utilizat pentru a separa un semnal sinusoidal de frecvenţă F1=3 kHz de un
altul de frecvenţă F2=3,5 kHz. Eşantionarea se face cu frecvenţa de 15
kHz.
Să se reprezinte amplitudinea şi faza funcţiei de transfer, iar apoi să
se studieze efectul filtrării cu filtrul proiectat asupra semnalului iniţial
(suma celor două semnale sinusoidale).
8. Exercițiul 8
Să se poiecteze un filtru FIR, având aceleaşi cerinţe ca cele
specificate la punctul 1, utilizând interfaţa grafică sptool.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
176 Lucrarea 9

Prelucrarea semnalelor biomedicale

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10

Filtre cu răspuns infinit la impuls (IIR)


1 Noţiuni teoretice
1.1 Caracterizarea filtrelor cu răspuns infinit la impuls (IIR)
Un filtru IIR poate fi descris prin una din relaţiile:

y(n) = ∑h(k)x(n −k) , (1)
k=0
N M
y (n ) = − ∑ a k y (n − k ) + ∑ bk x (x − k ) , (2)
h =d h =0
M
∑ bk z −h
H ( z ) = h =0 , (3)
N
−h
1+ ∑ ak z
h =1
Unde h(k) este răspunsul la impuls al filtrului, teoretic infinit ca
durată, iar ak şi bk coeficientii filtrului. Tehnicile de proiectare a unui
filtru IIR se bazează pe conversia unui filtru analogic într-unul digital.
Un filtru analogic poate fi descris prin:
10 funcţia de transfer:

β (s )
M

B (s ) ∑
k
k
H (s ) = = k =0
, M ≤ N , (4)
A(s ) N

∑α s k =0
k
k

unde αk, βk sunt coeficienţii filtrului analogic.


20 prin răspunsul la impuls, legat de funcţia de transfer prin
transformata Laplace:

H s (s ) = ∫ h (t )e − st dt , (5)
−∞
0
3 un filtru analogic cu funcţia de transfer H(s) raţională poate fi
descris şi de ecuaţia diferenţială liniară cu coeficienţi constanţi:
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
178 Lucrarea 10

Prelucrarea semnalelor biomedicale

N
d k y (t ) M d k x (t )

h=0
αk
dt h
= ∑ βk
h =0 dt h
, (6)

unde x(t), y(t) reprezintă intrarea, respectiv ieşirea filtrului.


Fiecare din aceste trei reprezentări ale unui filtru analogic conduce la
metode diferite de convertire a filtrului analogic în domeniul timp.
Un filtru IIR stabil nu poate avea fază liniară.
La proiectarea filtrelor IIR se specifică doar caracteristica de
amplitudine. Nu înseamnă că faza nu este importantă. Deoarece faza şi
amplitudinea sunt în strânsă legătură, se specifică caracteristică de
amplitudine şi se acceptă răspunsul în frecvenţă obţinut prin metodologia
respectivă. Privind relaţia (1), un filtru IIR este cu reacţie şi deci este
necesar un număr mai mic de coeficienţi decât în cazul filtrelor FIR.
Panta în banda de tăiere poate fi mult mai abruptă decât în cazul
filtrelor FIR. În schimb, filtrele IIR pot fi instabile şi performanţele sale
pot fi degradate de cuantizare.
1.2 Determinarea ieșirii unui sistem canâ se cunoaște semnalul de
intrare
Un sistem discret poate fi caracterizat prin un număr de coeficienți a
și b, adică coeficienții funcției de transfer.
Există două modalități de a determina ieșirea sistemului atunci când
se cunoaște semnalul de la intrare:
• utilizând funcția filter.m
• utilizând convoluția (funcția conv.m)
Se mai poate determina ieșirea unui semnal și prin multiplicare în
domeniu frecvență (o metodă mai puțin folosită).
Utilizarea funcției filter: dacă coeficienții a și b ce caracterizează un
filtru sunt cunoscuți, este foarte simplu să se afle răspunsul sistemului.
Se consideră un sistem descris prin următoarea ecuație cu diferențe
d3 = 0,33 + 1,53 − 1 + 0.6d3 − 1.
Coeficienții sunt:  = E0.3 1.5G, = E1 − 0.6G.
Considerăm un semnal oarecare x, pe care îl filtrăm.

x = [1 2 3 4 5 6 7 8 9] ;
b = [0.3 1.5];

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10 179

Filtre cu răspuns infinit la impuls (IIR)

a = [1 -0.6];
y = filter(b, a, x);

Utilizarea convoluției este utilă atunci când se poate afla ușor


răspunsul la impuls al sistemului și mult mai dificil să se încerce un
model al sistemului, adică să se detremine coeficienții a și b care
modelează comportarea sistemului.

h = impz(b,a);
y2 = conv(x,h);

y2 trebuie să fie același cu y.

Dacă se dorește să se folosească multiplicare în frecvență, trebuie


calculat răspunsul în frecevență al filtrului (transformata Fourier a
răspunsului la impuls al filtrului). Următorul program ilustrează acest
lucru.

x = [ 1 2 3 4 5 6 7 8 9] ;
b = [0.3 1.5];
a = [1 -0.6];
h = filter(b,a,[ 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);
% sau impz
num_bins = length(x) + length(h);
H = fft(h, num_bins);
X = fft(x, num_bins);
Y = X.*H;
y3 = ifft(Y);
y3 = real(y3);

1.3 Proiectarea filtrelor IIR


Concepţia unui filtru IIR cupride trei etape importante:
1. Stabilirea specificaţiilor filtrului;
2. Determinarea parametrilor filtrului pentru a satisface
specificaţiile;
3. Realizarea filtrului numeric printr-o structură specifică.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
180 Lucrarea 10

Prelucrarea semnalelor biomedicale

1. În principiu, nu este nici o dificultate să se proiecteze un filtru


analogic având anumite specificaţii. O abordare utilă în proiectarea
filtrelor discrete IIR este de a modela sistemul dorit ca un filtru analogic
şi apoi să se convertească prin anumite metode, în forma discretă. Se va
obţine un sistem analogic descris prin funcţia de sistem H(s), ce constituie
“un prototip" pentru filtrul digital ce trebuie implementat ca sistem discret
descris prin funcţia de sistem H(z).
Ca şi în cazul filtrelor cu răspuns finit la impuls, primul pas este
specificarea caracteristicilor filtrului. Pentru exemplificare se prezintă
caracteristica de amplitudine a unui FTB
H( f )
banda de trecere (BT)
1+δp
1-δp
banda de tranzi]ie (BTr)

BO banda de oprire (BO)

δS

fS1 fP1 fP2 fS2 1/2 f

Fig.1. Caracteristica de frecvenţă a unui FTB.

Pentru specificarea răspunsului în amplitudine, H(ω), se utilizează


următorii parametri
ε - eroarea permisă în B.T.
δp - deviaţia din B.T.
δs - deviaţia din B.O.
fp1, fp2 - frecvenţele de margine din B.T.
fs1, fs2 - frecvenţele de margine din B.O.
Deviaţiile din B.T. şi B.O. pot fi date direct exprimate în unităţi de
măsură corespunzătoare semnalului (V, A, etc) sau în dB, când sunt
definite astfel:

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10 181

Filtre cu răspuns infinit la impuls (IIR)

AP = −20 log 10 (1 − S P ) = 10 log 10 (1 + ε ) , (7)


AS = −20 log10 S S , (8)
Este important de precizat faptul că , în general, proiectantul nu
dispune de toate datele pentru specificarea completă a filtrului, dar pentru
simplificarea proiectării se impun unele cerinţe pentru filtru.
2. Pasul următor este cel al aproximării sau al calculului
coeficienţilor filtrului.
Există mai multe metode de aproximare a filtrelor IIR:
A. Sinteza- plecându-se de la un filtru analogic prototip, prin:
1) metoda invarianţei răspunsului la impuls;
2) metoda transformării biliniare;
3) metoda alocării polilor şi zerourilor;
4) metoda transformării de frecvenţă;
5) metoda celor mai mici pătrate.
B. Sinteza directă, printr-un procedeu asistat de calculator;
Se vor prezenta doar metoda invarianţei răspunsului la impuls şi
metoda transformării biliniare deoarece sunt considerate cele mai
puternice metode de transformare a funcţiei H(s) în H(z).
1.3.1 Metoda invarianţei răspunsului la impuls
Proiectarea prin această metodă are la bază prezentarea următoare:
răspunsul unui filtru digital IIR la impuls unitate, h(n), trebuie să fie egal
cu răspunsul unui filtru analogic la impuls unitate, eşantionat, adică:
h (n ) = h a (nT ), n∈Z ,
Aplicând această relaţie, se arată [Pr] că, dacă funcţia de transfer a
filtrului analogic este:
N
c
H a (s ) = ∑ k , (9)
h =1 s − p k

unde pk sunt polii filtrului analogic şi ck coeficientul filtrului, atunci


funcţia de transfer a filtrului digital este de forma:
N
ck
H (z ) = ∑ − Pk T
, (10)
h =1 1 − e ⋅ z −h
Se observă că filtrul digital are polii la

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
182 Lucrarea 10

Prelucrarea semnalelor biomedicale

zh = e Pk T h = 1,2,....N , (11)
Cu această expresie (11) a funcţiei de transfer, un filtru IIR se
realizează uşor ca un _bank" paralel de filtre cu un singur pol. Dacă unii
din poli sunt valori complexe, ei apar în perechi complex conjugate şi se
combină spre a forma un filtru cu doi poli.
În consecinţă filtrul rezultant poate fi realizat ca un _bank" paralel de
filtre cu doi poli.
Relaţia (11) poate fi generalizată şi pentru situaţia în care polii sunt
multipli.
Paşii ce trebuie parcurşi în proiectarea filtrelor cu răspuns finit la
impuls IIR folosind metoda invarianţei la impuls sunt:
a) Se determină funcţia de transfer a filtrului analogic care satisface
specificaţiile filtrului digital dorit.
b) Se dezvoltă H(s) în fracţii simple.
c) Se obţine transformata z pentru fiecare fracţie simplă.
d) Se obţine H(z) ca sumă de funcţii de transfer H(z) cu polii simpli
sau dubli.
Metoda invariantei la impuls este potrivită pentru proiectarea filtrelor
FTJ, FTB şi, datorită fenomenului de aliasing, este inadecvată pentru
proiectarea FTS.
1.3.2 Metoda transformării biliniare
Se descrie o transformare din planul s în planul z, numită
transformată biliniară. Este una din cele mai eficiente metode de
proiectare a filtrelor IIR, obţinându-se un răspuns în frecvenţă care
aproximează cât mai fidel filtrul analogic din care provine şi în acelaşi
timp proiectarea este simplă.
Transformata biliniară transformată axa jΩ în cercul unitate doar o
singură dată, evitându-se astfel fenomenul de aliasing. În plus, toate
punctele din semiplanul stâng trec în interiorul cercului unitate în planul z
şi toate punctele din semiplanul drept al planului s trec în puncte
corespunzătoare din exteriorul cercului unitate din planul z.
Se consideră un filtru liniar analogic pentru care funcţia de transfer
este:

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10 183

Filtre cu răspuns infinit la impuls (IIR)

H (s ) =
b
, (12)
s+a
Sistemul este caracterizat şi prin ecuaţia diferenţială:
dy (t )
+ ay (t ) = bx(t ) , (13)
dt
Pornind de la această ecuaţie se obţine funcţia de transfer a filtrului
digital ca fiind:
H (z ) =
b
, (14)
2  1 − z −1 
 +a
T  1 + z −1 
Evident, relaţia care face trecerea de la planul s la planul z este:
2  1 − z −1 
s=   , (15)
T  1 + z −1 
Aceasta este numită transformarea biliniară.
Pentru a studia caracteristicile transformăriii biliniare înlocuim
z = re jω si s = σ + jΩ , (16)
în (16) şi se obţine:
2 r2 −1
σ=
T 1 + r 2 + 2r cos ω , (17)
2 2 r sin ω
Ω=
T 1 + r 2 + 2 r cos ω
Dacă r < 1 atunci σ < 0 şi dacă r > 1 atunci σ > 0. Deci semiplanul
stâng din s trece în interiorul cercului unitate şi semiplanul drept al
planului s în exteriorul cercului unitate în planul z.
Dacă r = 1 atunci σ = 0 şi
2 sin ω 2 ω
Ω= = tg , (18)
T 1 + cosω T 2
sau echivalent:
ΩT
ω = 2 arctg , (19)
2
Se observă că intregul domeniu pentru Ω trece o singură dată în
domeniul -π ≤ ω ≤ π. În schimb această conversie este puternic neliniară.
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
184 Lucrarea 10

Prelucrarea semnalelor biomedicale

Se observă o compresie sau “o întreţesere” a frecvenţei, după cum


este în mod uzual numit fenomenul . Se observă că s = ∞ trece în z = -1.
În consecinţă un FTJ cu un singur pol ce are un zerou s = ∞ conduce la un
filtru digital cu un zerou în z = -1.
Paşii care trebuiesc parcuşi în proiectarea unui filtru digital prin
metoda transformatei biliniare sunt:
1) Se specifică frecvenţele caracteristice.
2) Se calculează frecvenţa corespunzătoare filtrului analogic, pentru
a se înlătura distorsinile datorită compresiei axei jΩ, cu relaţia:
2 ω
Ωk = tg k , (20)
T 2
3) se calculează funcţia de transfer a unui filtru analogic H(s) şi
specificaţiile Ωk de la punctul anterior.
4) Se calculează funcţia de transfer H(z) a filtrului digital dorit.
5) Se realizeză H(z) prin ecuaţii diferenţiale, de preferinţă prin
folosirea unor secţiuni de ordin inferior.
1.4 Avantajele filtrelor IIR
Avantajul principal al filtrelor IIR faţă de filtrele FIR constă în faptul
că ordinul filtrului obţinut pentru a îndepini anumite specificţii cerute este
mult mai mic decât cel corespunzător pentru un filtru IIR.
Deşi filtrele IIR au fază neliniară, prelucrarea datelor în MATLAB
este în cele mai multe cazuri off-line, adică secvenţa de date este
disponibilă înaintea filtrarii, ceea ce permite utilizarea unui filtru
necauzal, de fază zero (prin intermediul funcţiei filtfilt) care elimină
distorsiunile de fază ale unui filtru IIR.
2 Metode de aproximare în MATLAB a filtrelor IIR
Tabelul 1 conţine metodele pe filtrare folosite în toolbox-ul
MATLAB precum şi funcţiile disponibile pentru implementarea acestor
metode.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10 185

Filtre cu răspuns infinit la impuls (IIR)

Tabelul 1. Funcții pentru aproximarea filtrelor IIR

Metodă Descriere Funcţii MATLAB


Filtru Utilizarea polilor şi • pentru proiectarea
analogic zerourilor unui filtru FTJ filtrului analogic: besself,
prototip în domeniu continuu butter, cheby1, cheby2, ellip
(folosind transformata • pentru estimarea
Laplace) şi obţinerea unui ordinului filtrului: buttord,
filtru digital prin cheb1ord, cheb2ord, ellipord
transformare în frecvenţă • pentru proiectarea FTJ
şi discretizare analogic: besselap, buttap,
cheb1ap, cheb2ap, ellipap
• pentru transformarea în
frecvenţă: lp2bp, lp2bs,
lp2hp, lp2lp
• pentru discretizarea
funcţiilor: bilinear, iminvar
Proiectare Proiectarea unui filtru • yulewalk
directă digital direct în domeniu
discret prin aproximarea
răspunsului în
amplitudine
Modelare Gasirea unui filtru digital • în domeniul timp: lpc,
parametrică care aproximează prony, stmcb
răspunsul în domeniul • în domeniul frecvenţă:
timp sau în domeniul invfreqs, invfreqz
discret
Proiectare gen. Proiectare filtre FTJ de tip • maxflat
Butterworth Butterworth cu mai mulţi
poli decât zerouri

2.1 Sinteza unui filtru IIR plecându-se de la un filtru analogic


prototip
Tehnicile clasice de proiectare a unui filtru IIR include găsirea unui
filtru analogic FTJ, cu frecvenţa de tăiere de 1, translarea acestui filtru

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
186 Lucrarea 10

Prelucrarea semnalelor biomedicale

“prototip” în configuraţia de bandă dorită, apoi transformarea filtrului în


domeniul discret.
2.1.1 Proiectarea unui filtru analogic prototip de tip FTJ
Tabelul 2 următor prezintă funcţiile MATLAB utilizate pentru
proiectarea oricărui tip de FTJ analogic.

Tabelul 2. Funcții pentru proiectarea filtrelor analogice FTJ

Tipul filtrului Funcţia MATLAB


Bessel [z,p,k]=besselap(n)
Butterworth [z,p,k]=buttap(n)
Chebyshev tip I [z,p,k]=cheb1ap(n,Rp )
Chebyshev tip II [z,p,k]=cheb2ap(n,Rs )
Elliptic [z,p,k]=elliplap(n,Rp,Rs)

De exemplu:
• [z,p,k]=buttap(n) returnează zerourile, polii şi câştigul pentru
un filtru analogic FTJ de tip Butterworth, normalizat, de ordin
n. Filtrul realizat are n poli în afara cercului unitate în
semiplanul stâng şi nici un zerou.
• [z,p,k]=cheb1ap(n,Rp) returnează zerourile, polii şi câştigul
pentru un filtru analogic FTJ, de tip Chebyshev I, normalizat,
de ordin n, cu un riplu de Rp dB în banda de trecere. Filtrele
Chebyshev I au un maxim plat în banda de oprire.
• [z,p,k]=cheb2ap(n,Rs) returnează zerourile, polii şi câştigul
pentru un filtru analogic FTJ, de tip Chebyshev I, normalizat,
de ordin n, cu un riplu de Rs dB în banda de oprire. Filtrele
Chebyshev II au un maxim plat în banda de trecere.
• [z,p,k]=ellipap(n,Rp,Rs) returnează zerourile, polii şi câştigul
pentru un filtru analogic FTJ, eliptic, normalizat, de ordin n,
cu un riplu de Rp dB în banda de trecere şI un riplu de Rs dB
în banda de oprire.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10 187

Filtre cu răspuns infinit la impuls (IIR)

2.1.2 Transformarea de frecvenţă


Al doilea pas în proiectarea unui filtru analogic este transformarea de
frecvenţă aplicată FTJ. MATLAB-ul conţine funcţii care transformă
filtrul FTJ analogic (cu frecvenţa de tăiere de 1 rad/sec) într-unul FTS,
FTB sau FOB având frecvenţele de tăiere dorite.
Tabelul 3 prezintă funcţiile MATLAB utilizate pentru transformările
de frecvenţă.

Tabelul 3. Funcții utilizate pentru transformări de frecvență

Trasnsformarea de Funcţia MATLAB


frecvenţă
FTJ în FTJ [numt,dent]=lp2lp(num,den,w0)
s' = s ω0 [At,Bt,Ct,Dt]=lp2lp(num,den,w0)
FTJ în FTS [numt,dent]=lp2hp(num,den,w0)
s ' = ω0 s [At,Bt,Ct,Dt]==lp2hp(num,den,w0)
FTJ în FTB [numt,dent]=lp2bp(num,den,w0,Bw)
ω 0 (s ω 0 )2 + 1 [At,Bt,Ct,Dt]=
s' = lp2bp(num,den,w0,Bw)
Bw s ω0
FTJ în FOB [numt,dent]=lp2bs(num,den,w0,Bw)
B s ω0 [At,Bt,Ct,Dt]=
s' = w
ω 0 (s ω 0 )2 + 1 lp2bs(num,den,w0,Bw)

După cum se observă, toate transformările de frecvenţă acceptă două


modele de sistem: prin funcţia de transfer şi prin state-space. Pentru cazul
FTB şi FOB ω 0 = ω1ω 2 şi Bw = ω 2 − ω1 , unde ω1 şi ω 2 reprezintă
limita inferioară, respectiv limita superioară a benzii.
Funcţiile ce realizează transformarea de frecvenţă utilizează
substituția variabilei frecvenţă. În cazul lp2bp şi în cazul lp2bs este o
substituţie de ordinul doi astfel încât ordinul filtrului obţinut este de două

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
188 Lucrarea 10

Prelucrarea semnalelor biomedicale

ori mai mare decât cel al filtrului prototip. Pentru lp2lp şi lp2hp ordinul
filtrului de ieşire este ecelaşi ca al celui de intrare.
Exemplul 1. Să se proiecteze un filtru FTB analogic, de tip
Chebyshev I, de ordin 5, având riplul în banda de trecere de 3 dB.

%proiectarea unui FTB de tip Chebyshev I


clear all
close all
[z,p,k]=cheb1ap(5,3)
[num,den]=zp2tf(z,p,k)
w1=pi/5
w2=pi
Bw=w1-w2
w0=sqrt(w1*w2)
[numt,dent]=lp2bp(num,den,w0,Bw)
w=linspace(.01,1,500)*2*pi
h=freqs(numt,dent,w)
semilogy(w/2,abs(h),'k'),grid on

Se obţine reprezentarea din Figura 1 a răspunsului în amplitudine al


filtrului

0
10

-1
10

-2
10

-3
10

-4
10

-5
10

-6
10

-7
10
0 0.5 1 1.5 2 2.5 3 3.5

Figura 1. Răspunsul în amplitudine al filtrului analogic din exemplul 1

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10 189

Filtre cu răspuns infinit la impuls (IIR)

2.1.3 Discretizarea filtrului


Al treilea pas, în cazul în care se foloseşte tehnica bazată pe un filtru
analogic prototip, este discretizarea în domeniul timp. Există două metode
pentru acesta: metoda invarianţei la impuls şi metoda transformării
biliniare.
Funcțiile MATLAB folosite sunt cuprinse în Tabelul 4.

Tabelul 4. Funcții pentru discretizarea filtrelor analogice

Transformarea Funcţia MATLAB


Invarianţa la impuls [numd,dend]=impinvar(num,den,Fs)
Transformare [zd,pd,kd]=bilinear(z,p,k,Fs)
biliniară [numd,dend]= bilinear(num,den,Fs)
[Ad,Bd,Cd,Dd]= bilinear(At,Bt,Ct,Dt,Fs)

• [numd,dend]=impinvar(num,den,Fs) creează un filtru digital


având coeficienţii numărătorului şi numitorului returnaţi în
vectorii numd, respectiv dend al cărui răspuns la impuls este
egal cu cel al fitrului analogic ai cărui coeficienţi sunt
conţinuţi în vectorii num, respectiv den, eşantionat cu
frecvenţa de eşantionare Fs (Hz). Dacă nu se precizează Fs
atunci se ia implicit 1 Hz. Această funcţie se aplică numai
pentru filtre descrise prin funcţia de transfer. Metoda
invarianţei la impuls nu este adecvată pentru FTS şi FOB.

Exemplul 2. Să se proiecteze un filtru FTB discret, de tip Chebyshev


I, de ordin 5, având riplul în banda de trecere de 3 dB, folosindu-se
metoda invarian]ei la impuls. Să se reprezinte răspunsul în amplitudine şi
fază al filtrului obţinut.
Primii doi paşi necesari pentru a proiecta acest filtru au fost
prezentaţi în exemplul anterior. Pentru obţinerea filtrului digital se
foloseşte funcţia impinvar
Fs=2;
[bz,az]=impinvar(numt,dent,2)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
190 Lucrarea 10

Prelucrarea semnalelor biomedicale

freqz(bz,az)

Se obţin următoarele reprezentări


0
Magnitude (dB)

-50

-100

-150
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

800

600
Phase (degrees)

400

200
0

-200
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

Figura 2. Răspunsul în frecvență al filtrului discret din exemplul 1

Funcţia bilinear poate fi aplicată pentru trei moduri de descriere a


unui sistem: prin reprezentarea poli-zerouri, prin funcţia de transfer şi prin
reprezentarea state-space.
• [zd,pd,kd]=bilinear(z,p,k,Fs) converteşte funcţia de transfer
din domeniul s, specificată prin zerourile, polii şi câştigul din
vectorii coloană z,p şi k în echivalentul discret din domeniul z,
obţinut prin transformare biliniară (s = 2*Fs*(z-1)/(z+1)),
frecvenţa de eşantionare fiind de Fs Hz.
• [numd,dend,kd]=bilinear(num,den,k,Fs), unde num şi den
sunt vectori linie ce con]in coeficien]ii funcţiei de transfer ai
filtrului analogic, iar numd şi dend coeficienţii funcţiei de
transfer ai filtrului digital.
• [Ad,Bd,Cd,Dd]= bilinear(At,Bt,Ct,Dt,Fs) este versiunea
pentru state-space.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10 191

Filtre cu răspuns infinit la impuls (IIR)

Fiecare din cele trei forme de mai sus pentru bilinear acceptă un
argument de intrare opţional ce reprezintă frecvenţa Fp ce se “potiveşte”.
ΩT
Daca în relaţia ω = 2 arctg care reprezintă transformarea biliniară în
2
Fp
loc de T 2 ( 1 2 Fs ) se introduce 2πFp tgπ atunci transformarea
Fs
Fp
biliniară trece frecvenţa Fp din domeniul analogic în frecvenţa f p =
Fs
din domeniul discret.

Exemplul 3 Să se proiecteze un filtru FTB discret, de tip Chebyshev


I, de ordin 5, având riplul în banda de trecere de 3 dB, folosindu-se
metoda transformării biliniare. Să se reprezinte răspunsul în amplitudine
şi fază al filtrului obţinut.
Primii doi paşi necesari pentru a proiecta acest filtru au fost
prezentaţi în primul exemplu. Pentru obţinerea filtrului digital se foloseşte
funcţia bilinear.

0
Magnitude (dB)

-100

-200

-300
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

1000
Phase (degrees)

500

-500
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

Figura 3. Răspunsul în frecvență al filtrului discret din exemplul 3

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
192 Lucrarea 10

Prelucrarea semnalelor biomedicale

După cum era de aşteptat, frecvenţa inferioară a benzii de trecere este


la 0.1 Hz,. Frecvenţa superioară nu este 0.5 Hz ci mai mică, deşi în
domeniul analogic este exact 0.5 Hz. Acest lucru se datorează
neliniarităţii transformării biliniare. Pentru a evita această neliniaritate
este necesar să se proiecteze un filtru în domeniu analogic cu limitele de
frecvenţe ale benzii de trecere astfel alese încât după transformarea
biliniară să se transforme în frecvenţele dorite.
2 ω
Tinând seama de relaţia Ωk = tg k pulsaţiile w1 = 2π 0.1 şi
T 2
w1 = 2π 0.5 se modifică astfel w1 = 2 Fs ⋅ tg (2π 0.1 2 Fs ) ,
w2 = 2 Fs ⋅ tg (2π 0.5 2 Fs ) încât după transformarea biliniară pulsaţiile să
fie 0.1 Hz respectiv 0.5 Hz. Programul dat în primul exemplu se modifică,
obţinându-se:

%proiectarea unui filtru discret IIR de tip trece-


banda, avand frecventele benzii de trecere 0.1 si 0.5 Hz
[z,p,k]=cheb1ap(5,3);
[num,den]=zp2tf(z,p,k);
Fs=2
w1=2*Fs*tan(.1*pi/Fs);
w2=2*Fs*tan(.5*pi/Fs);
Bw=w2-w1;
w0=sqrt(w1*w2);
[numt,dent]=lp2bp(num,den,w0,Bw);
[numd,dend]=bilinear(numt,dent,Fs)
freqz(numd,dend)

Reprezentarile răspunsului în amplitudine şi fază ale filtrului obţinut


sunt următoarele

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10 193

Filtre cu răspuns infinit la impuls (IIR)

Magnitude (dB) 0

-100

-200

-300
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

500
Phase (degrees)

-500

-1000
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

Figura 4. Răspunsul în frecvență al filtrului discret din exemplul 3


(după modificare)
Pentru proiectarea unui filtru analogic se mai pot utiliza şi funcţiile
MATLAB complete (Tabelul 5) 1

Tabelul 5. Alte funcții pentru proiectarea filtrelor analogice

Tipul filtrului Funcţia MATLAB


Bessel (numai [b,a]=besself(n,wn,options)
anlogic) [z,p,k]=besself(n,wn,options)
[A,B,C,D]=besself(n,wn,options)
Butterworth [b,a]=butter(n,wn,options)
[z,p,k]=butter(n,wn,options)
[A,B,C,D]=butter(n,wn,options)
Chebyshev tip I [b,a]=cheby1(n,Rp,wn,options)
[z,p,k]= cheby1(n,Rp,wn,options)
[A,B,C,D]= cheby1 (n,Rp,wn,options)

1
Se vor urmări descrierile funcțiilor din help
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
194 Lucrarea 10

Prelucrarea semnalelor biomedicale

Chebyshev tip II [b,a]=cheby2(n,wn,options)


[z,p,k]= cheby2(n,wn,options)
[A,B,C,D]= cheby2 (n,wn,options)
Elliptic [b,a]=ellip (n,Rp,Rs,wn,options)
[z,p,k]= ellip(n, Rp,Rs,wn,options)
[A,B,C,D]= ellip(n, Rp,Rs,wn,options)

Implicit, fiecare din aceste funcţii returnează un FTJ. Este necesar să


se specifice pulsaţia de tăiere normalizată, wn (frecvenţa Nyquist este 1
Hz). Pentru FTS se adaugă la lista de parametri ‘high’. Pentru FTB sau
FOB wn reprezintă un vector cu două elemente cu frecvenţa inferioară şi
superioară de tăiere, iar pentru configuraţia FOB se specifică ‘stop’.
Pentru a calcula ordinul minim al unui filtru IIR care să
îndeplinească anumite cerinţe se folosesc funcţiile MATLAB din Tabelul
6.
Tabelul 6. Funcții MATLAB pentru calculul ordinului minim al filtrelor IIR

Tipul filtrului Funcţia MATLAB ce estimeză


ordinul
Butterworth [n,wn]=buttord(wp,ws,Rp,Rs)
Chebyshev tip I [n,wn]=cheb1ord(wp,ws,Rp,Rs)
Chebyshev tip II [n,wn]=cheb2ord(wp,ws,Rp,Rs)
Elliptic [n,wn]=ellipord(wp,ws,Rp,Rs)

• [n,wn]=buttord(wp,ws,Rp,Rs) returnează cel mai mic ordin


al unui filtru digital Butterworth care are o ondulaţie maximă
în banda de trecere de Rp dB şi cel putin o atenuare de Rs dB
în banda de oprire. wp şi ws sunt pulsatiile corespunzătoare din
banda de trecere şi respectiv din banda de oprire, cuprinse
între 0 şi 1 (1 corespunde la π radiani). De exemplu:
• Lowpass: wp = .1, Ws = .2
• Highpass: wp = .2, Ws = .1
• Bandpass: wp = [.1 .8], Ws = [.2 .7]
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 10 195

Filtre cu răspuns infinit la impuls (IIR)

• Bandstop: wp = [.2 .7], Ws = [.1 .8]


wn reprezintă frecvenţa de tăiere la 3 dB, frecventă ce se foloseşte cu
funcţia butter pentru a se obţine specificaţiile dorite.
Când Rp este 3 dB wn este egal cu wp din buttord.
[n, wn] = buttord(Wp, Ws, Rp, Rs, 's') se aplică pentru un filtru
analogic, caz în care wp şi ws sunt în radiani/sec.
Exemplele date anterior pentru obţinerea unui FTB pot fi modificate
astfel încât să se folosească numai funcţia cheby1.

Exemplul 4. Proiectarea unui filtru discret IIR de tip trece-banda,


avand frecventele benzii de trecere 0.1 si 0.5 Hz

%proiectarea unui filtru discret IIR de tip trece-


banda, avand frecventele benzii de trecere 0.1 si 0.5 Hz
[b,a]=cheby1(5,3,[0.1 0.5])
freqz(b,a)

0
Magnitude (dB)

-100

-200

-300
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

500
Phase (degrees)

-500

-1000
0 0.2 0.4 0.6 0.8 1
Normalized Frequency (×π rad/sample)

Figura 4. Răspunsul în frecvență al filtrului discret din exemplul 3

Exemplul 5

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
196 Lucrarea 10

Prelucrarea semnalelor biomedicale

Se propune să se elimine zgomotul dintr-un semnal ECG cu ajutorul


unui filtru IIR. Semnalul ECG este unul descărcat de pe Physionet Bank.
Frecvența de eșantionare este de 360 Hz și amplitudinea de 1mV2.

Figure 5. Semnal ECG cu și fără eliminarea liniei de bază

Dacă se utilizează sptool, se pot proiecta diferite filtre IIR


(Butterworth, Chebyshev Type-I și Chebyshev Type-II). Diferite situații
sunt reprezentate în Figura 6 (a, b, c).

2
Mohandas Choudhary, Ravindra Pratap Narwaria, Suppression of Noise in ECG Signal
Using Low pass IIR Filters,
Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi
Facultatea de Bioinginerie Medicală
Lucrarea 10 197

Filtre cu răspuns infinit la impuls (IIR)

(a)

(b)

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
198 Lucrarea 10

Prelucrarea semnalelor biomedicale

(c)
Figure 6. Răspunsul în amplitudine al filtrelor
Butterworth, Chebyshev Type-I și Chebyshev Type-II (Exemplul 6)

Dacă se filtrează semnalul ECG cu fltrele prezentate se obțin


semnalele reprezentate în Figura 7.

Figura 7. Semnalul ECG filtrat folosind 3 tipuri de filtre (Butterworth, Chebyshev


Type-I și Chebyshev Type-II).

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
Lucrarea 10 199

Filtre cu răspuns infinit la impuls (IIR)

4. Desfăşurarea lucrării
1. Concepeţi un filtru digital FTJ, de tipIIR, cu frecvenţa de
eşantionare de 1 Hz, cu o atenuare maximă de 0.75 dB în banda de trecere
(0,0.12944 Hz) şi de cel putin 20 dB în banda de oprire (frecvenţe mai
mari de 0.201 Hz). Determinaţi polii filtrului analogic echivalent asociat
de tip Butterworth.
2. Concepeţi un filtru digital prin metoda transformării biliniare,
care să în deplinească următoarele condiţii:
• Frecvenţa de eşantionare de Fs=1 Hz;
• Atenuarea de 0 dB pentru frecvenţa nulă;
• Atenuarea maximă de 1 dB pentru frecvenţa de 0,1 Hz;
• O atenuare minimă de 15 dB pentru frecvenţa de 0,15 Hz.
Concepeţi acest filtru, folosind modelele FTJ de tip
Butterworth şi Chebyshev.

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală
200 Lucrarea 10

Prelucrarea semnalelor biomedicale

Universitatea de Medicină şi Farmacie Grigore T. Popa Iaşi


Facultatea de Bioinginerie Medicală

S-ar putea să vă placă și