· EEM301

EEM301 Sinyaller ve Sistemler I: MATLAB Proje 1 Çözümleri ve Kutup–Frekans Denemeleri

EEM301 – Sinyaller ve Sistemler I · 15.11.2006 · 18.10.2026

Arkadaşların hazırladığı üç MATLAB Proje 1 çözümü, kaynak belge tarihlerine göre 15 Kasım 2006, 23 Kasım 2008 ve 24 Kasım 2011 sürümleriyle bir araya getirildi. Kişisel bilgiler çıkarıldı; kapaktaki kimlik alanı maskelendi. ZIP’te temizlenmiş üç PDF ve aynı arşivdeki sinyal.m kaynak kodu bulunuyor. Kodlar çalıştırılmadan metin ve formüller üzerinden incelendi.

Sinyali çizmek ve zaman dönüşümleri

Başlangıç örneği:

nx=-3:1:7;
x=[0 0 0 2 0 1 -1 3 0 0 0];
stem(nx,x)

Sıfırdan farklı örnekler x[0]=2, x[2]=1, x[3]=−1 ve x[4]=3’tür. 2008 çözümünde iki örnek gecikme ve bir örnek ilerleme, örnek değerlerini koruyup çizim eksenini değiştirerek gösteriliyor:

ny1=-1:1:9;
y1=[0 0 0 2 0 1 -1 3 0 0 0];
stem(ny1,y1)
ny2=-4:1:6;
y2=[0 0 0 2 0 1 -1 3 0 0 0];
stem(ny2,y2)
ny3=-7:1:3;
y3=[0 0 0 3 -1 1 0 2 0 0 0];
stem(ny3,y3)

Terslemede hem indislerin işareti hem de değerlerin sırası değişir. Kaynağın sonraki satırları şöyledir:

ny4=-6:1:4;
y3=[0 0 0 3 -1 1 0 2 0 0 0];
stem(ny4,y4)

Not: Son bölümde y4 çizdirilirken atama y3’e yapılmış; temiz çalışma alanında y4 tanımsızdır. Ayrıca ny4 ekseni, terslenmiş sinyali bir örnek sağa taşır; “Flipped and Advanced by 1” başlığıyla uyumlu değildir. 2006 sürümünde ise bazı kaydırmalarda hem dizi içindeki değerler hem indis ekseni kaydırılmış; bunun sonucu istenen kaydırmanın iki kez uygulanmasıdır.

İki dikdörtgen dizinin konvolüsyonu

n=0:5;
x=[1 1 1 1 1 1];
y=conv(x,x);
ny=0:10;
stem(ny,y)

Çıktı:

1  2  3  4  5  6  5  4  3  2  1

İki uzunluğu 6 olan diziden uzunluğu 11 olan üçgen biçimli sonuç çıkar. İlk örnekte tek çarpım, merkezde altı çarpım katkı verir.

Dikdörtgen ile sonlu rampanın konvolüsyonu

n=0:5;
h=n;
x=[1 1 1 1 1 1];
y=conv(x,h);
ny=0:10;
stem(ny,y)

Sonuç [0,1,3,6,10,15,15,14,12,9,5]’tir. h[n+5] kullanılırsa aynı değerler −5:5 ekseninde gösterilir.

2011 sürümünde kaydırılmış grafik için şu eksen yazılmış:

n=-5:1:0;
z=length(n);
ny=0:1:((z.*2)-2-5);

Not: z=6 iken bu ny altı elemanlıdır; conv sonucu on bir elemanlıdır. İlgili grafiğin ekseni −5:5 olmalıdır. 2006 sürümündeki ilk conv örneğinde de önceki x dizisi yeniden tanımlanmadan kullanılmış; gösterilen üçgen sonuç için x’in altı birden oluşması gerekir.

filter ile fark denklemleri

MATLAB’ın filter(b,a,x) çağrısı, pay katsayılarını b, payda katsayılarını a alır. Üç sistemin 2008 belgesindeki tanımları:

a1=[1]; b1=[0.5 1 2];
a2=[1 -0.8]; b2=[2];
a3=[1 -0.8]; b3=[0 2];
x=[1 2 3 4];
y1=filter(b1,a1,x)
y2=filter(b2,a2,x)
y3=filter(b3,a3,x)
SistemFark denklemiİlk dört çıktı
1y[n]=0,5x[n]+x[n−1]+2x[n−2]0,5; 2; 5,5; 9
2y[n]−0,8y[n−1]=2x[n]2; 5,6; 10,48; 16,384
3y[n]−0,8y[n−1]=2x[n−1]0; 2; 5,6; 10,48

2006 belgesi a ve b sırasını ters çeviren bir denemeyi de gösterir: filter(a1,b1,x) sonucu [2,0,−2,12] olur. Bu, aynı süzgeç değildir.

Not: 2006 belgesinde ikinci sistem için a2=[1], b2=[0.8 2] yazıldığı hâlde yukarıdaki özyinelemeli sistemin sonuçları verilmiş. Yazılı katsayılar [0.8,3.6,6.4,9.2] üretir. 2011 belgesinde de önce a2=[1], b2=[2,0.8] yazılmış, daha sonraki hesapta a2=[1 −0.8], b2=[2] kullanılmış. İndirilen belgelerde bu çelişkiler korunmuştur.

İki seyrek dizinin konvolüsyonu

x[n]=δ[n]+δ[n−2], h[n]=2δ[n+1]−2δ[n−1]. Ara terimler birbirini götürür:

y[n]=2δ[n+1]−2δ[n−3].

x=[1 0 1];
nx=0:1:2;
h=[2 0 -2];
nh=-1:1:1;
ny=-1:1:3;
y=conv(x,h);
stem(ny,y)

Sonuç −1:3 indislerinde [2,0,0,0,−2]’dir.

Not: 2006 sürümünde aynı örneğin çizim ekseni 1:9 seçilmiş; dizi konumları fiziksel zaman indislerinden ayrılmıştır. Konvolüsyonun başlangıç indisi iki girişin başlangıç indislerinin toplamıdır.

sinyal.m: kutuplar ve frekans yanıtı

Aşağıdaki bağımsız kaynak dosya, dört ikinci dereceden transfer fonksiyonunun kutuplarını çizer; son bölümde bir ayrık zamanlı frekans yanıtı hesaplar. Öğrenci numarasıyla adlandırılmış eşdeğer kopyası yerine kişisel bilgi içermeyen sinyal.m adı kullanıldı.

b1=[1]

a1=[1 0 1]
H1=tf(b1,a1)
ps1=roots(a1)
plot(real(ps1),imag(ps1),'x')
grid
axis([-3 3 -3 3])

figure;
a2=[1 0.5 1]
H2=tf(b1,a2)
ps2=roots(a2)
plot(real(ps2),imag(ps2),'x')
grid
axis([-3 3 -3 3])

figure;
a3=[1 2 1]
H3=tf(b1,a3)
ps3=roots(a3)
plot(real(ps3),imag(ps3),'x')
grid
axis([-3 3 -3 3])

figure;
a4=[1 4 1]
H4=tf(b1,a4)
ps4=roots(a4)
plot(real(ps4),imag(ps4),'x')
grid
axis([-3 3 -3 3])

figure;
bx=[0.25 -0.87 1]
ax=[1 -0.87 0.25]
HX=tf(bx,ax)
HX=freqz(bx,ax,512,'whole')
plot(HX)
PaydaKutuplar
s²+1±j
s²+0,5s+1−1/4 ± j√15/4
s²+2s+1−1, çift katlı
s²+4s+1−2±√3

Not: Örnekleme zamanı verilmeden tf ile oluşturulan modeller sürekli zamanlıdır. freqz ise b ve a dizilerini ayrık zaman süzgeci katsayıları olarak yorumlar. Son iki satır HX transfer fonksiyonu değişkenini frekans yanıtı vektörüyle değiştirir; plot(HX), genliği frekansa karşı çizmek yerine karmaşık düzlemde gerçek ve sanal bileşenleri çizer.

eem301-matlab-proje-1-kutup-frekans.zip

ZIP arşivi · 641 KB · 15.11.2006

⬇ (641 KB)