You are on page 1of 16

SİNYALLER VE SİSTEMLERİN MATLAB YARDIMIYLA

BENZETİMİ
2.1. Sinyal Üretimi

Bu laboratuarda analog sinyaller ve sistemlerin sayısal bir ortamda benzetimini yapacağımız


için örneklenmiş sinyaller üzerinde işlem yapacağız.

Sürekli zamanlı bir sinyal olan X c (t ) ’yi N boyutlu bir vektör ile örneklenmiş ve kuantalanmış
(bölütlenmiş) olarak [X c (t 0 ) X c (t1 ) ... X c (t N -1)] şeklinde ifade edilebilir. Burada sinyalin
zaman aralığı to ile t N −1 arasındadır. Örnekleme aralığı Ts =t i+1 -t i ifadesiyle belirtilmektedir.
Örnekleme aralığı yeteri kadar büyük seçilmelidir ki MATLAB’ de sinyal sürekli zaman gibi
görülebilsin. Sinyalin en büyük frekansının yaklaşık 10 katı bir değer (örnekleme frekansı)
işlemler için yeterli olacaktır. Ancak sinyalin fazının çizdirilmesi işleminde alınacak değer
100 katı olması yapılacak işlemin doğruluğunu artıracaktır.

Örnekleme frekansı ile örnekleme zaman aralığı arasındaki bağıntı f s = 1/ Ts ’ dir.

f s = 10 Hz ’lik bir sinüzoidal sinyal aşağıdaki gibi üretilir:

%program ch2_1.m
close all % Ekranda daha önce çizilmiş şekil varsa bu şekilleri kapatır.
clear all % Daha önceden yapılmış bir işlem varsa hafızayı temizler.
clc % Komut penceresi ekranını temizler.
fm=10; % İşaretin frekansı 10 Hz
fs=100*fm; %Sinyalin örnekleme frekansı Hz;
ts=1/fs;
n=[0:(1/fs):1]; % Sinyal 0'dan 1 saniyeye kadar
faz=0; %30
tsy=cos(2*pi*n*fm+faz); % İşaretimiz
plot(n,tsy, 'k' ); %işaretin zaman izgesinde çizimi
title('Cosinus dalgasi')
xlabel('saniye');
ylabel('genlik');

12
Şekil 2.1: Kosinüs Dalgası

Şekilden görüleceği üzere 1 saniyede 10 adet kosinüs dalgası vardır.

2.2. Fourier Dönüşümü


Fourier dönüşüm yöntemi sinyalin içindeki bilgilerin elde edilebilmesi için, sinyallerin
işlenmesinde kullanılan çok önemli bir yöntemdir. Bu bilgiler, Fourier dönüşümü ile
MATLAB tarafından yeniden kullanılmaya uygun bir veri formatına çevrilir. Fourier
dönüşümüyle bir sinyal, farklı genlik, frekans ve fazlarda kosinüs ve sinüs temel
bileşenlerinin toplamı olarak ifade edilir. Her bileşenin frekans ve genliği ile birlikte
tablolaşması, bilgisayarla verilerin işlenmesi sırasında kolaylık sağlar.

+∞
(2.1)
X (e ) = ∫ X c (t )e− jwt dt
jw

−∞

(2.2)
X (e jw ) = ∫
−∞
x(n)e− jwn

Denklem (2.1) Sürekli Zamanlı Fourier Dönüşümü, Denklem (2.2) ise Ayrıklı Zamanlı
Fourier Dönüşümü’ nü göstermektedir. MATLAB’ de kullandığımız dönüşüm ise hem
zamanda hem de frekansta ayrık olduğu için DFT ve IDFT kullanırız.

N −1
2π (2.3)
X (k ) = ∑ x(n)e − jwk n wk = k
n=0 N
1 N −1 (2.4)
x ( n) =
N
∑ X ( k )e
n =0
− jwk n

Denklem (2.3) Ayrık Fourier Dönüşümü (DFT), Denklem (2.4) ise Ters Ayrık Fourier
Dönüşümü (IDFT)’ dür.

13
Bu dönüşüm hesaplamaları maalesef çok masraflı hesaplamalardır. Hızlı Fourier dönüşümü
tekniği, bir yandan hesaplamalar sürerken, bir yaklaşım olarak ilk elde edilen değerlerin
kullanıma sunulduğu bir alternatif yazılım tekniğidir.

%program ch2_2.m
fm=10; % Isaretin frekansi
fs=1000*fm; %Sinyalin ornekleme frekansi
ts=1/fs;
n=[0:(1/fs):1]; % Sinyal 0'dan 1 saniyeye kadar
faz=0 %-60;%30
tsy=sin(2*pi*n*fm+faz); % isaretimiz
% cos((pi/2)-a)=cos(a-(pi/2))
tsyf=fft(tsy)/length(tsy); % Sinyalin frekans izgesinde gösterilimi
tsyfm=abs(tsyf); % Sinyalin fourier dönüşümü yapılınca karmaşık
%faz temizle%
for i=1:(fs+1);
if abs(tsyf(i))<0.01;
tsyf(i)=0;
end
end
tsyfa=angle(tsyf);
figure
SUBPLOT(2,1,1)
plot(tsyfm);
AXIS([0 100 0 1])
title('Sekil 2a');
%text(3000,0.3,'-pi +pi araligi için ')
SUBPLOT(2,1,2)
plot(tsyfa);
AXIS([0 100 -2 2])
title('Sekil 2b');
xlabel('Hertz');
% Sinyalin frekansının bulunması
[A,B]=max(tsyfm(1:(fs/2)));
disp('Sinyalin frekansi')
disp(B-1)
tsyfa(B)

Şekil 2.2.a.’ da sinyalin frekans cevabının mutlak değeri çizilmişken Şekil 2.2.b.’ de faz
cevabı çizilmiştir. Burada dikkat edilmesi gereken husus faz cevabı bulunurken örnekleme
frekansının yeterince büyük seçilmesinin gerekliliğidir.

14
Şekil 2.2 a) Sinyalin Frekans Cevabının Mutlak Değeri b) Sinyalin Faz Cevabı

Sinyalin Fourier dönüşümünden sonra sıfıra yakın sayılar oluşmaktadır. Bu sayıların


oluşumundan dolayı faz cevabı anlaşılır şekilde çıkmamıştır. Bu problemin çözülebilmesi için
DFT işleminden sonra sıfıra yakın sayılar sıfırlanır. Bu işlem verilen örnekte faz temizleme
ile kısmında gerçekleştirilmiştir.

2.3. Süzgeç Yapıları

Süzgeçler yapılarına göre Sonlu Dürtü Yanıtlı (FIR, Finite Impluse Response) ve Sonsuz
Dürtü Yanıtlı (IIR, Infinite Impluse Response) süzgeçler olmak üzere ikiye ayrılır. Ayrıca
süzgeçler verdikleri frekans cevabına göre Alt Geçiren (LP, Low Pass), Üst Geçiren (HP,
High Pass), Band Geçiren (BP, Band Pass), Band Bastıran ‘Geçirmeyen’ (BR, Band eject),
Tüm Geçiren (AP, All Pass) şeklinde ayrılmaktadır.

2.3.1. Sonsuz Dürtü Yanıtlı Süzgeç Yapıları

Bu bölümde Butterworth süzgeç tasarımı verilecektir. Örnekte verilen tasarım alt geçiren
süzgeç tasarımıdır ancak %’li kısımlar kaldırılarak diğer tasarımların da nasıl yapılabileceği
görülebilir.

15
%program ch2_5.m
close all

wg=[0.25]; % Alt geçiren


wd=[0.5];
%wg=[0.5] % Üst geçiren
%wd=[0.1]
%wg=[0.25 0.5]; % Band geçiren
%wd=[0.1 0.7];
%wg=[0.25 0.5]; % Band Durduran
%wd=[0.1 0.7];
gddb=1;
sddb=40;

[N,Wn]=buttord(wg,wd,gddb,sddb);
[B,A] = BUTTER(N,Wn);
fs=1000;
[H,W] = FREQZ(B,A,1000);
Hg=20*log10(abs(H));
plot(W/pi,Hg)
grid on
AXIS([0 1 -40 5])
xlabel('W/pi');
ylabel('Kazanç,dB');
title('IIR,Buttordworth Alt Geçiren Süzgeç')
figure
plot(abs(H));
grid on
xlabel('Hz');
ylabel('Kazanç');
AXIS([0 1000 0 1.2])
for i=1:(length(H));
if abs(H(i))<0.01;

H(i)=0;
end
end
Ha=angle(H);
figure
plot((Ha/pi)*180);
xlabel('Hz');
ylabel('Faz');
grid on

16
Şekil 2.3: Butterworth Alt Geçiren Süzgecin Kazanç Eğrisi (dB)

Şekil 2.4: Butterworth Alt Geçiren Süzgecin Kazanç Eğrisi

17
Şekil 2.5: Butterworth Alt Geçiren Süzgecin Faz Cevabı

Ayrıca Chebyshev, Elliptic süzgeçleri de verilen MATLAB fonksiyonları ile


gerçekleştirilebilir.

buttord: Geçiş bandında Rp (dB) değerinden fazla olmayan ve durdurma bandında en az Rs


(dB) değeri kadar güç yetirimini veren en düşük dereceli sayısal Butterworth süzgecin
derecesini verir. Wg ve Wd geçiş ve durdurma bandının 0 ile 1 arasında normalize edilmiş
köşe frekanslarını göstermektedir. Fonksiyonun çıkışı olan Wn ise istenen özellikte süzgeç
için gerekli olan doğal frekansı vermektedir.

Alt Geçiren: Wp=0.1 Ws=0.2;


Üst Geçiren: Wp=0.2 Ws=0.1;
Band Geçiren: Wp=[0.2 0.7], Ws=[0.1,0.8];
Band Durduran: Wp=[0.1 0.8], Ws=[0.2 0.7];

Butter: Butterworth sayısal ve analog süzgeç tasarımı N. dereceden alt geçiren süzgeç tasarlar
ve N+1 uzunluğunda B (pay) ve A (payda) süzgeç katsayılarını verir. Katsayılar kaydırmalı
yapı düşünülerek z’ in sıfırın kuvvetinden N+1. kuvvetine kadar gider. Ayrıca kesim frekansı
Wn ‘0.0 < Wn < 1.0’ arasındadır. Burada 1.0 örnekleme hızının yarısını göstermektedir.

Eğer Wn iki bileşenden oluşuyorsa Wn = [W1 W2] 2N dereceli geçiş bandı W1 < W < W2
şeklinde olan süzgeç olur. Ayrıca üst geçiren süzgeç [B,A] = butter(N,Wn,'high') ile bant
durduran süzgeç ise [B,A] = butter(N,Wn,'stop') ile tasarlanabilir.

cheb1ord: Birinci çeşit Chebyshev süzgeç derecesi bulma


cheby: Chebyshev birinci çeşit sayısal ve analog süzgeç tasarımı

cheb2ord: İkinci çeşit Chebyshev süzgeç derecesi bulma


cheby2: Chebyshev ikinci çeşit sayısal ve analog süzgeç tasarımı

ellipord: Elliptic süzgeç derecesi bulma


ellip: Elliptic veya Cauer sayısal ve analog süzgeç tasarımı

18
2.3.2. Sonlu Dürtü Yanıtlı Süzgeç Tasarımı

FIR süzgeçlerin getirisi doğrusal faz cevabına sahip olmalarıdır. Ancak bu süzgeç yapılarında
istenen frekans cevabını elde etmek için gerekli olan süzgeç uzunluğu oldukça fazladır.
Dahası FIR tasarımında geçiş bandı ile durdurma bandı arası olan dönüşüm bandı IIR
süzgeçler kadar keskin olmamasıdır.

FIR süzgeçlerde çeşitli tasarım metotları vardır. Bunlar pencereleme, remez algoritması, en
küçük kareler yöntemi gibi çeşitli yöntemlerdir. Bu bölümde bir pencereleme yöntemi ile
yapılan süzgeç tasarımını vereceğiz. Bu tasarım varsayılan olarak hamming pencereleme
yöntemini kullanmaktadır.

%program ch2_6.m
close all
Wn=[0.2]; % Alt geçiren
N=150;
B = FIR1(N,Wn,'low')
fs=1000;
[H,W] = FREQZ(B,1,1000);
Hg=20*log10(abs(H));
plot(W/pi,Hg)
grid on
AXIS([0 1 -100 5])
xlabel('W/pi');
ylabel('Kazanç,dB');
title('SDC,Hamming Pencereleme Yöntemiyle Alt Geçiren Süzgeç Tasarimi')
figure
plot(abs(H));
grid on
xlabel('Hz');
ylabel('Kazanç');
AXIS([0 1000 0 1.2])
for i=1:(length(H));
if abs(H(i))<0.01;

H(i)=0;
end
end
Ha=angle(H);
figure
plot((Ha/pi*180));
xlabel('Hz');
ylabel('Faz');
grid on

19
Şekil 2.6: FIR Alt Geçiren Süzgecin Kazanç eğrisi (dB)

Şekil 2.7: FIR Alt Geçiren Süzgecin Kazanç Eğrisi

20
Şekil 2.8: FIR Alt Geçiren Süzgecin faz cevabı

Unwrap: Daha önce FIR süzgeç yapısı doğrusal bir faz cevabı verirken IIR yapılar bu cevabı
veremez demiştik. Bu ifade çizdirilen faz grafiklerinde tam olarak görülememektedir. Bu
yüzden unwrap denilen π ’ den büyük atlama fazlarını 2π ’ nin katlarına dolayan işlev
kullanılır ve sürekli hali görüntülenebilir.

Ha=angle(H); komutundan sonra Ha=unwrap(Ha); komutu kullanılarak yapılırsa sonlu ve


sonsuz darbe cevaplı süzgeçler için aşağıdaki şekiller elde edilebilir. Buradan görülebileceği
üzere sonsuz darbe cevaplı süzgecin faz eğrisi doğrusal iken bu eğri sonlu dürtü cevaplı
süzgeç için doğrusala yakın ancak doğrusal değildir.

Şekil 2.9: Sonlu Dürtü Cevaplı Süzgeç İçin Faz Cevabı Düzenlenmiş Eğri

21
Şekil 2.10: Sonsuz Dürtü cevaplı Süzgeç İçin Faz Cevabı Düzenlenmiş Eğri

2.4. Sinyallerim Süzgeçlenmesi

y (t ) = A1.cos(2π f1c t + θ1 ) + A2 .sin(2π f 2 c t + θ 2 ) şeklinde verilen y (t ) sinyalini


A1 = 3, A2 = 5, f1 = 10 Hz, f 2 = 300 Hz , θ1 = 30, θ 2 = 0 değerleri için benzetimini yaparak daha
sonradan yk (t ) = A1.cos(2π f1c t ) sinyalini elde etmek için alt geçiren sonlu cevaplı süzgeçten
geçirelim. Dikkat edilmesi gereken husus süzgeç tasarımı yaparken süzgeç tasarım kriterini 0
ile π arasında göz önüne alınmasıdır. Örneğin örnekleme frekansımız 10000 olsun ve
kullanacağımız süzgeç bant geçiren olsun ve geçirme frekansları da 180 ile 220 Hz arasında
olsun, bu durumda durdurma frekanslarını da 100 ile 300 seçelim. Süzgecimizin en büyük
frekansı f s / 2 olacak şekilde almamız gereken değerler basit bir oran orantı
ile w g = [ 0.036 0.044] , w d = [ 0.02 0.06] olarak bulunur. Burada önemli bir nokta bu
tasarımda bile seçtiğimiz değerlere karşılık gelen B değerinin çok küçük olmasıdır. Bu açıdan
dar bantlı bir süzgeç tasarımının ve gerçekleştirilmesinin zor olduğu görülmektedir. Örneğin
tasarımda B’ nin değeri direkt sıfır olarak alınırsa süzgeç çalışmaz.

% Sinyal uretimi ve filtreleme islemi

close all
clear all
hold on
fs=10000; % pi=5000 %Sinyalin ornekleme frekansi
ts=1/fs;
n=[0:(1/fs):1]; % Sinyal 0'dan 1 saniyeye kadar

fm1=10; %150 % Isaretin frekansi


fm2=200;
faz1=(pi/6);
faz2=0;
A1=4;
A2=3;

22
tsy=A1*cos(2*pi*n*fm1+faz1)+A2*sin(2*pi*n*fm2+faz2); % isaretimiz
%gy2=A2*sin(2*pi*n*fm2+faz2); süzgeçleme isleminden sonra istenen sinyal

%.....................Sekil 1: sinyalin zaman izgesinde çizimi


plot(tsy);
AXIS([0 2000 -10 10]);
xlabel('Örnek sayisi, Toplam 0.2 saniye');
ylabel('Genlik Degeri,Volt');
%.....................

tsyf=fft(tsy)/length(tsy);
tsyfm=abs(tsyf);

%faz temizle%
for i=1:(fs+1);
if abs(tsyf(i))<0.1;

tsyf(i)=0;
end

end
tsyfa=angle(tsyf);

%...............
% 0-2 pi araliginda olan izgeyi -pi +pi araligina goturme islemi
tsyfm=fftshift(tsyfm);
tsyfa=fftshift(tsyfa);
eks=[-fs/2:1:fs/2];

%.......Süzgeç Tasarimi..........(Burada süzgeçin frekans çiziminin


%gösterimi için gerekli islemler yapilmaktadir.)

wg=[0.036 0.044]; % Band geçiren


wd=[0.02 0.06];

gddb=1;
sddb=40;

[N,Wn]=buttord(wg,wd,gddb,sddb);
[B,A] = BUTTER(N,Wn);
%B=0;
[H,W] = FREQZ(B,A,fs/2+1);
eH=flipud(H);
H=[eH(1:fs/2);H];

%...............................

%..............................
figure
subplot(2,1,1);
plot(eks,abs(H));grid on
AXIS([0 500 0 1.2])
%.............faz temizle

23
for i=1:(fs+1);
if abs(H(i))<0.1;

H(i)=0;
end
end
subplot(2,1,2)
plot(eks,angle(H)),grid on
AXIS([0 500 -10 10]);
xlabel('Hertz');
%...................................

%.......................y(t) sinyali'nin cizimi...........


figure
SUBPLOT(2,1,1)
plot(eks,tsyfm);
hold on
plot(eks,abs(H));grid on
AXIS([-500 500 0 2])
hold on

SUBPLOT(2,1,2)
plot(eks,(tsyfa/pi)*180);
AXIS([-500 500 -180 180]);
hold on
%.......................
plot(eks,angle(H));grid on
%AXIS([0 500 -5 5]);
xlabel('Hertz');

%.......Süzgeçleme islemi.........
suz_tsy=filter(B,A,tsy);
%.................................
suz_tsyf=fft(suz_tsy)/length(tsy);
for i=1:(fs+1);
if abs(suz_tsyf(i))<0.1;

suz_tsyf(i)=0;
end

end
suz_tsyfa=angle(suz_tsyf);
suz_tsyfm=abs(suz_tsyf);
suz_tsyfm=fftshift(suz_tsyfm);
suz_tsyfa=fftshift(suz_tsyfa);

%.............Sekillerin çizdirimi........
figure
SUBPLOT(2,1,1)
plot(eks,suz_tsyfm);grid on
AXIS([-500 500 0 2]);

24
SUBPLOT(2,1,2)
plot(eks,(suz_tsyfa/pi)*180);
AXIS([-500 500 -180 180]);grid on
xlabel('Hertz')

figure
plot(suz_tsy);
gy2=A2*sin(2*pi*n*fm2+faz2);
hold on
plot(gy2,'r');
AXIS([0 1000 -5 5]);
xlabel('Örnek Sayisi, Toplam 0.1 saniye')

Şekil 2.11: y(t) işareti

Şekil 2.12: Kullanılan Bant Geçiren Süzgecin Kazanç ve Faz Cevabı

25
Şekil 2.13: Y(F)’İn Genlik Ve Faz Cevabı Üzerine Kullanılan Süzgecin Genlik Ve Faz Cevabının
Gösterimi

Şekil 2.14: Süzgeçleme İşleminden Sonra İşaretin Frekans Cevabı

26
Şekil 2.15: Süzgeçlenmiş Ve Gerçek İşaretin Gösterimi

27

You might also like