Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

BİYOMEDİKAL SİNYAL İŞLEME DERSİ 3.

HAFTA

SİSTEMLER, DOĞRUSAL ZAMANLA DEĞİŞMEYEN SİSTEMLER

Amaç

Bu deneyde genel sistem özellikleri incelenecektir. Doğrusal (lineer) Zamanla Değişmeyen


(LTI, LZD) sistemlerin özellikleri ve giriş çıkış bağıntısı incelenecektir.

SİSTEMLER;
Sinyalleri , üzerlerinde değişiklikler yaparak yeni işaretlere dönüştüren her türlü yapıya
“sistem” adı verilir. Matematiksel olarak ayrık bir sistem T[.], sürekli bir sistem T(.) işlevi ile
ifade edilebilir. Bu işlev, ayrık zamanlı sistemlerde girişteki x[n] sinyalini başka bir sinyal
olan y[n]’e dönüştürür. Sürekli zamanlı sistemlerde ise girişteki x(t) sinyalini başka bir sinyal
olan y(t)’e dönüştürür. Burada ayrık zamanlı sistemler için y[n], sürekli zamanlı sistemler için
y(t) sistemin çıkış sinyalleri sistem cevabı olarak adlandırılır.
y[n] = T(x[n]) y(t)= T(x(t))
Sistemler doğrusal ve doğrusal olmayan sistemler olarak sınıflandırılabilir. Ancak, burada
daha çok doğrusal sistemlerle ilgilenilecektir.

Lineer Sistemler
Bir ayrık veya sürekli zamanlı T[.] sistemi, ancak ve ancak aşağıdaki süperpozisyon ilkesini
sağlıyorsa doğrusal bir operatördür:
T[a1x1(n) + a2x2(n)] = a1T[x1(n)] + a2T[x2(n)]

Burada a1 ve a2 sabit ölçekleme katsayılarıdır. Lineer bir sisteme

𝑥[𝑛] = ∑∞
−∞ 𝑥[𝑘]𝛿[𝑛 − 𝑘] sinyali giriş olarak uygulanırsa bu sistemin çıkışı

𝑦[𝑛] = 𝑇{∑∞
−∞ 𝑥[𝑘]𝛿[𝑛 − 𝑘]} şeklinde elde edilir. Sistem lineer bir sistem olduğu için

dönüşüm işlemi toplam sembolünün içine alınabilir ve sistem çıkışı;

𝑦[𝑛] = ∑∞
−∞ 𝑥[𝑘] 𝑇{𝛿[𝑛 − 𝑘]} halini almaktadır. Sistem n anında k zamanındaki impulse

sinyalinden kaynaklanan yanıtına impulse yanıtı denirse 𝑇{𝛿[𝑛 − 𝑘]} = ℎ(𝑛, 𝑘) ile
gösterilebilir. h(n,k) lineer ancak zamanla değişen sistemlerin n zamanında, k anındaki
impulse girdisinden kaynaklanan yanıtıdır.
Buna göre Lineer Sistemlerin süperpozisyon ilkesi neticesinde elde edilen çıkışını aşağıdaki
gibi gösterilebiliriz;

𝑦[𝑛] = ∑ 𝑥[𝑘] ℎ(𝑛, 𝑘)


−∞

Sinyal işleme uygulamalarında genellikle Zamanla değişmeyen sistemler kullanılır. Zamanla


Değişen sistemler tercih edilmez.
Bu sistemlerde
y[n] = T{x[n]} ise y[n − k] = T{x[n − k]} olur ve h[n − k] = T{δ[n − k]} ile gösterilir.
Doğrusal, Zamanla Değişmeyen (DZD) Sistemler
Giriş-çıkış sinyalleri sırasıyla x[n] ve y[n] olan bir sistemde, giriş sinyali belli bir miktar
ötelendiğinde çıkış sinyalide de aynı miktarda ötelenirse böyle bir sistem Lineer, zamanla
değişmeyen (LZD,Linear Time Invarient LTI) sistem olarak adlandırılır. Böyle bir sistemde
lineer dönüşüm veya öteleme sırasının önemi yoktur.
x(n) → T[.] → y(n) “k” ile öteleme → y(n-k)
x(n) → “k” ile öteleme → x(n-k) →T[.] → y(n-k)
Doğrusal zamanla-değişmeyen bir sistem LTI[.]operatörü ile gösterilir.
Impulse (Dürtü) Yanıtı
Bir LTI sistemin girişine birim darbe sinyali uygulandığında elde edilen çıkış LTI sistemin
“Impulse Yanıtı” adını alır. Bu şu şekilde ifade edilebilir:

𝛿[n] LTI h[n]

Burada h[n] sistemin impulse yanıtıdır. Sistemin lineer olduğu kabul edilerek giriş bir sabit a
sayısı ile ölçeklendiğinde çıkışın da aynı oranda ölçeklendiği
görülmektedir:

a𝛿[n] LTI ah[n]

Aynı şekilde süperpozisyon ilkesi de geçerlidir:

a𝛿[n]+b𝛿[n] LTI ah[n]+bh[n]


Eğer sistem zamanla-değişmeyen sistem ise giriş darbe işareti k kadar ötelendiğinde çıkış
işareti de k kadar ötelenecektir:

𝛿[n-k] LTI h[n-k]

Doğrusallık ve zamanla-değişmezlik ilkeleri birleştirilirse aşağıdaki blok diyagramı elde


edilir.

a𝛿[n-i]+b𝛿[n-k] LTI ah[n-i]+bh[n-k]

LTI sistemlerin giriş çıkış bağıntsı;

𝑦[𝑛] = ∑∞
−∞ 𝑥[𝑘] ℎ[𝑛 − 𝑘] formülü ile elde edilmektedir. Bu işleme konvolüsyon işlemi adı

verilir ve 𝑦[𝑛] = 𝑥[𝑛] ∗ ℎ[𝑛] şeklinde gösterilir.

Döndürülmüş ve ötelenmiş birim darbe yanıtı h[n-k], giriş işareti x[k] , toplam işleminin
değişkeni k’nın fonksiyonlarıdır. Aynı zamanda x[k]ve h[n-k], dizilerinin çarpımları da bir
çarpım dizisi oluştururlar. h[k] dan elde edilen h[n-k], dizisi, k=0 zaman başlangıcına göre
h[k] yı ters çevirerek h[n-k], dizisinin elde edilmesi ve bu dizinin n kadar ötelenmesiyle elde
edilir. y[n] çıkışı çarpım dizisinin bütün değerleri üzerinden bir toplam yardımıyla bulunabilir.
Konvolüsyon işlemini 4 adım ile özetleyebiliriz:

1. Ters çevirme: k =0 zaman başlangıcına göre h[k]’yı ters çevirerek h[-k] elde edilir.

2. Öteleme: n0 pozitif ise sağa doğru, n0 negatif ise sola doğru h[-k] ötelenerek h[n0-k] elde
edilir.

3. Çarpma: x[k]h[n0-k], k çarpım dizisini elde etmek için x[k] ve h[n0-k] dizileri çarpılır.

4. Toplama: n=n0 zamanındaki çıkışı elde etmek için çarpım dizisinin bütün değerleri
toplanır.

Bu adımlar sonucunda, n=n0 anındaki sistem yanıtı elde edilecektir. Genelde, sistem yanıtının
tüm zamanlar için ne olacağı ile ilgilenilir. Sonuç olarak tüm olası zaman ötelemeleri için 2.-
4. arası adımlar tekrar edilmelidir.
LTI Sistemlerin Kararlılığı;

Bir sistemin kararlılığı; sisteme sınırlı bir giriş uygulandığında sınırlı bir çıkış elde ediliyorsa
bu sistem kararlıdır. Sistemlerde kararlılık Sınırlı Giriş-Sınırlı Çıkış (Bounded Input,-
Bounded Output, BIBO) olarak tanımlanır ve aşağıdaki gibi ifade edilir.

|𝑥[𝑛]| < ∞ 𝑖𝑠𝑒 |𝑦[𝑛]| < ∞

LTI sistelerde ise sistemin impulse yanıtı mutlak toplanabilirse kararlıdır.

∑|ℎ[𝑛]| < ∞ 𝑖𝑠𝑒 |𝑦[𝑛]| < ∞


−∞

LTI Sistemlerin Nedenselliği;

Bir sistemin çıkışı girişin şuandaki ve/veya geçmişteki değerlerine bağlıysa, girişin
gelecekteki değerlerine bağlı değilse sistem nedenseldir. LTI sistemlerde ise, impulse
yanıtının negatif eksende bileşeni yoksa sistem nedenseldir denir.

ℎ[𝑛] = 0 𝑛<0

Örnek: LTI bir sistemin giriş sinyali 𝑥[𝑛] = 𝑢[𝑛] − 𝑢[𝑛 − 10] ve sistemin impulse yanıtı
ℎ[𝑛] = 0.9𝑛 𝑢[𝑛]olarak verilmektedir. Bu sistemin çıkışı y[n] i hesaplayınız?

x[n] sonlu uzunluklu bir sinyal olup h[n] sonsuz uzunluklu bir sinyaldir. Konvolüsyon işlemi
neticesinde sonsuz uzunluklu sinyal elde edilir. Konvolüsyon işleminde iki durum
sözkonusudur.

1.durum: Konvolüsyon işleminde çakışma miktarının artması durumu;


1−0.9−(𝑛+1)
∑𝑛𝑘=0 0.9𝑛−𝑘 = 0.9𝑛 ∑𝑛𝑘=0 0.9−𝑘 =0.9𝑛 ( )=10(1 − 0.9−(𝑛+1) ) 0≤n<9
1−0.9−1

2.durum: Konvolüsyon işleminde çakışma miktarının sabit olması durumu;


1−0.9−10
∑9𝑘=0 0.9𝑛−𝑘 = 0.9𝑛 ∑9𝑘=0 0.9−𝑘 =0.9𝑛 n≥9
1−0.9−1

x[n], h[n] ve y[n] sinyalleri aşağıda grülmektedir.


Giris Sinyali
x[n] 2
1
0
0 10 20 30 40
n
Giris Sinyali
2
h[n]

1
0
0 10 20 30 40
n
Giris Sinyali
10
y[n]

5
0
0 20 40 60 80 100 120
n

Matlabda konvolüsyon işemi için ‘conv’ kodu kullanılmaktadır. Yukarıda verilen grafiği elde
edtmek için kullanılan Matlab programı aşağıda verilmiştir.

n=-5:50;
x1n=sinbasamak(n,0);
x2n=sinbasamak(n,10);
xn=x1n-x2n;
h1n=(0.9).^n;
hn=sincarpim(h1n,n,x1n,n);

yn=conv(xn,hn);

figure,subplot(3,1,1);stem(n,xn,'ko','filled','LineWidth',1)
xlim([-5 45]);
ylim([0 2])
xlabel('n','FontSize',14,'FontName', 'Times New Roman')
ylabel('x[n]','FontSize',14,'FontName', 'Times New Roman')
title('Giris Sinyali','FontSize',14,'FontName', 'Times New
Roman')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

subplot(3,1,2);stem(n,hn,'ko','filled','LineWidth',1)
xlim([-5 45]);
ylim([0 2])
xlabel('n','FontSize',14,'FontName', 'Times New Roman')
ylabel('h[n]','FontSize',14,'FontName', 'Times New Roman')
title('Impulse Yanıtı','FontSize',14,'FontName', 'Times New
Roman')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

subplot(3,1,3);stem(yn,'ko','filled','LineWidth',1)
xlabel('n','FontSize',14,'FontName', 'Times New Roman')
ylabel('y[n]','FontSize',14,'FontName', 'Times New Roman')
title('Çıkış Sinyali','FontSize',14,'FontName', 'Times New
Roman')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

Şekilden de görüldüğü gibi Matlabda conv kodu ile konvolüsyon işlemi gerçekleştirildiğinde
zaman bilgisi ortadan kalkmaktadır. Zaman bilgisini de elde etmek için konvolüsyon işemini
gerçekleştiren aşağıdaki fonksiyon elde edilmiştir.

function [y,ny] = conv_m(x,nx,h,nh)


% Modified Konvolüsyon
% --------------------------------------------------
% [y,ny] = conv_m(x,nx,h,nh)
% [y,ny] = KOnvolüsyon sonucu
% [x,nx] = birinci sinyal
% [h,nh] = ikinci sinyal
%
nyb = nx(1)+nh(1); nye = nx(length(x)) + nh(length(h));
ny = [nyb:nye]; y = conv(x,h);

Oluşturulan konvolüsyon fonksiyonu ile elde edilen konvolüsyon işlemi için elde edilen
Matlab kodu aşağıda yeralmaktadır.

n=-5:50;
x1n=sinbasamak(n,0);
x2n=sinbasamak(n,10);
xn=x1n-x2n;
h1n=(0.9).^n;
hn=sincarpim(h1n,n,x1n,n);

[yn,ny]=conv_m(xn,n,hn,n);

figure,stem(ny,yn,'ko','filled','LineWidth',1)
xlim([-5 45]);
ylim([0 9])
xlabel('n','FontSize',14,'FontName', 'Times New Roman')
ylabel('y[n]','FontSize',14,'FontName', 'Times New Roman')
title('Çıkış Sinyali','FontSize',14,'FontName', 'Times New
Roman')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

Örnek 2. LTI bir sistemin girişi x[n] = [1, 1, 1] -1 ≤n≤1, ve sistemin impulse yanıtı h[n]=
[1,1, 1] -1 ≤n≤1 olarak verilmektedir. Sistemin çıkışını bulunuz?

Çözüm: x[n] ve h[n] sinyalleri sonlu uzunluklu sinyallerdir (sonlu uzunluklu sinyal: sonlu
sayıda değeri sıfırdan farklı olan sinyal). Bu nedenle y[n]’de sonlu bir sinyal olacaktır.
Kolayca görülebilir ki, n≤-3 veya n≥3 için y[n] sıfırdır. Sıfırdan farklı terimleri ise:

𝑦[0] = ∑ 𝑥[𝑘]ℎ[0 − 𝑘] = 𝑥[−1]ℎ[1] + 𝑥[0]ℎ[0] + 𝑥[1]ℎ[−1] = 3


𝑘

𝑦[−1] = ∑ 𝑥[𝑘]ℎ[−1 − 𝑘] = 𝑥[−1]ℎ[0] + 𝑥[0]ℎ[−1] + 𝑥[1]ℎ[−2] = 2


𝑘

𝑦[1] = ∑ 𝑥[𝑘]ℎ[1 − 𝑘] = 𝑥[−1]ℎ[2] + 𝑥[0]ℎ[1] + 𝑥[1]ℎ[0] = 2


𝑘

𝑦[−2] = ∑ 𝑥[𝑘]ℎ[−2 − 𝑘] = 𝑥[−1]ℎ[−1] + 𝑥[0]ℎ[−2] + 𝑥[1]ℎ[−3] = 1


𝑘

𝑦[2] = ∑ 𝑥[𝑘]ℎ[2 − 𝑘] = 𝑥[−1]ℎ[3] + 𝑥[0]ℎ[2] + 𝑥[1]ℎ[1] = 1


𝑘
Ayrıca konvolüsyon toplamının hesabını çizimler yardımıyla da gösterebiliriz. x[k] , h[k] ve
tüm olası n değerleri için ötelenmiş h[n-k] sinyalleri ve sonuçta elde edilen y[n] sinyalleri
aşağıdaki şekilde görülebilmektedir.

Giris Sinyali
2
x[n]

0
-3 -2 -1 0 1 2 3
n
Impulse Yaniti
2
h[n]

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

2 2 2
x[k] x[k] x[k]
h[-3-k] h[-2-k] h[-1-k]
1 1 1

0 0 0
-4 -2 0 2 4 -4 -2 0 2 4 -4 -2 0 2 4

2 2 2
x[k] x[k] x[k]
h[0-k] h[1-k] h[2-k]
1 1 1

0 0 0
-4 -2 0 2 4 -4 -2 0 2 4 -4 -2 0 2 4

[htn,k]=sinterslendirme(hn,n);
%n=-3;
kn=k-3;
figure,subplot(2,3,1);stem(n,xn,'ko','filled','LineWi
dth',2);hold on;
stem(kn,htn,'filled','r-. diamond')
xlim([-4 4])
ylim([0 2])
legend('x[k]','h[-3-k]')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

%n=-2;
kn=k-2;
subplot(2,3,2);stem(n,xn,'ko','filled','LineWidth',2)
;hold on;
stem(kn,htn,'filled','r-. diamond')
xlim([-4 4])
ylim([0 2])
legend('x[k]','h[-2-k]')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

%n=-1;
kn=k-1;
subplot(2,3,3);stem(n,xn,'ko','filled','LineWidth',2)
;hold on;
stem(kn,htn,'filled','r-. diamond')
xlim([-4 4])
ylim([0 2])
legend('x[k]','h[-1-k]')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

%n=0;
kn=k-0;
subplot(2,3,4);stem(n,xn,'ko','filled','LineWidth',2)
;hold on;
stem(kn,htn,'filled','r-. diamond')
xlim([-4 4])
ylim([0 2])
legend('x[k]','h[0-k]')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

%n=1;
kn=k+1;
subplot(2,3,5);stem(n,xn,'ko','filled','LineWidth',2)
;hold on;
stem(kn,htn,'filled','r-. diamond')
xlim([-4 4])
ylim([0 2])
legend('x[k]','h[1-k]')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

%n=2;
kn=k+2;
subplot(2,3,6);stem(n,xn,'ko','filled','LineWidth',2)
;hold on;
stem(kn,htn,'filled','r-. diamond')
xlim([-4 4])
ylim([0 2])
legend('x[k]','h[2-k]')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

Çıkış sinyali aşağıda yer almaktadır.

Çıkış Sinyali
5

3
y[n]

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

Matlab ortamında geliştirilen konvolüsyon fonlsiyonu ile elde edilen program;

n=-1:1;
xn=[1 1 1];
hn=[1 1 1];

[yn,ny]=conv_m(xn,n,hn,n);
figure,stem(ny,yn,'ko','filled','LineWidth',1)
xlim([-3 3]);
ylim([0 5])
xlabel('n','FontSize',14,'FontName', 'Times New
Roman')
ylabel('y[n]','FontSize',14,'FontName', 'Times New
Roman')
title('Çıkış Sinyali','FontSize',14,'FontName',
'Times New Roman')
set(gca,'FontSize',14,'FontName', 'Times New Roman')

Korelasyon(İlişki) İşlemi;

İki sinyal arasındaki benzerliğin bir ölçüsüdür. Bir sinyalin gecikmiş halinin kendisi ile
korelasyonuna özilişki (otokorelasyon adı) verilmektedir. Sinyaller birbirinden farklı ise buna
Çapraz ilişki (kross-korelasyon) adı verilmektedir.

𝑟𝑥,𝑦 [𝑙] = ∑∞
𝑛=−∞ 𝑥[𝑛]𝑦[𝑛 − 𝑙] (kross-korelasyon)

𝑟𝑥,𝑥 [𝑙] = ∑∞
𝑛=−∞ 𝑥[𝑛]𝑥[𝑛 − 𝑙] (oto korelasyon)

Yukarıda verilen formüllerde 𝑙 değişeni kaydırma yada aralık (lag) parametreki olarak
adlandırılmaktadır. Korelasyon işlemi ile konvolüsyon işlemleri arasında matematiksel olarak
benzerlik bulunmaktadır. Bu benzerlik aşağıdaki formülle gösterilmektedir.

𝑟𝑥,𝑦 [𝑙] = 𝑦[𝑙] ∗ 𝑥[−𝑙]

𝑟𝑥,𝑥 [𝑙] = 𝑥[𝑙] ∗ 𝑥[−𝑙]

Örnek: x[n] = [3, 11, 7, 0, 1, 4, 2] sinyalinin iki birim kaydırılmış haline w[n] gürültü sinyali
karışıyor ve y[n] = x[n-2] + w[n] sinyali elde edilmektedir. Bu iki sinyal arasındaki
koreasyonu konvolüsyon formülü uygulayarak aşağıdaki gibi elde ederiz.
Gurultusuz sinyal
20

-20
-3 -2 -1 0 1 2 3
Gurultulu sinyal
10

-10
-1 0 1 2 3 4 5
Crosscorrelation: 1 numarali Gurultu

200
rxy

100

0
-5 0 5 10
lag degeri

Şekildende görüldüğü gibi sinyalin kendisi ile iki birim kaydırılmış halinde benzerliğe
bakıldığında maksimum benzerliğin ikide olduğu görülmektedir. Radar sinyal işlemede hedef
yerini tespit etmede bu yaklaşım oldukça kullanılmaktadır.

Yine aynı sinyalin üç birim kaydırılmış haline farklı bir gürültü sinyali eklendiğinde elde
edilen y[n] = x[n-3] + w[n] sinyali ile x[n] sinyali arasındaki korelasyon aşağıdaki şekilde
elde edilmektedir. Bu şekilde incelendiğinde maksimum benzerliğin 3 te ortaya çıktığı
görülmektedir.

Gurultusuz sinyal
20

-20
-3 -2 -1 0 1 2 3
Gurultulu sinyal
20

-20
0 1 2 3 4 5 6
Crosscorrelation: 2 numarali Gurultu

200
rxy

100

0
-5 0 5 10
lag degeri
Matlabda konvolüsyon işlemi kullanarak geliştirilen korelasyon işlemi aşağıda verilmektedir.

% Gürültü
x = [3, 11, 7, 0, -1, 4, 2]; nx=[-3:3]; % x(n)
[y,ny] = sinkaydirma(x,nx,2); % x(n-2) sinyali elde
ediliyor
w = randn(1,length(y)); nw = ny; % w(n) gürültüsü elde
ediliyor
[y,ny] = sintoplam(y,ny,w,nw); % y(n) = x(n-2) + w(n)
[x,nx] = sinterslendirme(x,nx); % x(-n) elde edildi
[rxy,nrxy] = conv_m(y,ny,x,nx); % crosscorrelation
subplot(3,1,1);stem(nx,x,'ko','filled','LineWidth',1);
title('Gurultusuz sinyal');
subplot(3,1,2);stem(ny,y,'ko','filled','LineWidth',1)
title('Gurultulu sinyal');
subplot(3,1,3);stem(nrxy,rxy,'ko','filled','LineWidth',1)
axis([-5,10,-50,250]);xlabel('lag degeri')
ylabel('rxy');title('Crosscorrelation: 1 numarali
Gurultu');

% 2 numaralı gürültü
x = [3, 11, 7, 0, -1, 4, 2]; nx=[-3:3]; % x(n) sinyali
[y,ny] = sinkaydirma(x,nx,3); % x(n-2)
w = randn(1,length(y)); nw = ny; % w(n) gürültüsü
[y,ny] = sintoplam(y,ny,w,nw); % y(n) = x(n-2) + w(n)
[x,nx] = sinterslendirme(x,nx); % x(-n)
[rxy,nrxy] = conv_m(y,ny,x,nx); % crosscorrelation
figure,
subplot(3,1,1);stem(nx,x,'ko','filled','LineWidth',1);
title('Gurultusuz sinyal');
subplot(3,1,2);stem(ny,y,'ko','filled','LineWidth',1)
title('Gurultulu sinyal');
subplot(3,1,3);stem(nrxy,rxy,'ko','filled','LineWidth',1)
axis([-5,10,-50,250]);xlabel('lag degeri')
ylabel('rxy');title('Crosscorrelation: 2 numarali
Gurultu');

Matlabda otokorelasyon işlemi için “xcorr” kodu kullanılmaktadır.

You might also like