Örneklenmiş Sinyalin Alt Örneklenmesi Var olan örneklerden bazılarının seçilme işlemi alt örnekleme, örnek azaltma veya dijital sinyallerin örneklenmesi gibi isimlendirilebilir, bu işlemin bir örneklenmiş sinyal üzerinde uygulanmasına bir Matlab örneği ile bakalım. Örnek: Ts=/6 örnekleme perioyodu ile örneklenmiş bir Sinc (t) sinyalini M=, M=3, M3=4, M4=5, M5=6, ile örnek azaltma işlemine tabi tutup, hangi örnek azaltma işlemlerinde spektral örtüşme olup olmadığına bakınız. Kodumuzu yazmaya zaman eksenini, açısal frekans ekseni ve örnekte verilen M değerlerini bir vektör içinde tanımlayarak başlayalım. clc;clear all; close all; t=-:/:; w=linspace(-*pi,*pi,length(t)); Mvec=[ 3 4 5 6]; M vektörüne değerini tanımlamamızın sebebi çizimleri yaptırıken Ts=/6 ile örneklenmiş sinyali de görme istememiz. Ts=/6 ile örneklenmiş bir sinyali M= ile alt örnekleme işlemine tabi tutarsak bu sinyal Ts=/3 ile örneklenmiş gibi olur, bu örnekte Fourier dönüşüm işlemini daha kolay yapmak için bir önceki örnekten farklı olarak bu örnekte M değerini Ts ile çarparak alt örnekleme işlemini gerçekleştireceğiz. Kodumuzu yazaya önce Mvec vektöründe bulunan her değeri teker teker almak için bir for döngüsü ile devam edeceğiz, sonrasında alt örneklenmiş dizi olan yn değerini her döngüde sıfırlamak için zeros komutunu kullanacağız. Sonrasında Ts ve diğer gerekli parametreleri tanımlayarak devam edelim. for i=:length(mvec) yn=zeros(); Ts=Mvec(i)*(/6); ts=-:ts:; n=ts./ts; yn=(sinc(ts)).^;
Yukarıdaki kodda elde ettiğimiz alt örneklenmiş sinyallerin çizilerini yapmak için koda aşağıdaki gibi devam edelim. for i=:length(mvec) yn=zeros(); Ts=Mvec(i)*(/6); ts=-:ts:; n=ts./ts; yn=(sinc(ts)).^; figure() subplot(3,,i) stem(ts,yn) xlabel('') ylabel('sinc^(m*ts)') Title(['M= ' numstr(mvec(i)) ' ile alt örneklenmiş Sinc^(ts)']) Artık kodumuza Fourier dönüşüm işlemlerini hesaplatabiliriz ancak şimdiye kadar yazılan kodu test etmek istersek yukarıdaki koda end komutunu ekleyip kodumuzu çalıştırabiliriz. Kodu çalıştırısak aşağıdaki sonucu elde ederiz.
Sinc (M*ts) Sinc (M*ts) Sinc (M*ts) Sinc (M*ts) Sinc (M*ts) Sinc (M*ts) M= ile alt örneklenmiş Sinc (ts) M= ile alt örneklenmiş Sinc (ts).5.5 - -5 5 M= 3 ile alt örneklenmiş Sinc (ts) - -5 5 M= 4 ile alt örneklenmiş Sinc (ts).5.5 - -5 5 M= 5 ile alt örneklenmiş Sinc (ts) - -5 5 M= 6 ile alt örneklenmiş Sinc (ts).5.5 - -5 5 - -5 5 Kodumuza Fourier dönüşüm işlemini hesaplatabiliriz. İlk önce Fourier dönüşüm değerlerinin oluşturulacağı xsw vektörünü açısal frekans ekseni ile aynı boyda sıfırlardan oluşan bir vektör olarak tanımlayalım sonrasında toplam döngüsü ile dönüşümü hesaplatalım. Bunun için yukarıda kodu test etmek için eklediğimiz end komutunu kodumuzdan kaldırım ve kodu yazmaya aşağıdaki gibi devam edelim xsw=zeros(,length(w)); for k=:length(w) xsw(k)=sum(yn.*exp(-j.*w(k).*n)); end 3
Son adım olarak hesapladığımız bu Fourier dönüşümlerini çizdirelim. Bunun için kodumuzu aşağıdaki gibi düzenleyelim aşağıdaki xsw=zeros(,length(w)); for k=:length(w) xsw(k)=sum(yn.*exp(-j.*w(k).*n)); end figure() subplot(3,,i) plot(w,abs(xsw)) xlabel('\omega (radyan)') ylabel('f[sinc^(m*ts)]') Title(['M= ' numstr(mvec(i)) ' ile alt örneklenmiş F[Sinc^(ts)] ']) end Yukarıdaki kodu çalıştırdığımızda Fourier dönüşümlerini aşağıdaki gibi gözlemleyeceğiz, bu dönüşümlerin hangilerinde spektral örtüşme olduğunu çizimden gözlemleyelim. 4
F[Sinc (M*ts)] F[Sinc (M*ts)] F[Sinc (M*ts)] F[Sinc (M*ts)] F[Sinc (M*ts)] F[Sinc (M*ts)] 6 M= ile alt örneklenmiş F[Sinc (ts)] 3 M= ile alt örneklenmiş F[Sinc (ts)] 4-4 - 4 M= 3 ile alt örneklenmiş F[Sinc (ts)] -4-4.5 M= 4 ile alt örneklenmiş F[Sinc (ts)].5.5-4 - 4.3.. M= 5 ile alt örneklenmiş F[Sinc (ts)].9-4 - 4.5-4 - 4 M= 6 ile alt örneklenmiş F[Sinc (ts)].5.5-4 - 4 Yukarıdaki çizimde M=4 değerinde spektral örtüşme başlamış, M=6 ile yapılan örnekleme sadece bir dürtü fonksiyonundan oluştuğu için Fourier dönüşümü bütün ekseni F= fonksiyonu ile kapsamış durumdadır. Örneklenmiş Sinyalin ve Alt Örneğinin Fourier Dönüşümleri Arasındaki İlişki y[n] sinyali, x[n] sinyalinin M ile alt örneklenmiş sinyali olsun, yani y[n]=x[mn] sinyallerinin Fourier dönüşümleri arasındaki bağıntı; M Y n (ω) = M X ω ± kπ n( M ) k= gibidir, yukarıdaki bağıntıyı bir Matlab örneği ile inceleyelim. 5
Örnek: Ts=/6 örnekleme periyodu ile örneklenmiş bir Sinc (t) sinyalinin M= ve M=4 ile alt örneklenmesinin Fourier dönüşümü üzerindeki etkisini yukarıdaki bağıntı ile gösterenen bir Matlab kodu yazınız Kodumuzu yazmaya zaman ekseni, örnekleme periyodu, örneklenmiş zaman vektörü, n tamsayı değerleri ve sinyalimizi tanımlayarak başlayalım. clc;clear all; close all; t=-5:/:5; Ts=/6; ts=-5:ts:5; n=ts./ts; xn=(sinc(ts)).^; Sinyallerin Fourier dönüşümleri arasındaki bağıntıyı inceleyeceğimiz için sinyalli çizdirmeden direk olarak Fourier dönüşümünü alacağız bunun için sıfırlardan oluşan xsw vektörünü ve açısal frekans eksenini tanımlayalım sonrasında Fourier dönüşümünü hesaplatalım. Kodumuza aşağıdaki gibi devam edelim. clc;clear all; close all; t=-5:/:5; Ts=/6; ts=-5:ts:5; n=ts./ts; xn=(sinc(ts)).^; w=linspace(-*pi,*pi,length(t)); xsw=zeros(,length(w)); for i=:length(w) end xsw(i)=sum(xn.*exp(-j.*w(i).*n)); Hesaplattığımız Fourier dönüşümünü çizdirip bakalım bunun için komumuza aşağıdaki gibi devam edelim. 6
F[Sinc (ts)] figure() plot(w,abs(xsw)) xlabel('\omega (radyan)') ylabel('f[sinc^(ts)]') title('sinc^(nts) sinyalinin Fourier Dönüşümü') Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu elde edeceğiz. 6 Sinc (nts) sinyalinin Fourier Dönüşümü 5 4 3-4 -3 - - 3 4 Şimdi bağıntıya göre y[n]=x[n] için Fourier dönüşümünü hesaplayalım. Bunun için ilk olarak genliğin /M ile çarpılması, açısal frekans ekseninin M ile genişletilmesi ve M= olduğu için elde edilen sinyalin π ile defa kaydırılarak eklenmesi gerekmektedir. Bu işlemleri kodumuza aşağıdaki değişiklikleri yaparak ekleyelim. 7
F[Sinc (ts)] M=; figure() plot(m*w,abs(xsw)/m) hold on plot(m*w-*pi,abs(xsw)/m) xlabel('\omega (radyan)') ylabel('f[sinc^(ts)]') title('m= ile alt örneklenmiş Sinc^(nTs) sinyalinin Fourier Dönüşümü') Yukarudaki kodu çalıştırdığımızda aşağıdaki sonucu elde edeceğiz. 3 M= ile alt örneklenmiş Sinc (nts) sinyalinin Fourier Dönüşümü.5.5.5-8 -6-4 - 4 6 8 8
Şimdi aynı işlemi M=4 için yapalım ancak bu sefer yukarıdaki koddan faklı olarak k= ve M- aralığında yapılması gereken kaydırma işlemini bir for döngüsü yardımı ile yapacağız. Kodumuza aşağıdaki komutlaru ekleyelim. M=4; figure(3) for k=:m-; end plot(m*w-*pi*k,abs(xsw)/m) hold on xlabel('\omega (radyan)') ylabel('f[sinc^(ts)]') title('m=4 ile alt örneklenmiş Sinc^(nTs) sinyalinin Fourier Dönüşümü') xlim([-*pi *pi]) Yukarıdaki kodu çalıştırdığımızda açısal frekans ekseni -4π ve +4π arasında çizim yapacak bu çizimi daha kısa bir aralığa yaptırma için xlim komutunu kullandık ve çizimi -π ve +π arasında limitledik, yukarudaki kodu çalıştırdığımızda aşağıdaki sonucu elde edeceğiz. 9
F[Sinc (ts)].5 M=4 ile alt örneklenmiş Sinc (nts) sinyalinin Fourier Dönüşümü.5-3 - - 3