ÜÇÜNCÜ HAFTA UYGULAMA YAZILIMLARI VE ÖRNEKLER PROGRAMIN ADI: 1samp2.pro ;program 1samp2 ;bu program sinuzoidallerin toplamının ;orneklenmesini ve aradeger bulmayi gosterir LOADCT, 2, /silent USERSYM, [-.5,.5],[0,0] A=FINDGEN(16)*(!pi*2/16.) USERSYM, COS(A), SIN(A), /Fill basla: read, 'programi devam ettirmek icin sifir giriniz >',nm if nm ne 0 then goto, son read,'birinci sinusoidalin frekansi, a ve b katsayilarini giriniz >',f1, a1, b1 read,'ikinci sinusoidalin frekansi, a ve b katsayilarini giriniz >',f2, a2, b2 t1=1./f1 t2=1./f2 dtg=0.05/(f1>f2) mtx=fix((t1>t2)*5.+1.) ;mtx=fix((t1>t2)*15.+1.) nn=nint(mtx/dtg) tg=findgen(nn)*dtg gg=a1*cos(2*!pi*f1*tg)+b1*sin(2*!pi*f1*tg)+a2*cos(2*!pi*f2*tg)+b2*sin(2*!pi*f2*tg) yenidt: read, 'Ornekleme araligi veya yeni fonksiyon icin sifir >',dt if dt eq 0 then goto, basla fn=0.5/dt n=nint(mtx/dt)+1 t=findgen(n)*dt g=a1*cos(2*!pi*f1*t)+b1*sin(2*!pi*f1*t)+a2*cos(2*!pi*f2*t)+b2*sin(2*!pi*f2*t)!p.multi=0 ;fonksiyonun cizimi ;gg=exp(-!pi*tg*tg)*cos(2.*!pi*f0*tg) window, 0, xsize=1000, ysize=400 plot, tg, gg, color=0, /Nodata, Background=-1, $ Title = 'Sinusoidallerin Toplami', XTitle = ' Zaman (sn) ', YTitle = 'Genlik';, $
Subtitle ='Fonksiyonun (surekli egri) ornekleme noktalari (kirmizi daireler) ve yeniden ornekleme (mavi)' oplot, tg, gg, color= 75, Thick=2.5 m=n p=0 for k=0, n-1 do if t(k) lt 0 then p=p+1 gy=fltarr(m) for kk=1, 20 do begin t0=float(kk)*dt/20. ty=t+t0 for j=0, m-1 do begin gy(j)=0. for i=0, n-1 do begin k=-p+i ;k=i a=ty(j)/dt-k if abs(a) lt 1.e-10 then begin gy(j)=gy(j)+g(i) endif else begin gy(j)=gy(j)+g(i)*sin(!pi*a)/!pi/a endelse endfor ;print, ty(j), gy(j) endfor oplot, ty, gy, Symsize =0.5, Psym = 8, color=-4850 endfor ;ornekleme degerlerinin ciz oplot, t, g, Symsize =1., Psym = 8, color=75 print print, 'birinci sinusoidalin frekansi print, 'ikinci sinusoidalin frekansi print print, 'Ornekleme araligi ', dt print, 'Nyquist frekansi ', fn print ', f1 ', f2!p.multi=[0,1,3] ;window, 1, xsize=600, ysize=800 ;laptop window, 1, xsize=600, ysize=650 ;projektör fmax=1.5*(f1>f2>fn) feks=fltarr(2) feks(0)=-fmax feks(1)=fmax eks=fltarr(2) ;Sinüzoidallerin a katsayıları
;Dikdortgen (-fn; fn) ffd=[-fmax, -fn, -fn, fn, fn, fmax, -fmax] fdd=[0, 0, 1, 1, 0, 0, 0] ymax=a1>a2>b1>b2>2 ymin=a1<a2<b1<b2<(-2) ff1=[-fmax, -f1,-f1,-f1, f1, f1, f1, fmax] ff2=[-fmax, -f2,-f2,-f2, f2, f2, f2, fmax] plot, ffd, fdd, color=0, /Nodata, Background=-1, xrange=[-fmax, fmax], yrange=[ymin, ymax],charsize=1.5, $ Title = 'Fourier Donusumu Gercel Bileşen (a katsayilari)', XTitle = ' Frekans (Hz) ', YTitle = 'gercel', XStyle=1, YStyle=1 loadct, 4, /silent oplot, ffd, fdd, color=-4850, Thick=4. loadct,2, /silent fa1=[0, 0, a1/2., 0, 0, a1/2., 0, 0] fa2=[0, 0, a2/2., 0, 0, a2/2., 0, 0] fb1o=[0, 0, -b1/2., 0, 0, b1/2., 0, 0] fb2o=[0, 0, -b2/2., 0, 0, b2/2., 0, 0] fb1=fb1o fb2=fb2o gn1=sqrt(a1*a1+b1*b1)/2. gn2=sqrt(a2*a2+b2*b2)/2. fg1=[0, 0, gn1, 0, 0, gn1, 0, 0] fg2=[0, 0, gn2, 0, 0, gn2, 0, 0] oplot, ff1, fa1, color=75, Thick=2.5 oplot, ff2, fa2, color=75, Thick=2.5 kat1=0 kat2=0 afko=0 ff1k=ff1 ff2k=ff2 ;katlanmış frekanları çiz fkk=f1 akt1=a1/2. bkt1=b1/2. iss1=1 if f1 gt fn then begin kat=1 WHILE abs(fkk) GT fn DO BEGIN fkk=2.*fn-abs(fkk) ENDWHILE iss1=-nint(abs(fkk)/fkk)
fkk=abs(fkk) ff1k=[-fmax, -fkk,-fkk,-fkk, fkk, fkk, fkk, fmax] if fkk lt 1.E-05 then fkk=0 print, f1, ' HZ frekansi icin katlanma frekansi=', fkk if fkk eq 0 then begin akt1=akt1*2. bkt1=0. endif fa1=[0, 0, akt1, 0, 0, akt1, 0, 0] bkt1=iss1*bkt1 fb1=[0, 0, -bkt1, 0, 0, bkt1, 0, 0] gen=sqrt(akt1*akt1+bkt1*bkt1) fg1=[0, 0, gen, 0, 0, gen, 0, 0] endif ;ikinci frekans fkk2=f2 iss2=1 akt2=a2/2. bkt2=b2/2. if f2 gt fn then begin kat2=1 WHILE abs(fkk2) GT fn DO BEGIN if fkk2 lt 0 then iss2=-iss2 fkk2=2.*fn-abs(fkk2) ENDWHILE iss2=-nint(abs(fkk2)/fkk2) fkk2=abs(fkk2) if fkk2 lt 1.E-05 then fkk2=0 print, f2, ' Hz frekansi icin katlanma frekansi=', fkk2 if fkk2 eq 0 then akt2=akt2*2. if fkk2 eq 0 then bkt2=0. fa2=[0, 0, akt2, 0, 0, akt2, 0, 0] bkt2=iss2*bkt2 fb2=[0, 0, -bkt2, 0, 0, bkt2, 0, 0] gen=sqrt(akt2*akt2+bkt2*bkt2) fg2=[0, 0, gen, 0, 0, gen, 0, 0] ff2k=[-fmax, -fkk2,-fkk2,-fkk2, fkk2, fkk2, fkk2, fmax] endif if abs(fkk-fkk2) lt 1E-04 then begin
agen=akt1+akt2 bgen=bkt1+bkt2 fa1k=[0, 0, agen, 0, 0, agen, 0, 0] fb1k=[0, 0, -bgen, 0, 0, bgen, 0, 0] gn0=sqrt(agen*agen+bgen*bgen) oplot, ff1k, fa1k, color=-4850, Thick=4. ; aynı frekansa katlanma olustu afko=1 goto, devam1 endif oplot, ff1k, fa1, color=-4850, Thick=4. oplot, ff2k, fa2, color=-4850, Thick=4. devam1: ;yesil yatay eksen ciz loadct, 4, /silent oplot, feks, eks, color=-4850, Thick=4. ; b katsayılarını ciz plot, ffd, fdd, color=0, /Nodata, Background=-1, xrange=[-fmax, fmax], yrange=[ymin, ymax], Charsize=1.5,$ Title = 'Fourier Donusumu Sanal Bilesen (b katsayilari)', XTitle = ' Frekans (Hz) ', YTitle = 'sanal', XStyle=1, YStyle=1 oplot, ffd, fdd, color=-4850, Thick=4. loadct,2, /silent oplot, ff1, fb1o, color=75, Thick=2.5 oplot, ff2, fb2o, color=75, Thick=2.5 if afko eq 1 then begin oplot, ff1k, fb1k, color=-4850, Thick=4. goto, devam2 endif oplot, ff1k, fb1, color=-4850, Thick=4. oplot, ff2k, fb2, color=-4850, Thick=4. devam2: ;yesil yatay eksen ciz loadct, 4, /silent oplot, feks, eks, color=-4850, Thick=4. ymax=(gn1+gn2)>1.5>2.*gn1>2.*gn2 plot, ffd, fdd, color=0, /Nodata, Background=-1, xrange=[-fmax, fmax], yrange=[ymin, ymax], Charsize=1.5,$ Title = 'Fourier Donusumu Genlik Izgesi', XTitle = ' Frekans (Hz) ', YTitle = 'Genlik', XStyle=1, YStyle=1 oplot, ffd, fdd, color=-4850, Thick=4.
loadct,2, /silent ;Sinüzoidallerin toplamının genlik izgesini ciz ;renk kırmızı oplot, ff2, fg2, color=75, Thick=2.5 oplot, ff1, fg1, color=75, Thick=2.5 if afko eq 1 then begin fd1=[0, 0, gn0, 0, 0, gn0, 0, 0] oplot, ff1k, fd1, color=-4850, Thick=4. goto, devam3 endif oplot, ff1k, fg1, color=-4850, Thick=4. oplot, ff2k, fg2, color=-4850, Thick=4. devam3: ;yesil yatay eksen ciz loadct, 4, /silent oplot, feks, eks, color=-4850, Thick=4. loadct, 2, /silent goto, yenidt son: ;bütün pencereleri kapat while (!D.WINDOW GE 0) DO WDELETE,!D.WINDOW end
AÇIKLAMALAR: Bu not 1samp2 adlı program ile yapılan uygulamalara ait örnekleri kapsar. İki sinüzoidalin toplamı ile elde edilen verinin örneklenmesini gösterir. Kırmızı grafikler sürekli fonksiyonu ve onun sürekli Fourier dönüşümünü göstermektedir. Zaman bölgesinde kırmızı çizgiler sürekli fonksiyonu, kırmızı yuvarlaklar onun örnekleme değerlerini, mavi grafikler ise sayısal verinin yeniden kurulması ile elde edilecek eğriyi göstermektedir. Kırmızı ve mavi çizgiler çakıştığında sayısal veri, sürekli veriyi temsil etmektedir. Frekans bölgesinde kırmızı çizgiler sürekli verinin ve mavi çizgiler sayısal verinin Fourier dönüşümünü göstermektedir. Frekans bölgesine ait şekil üç görüntüden oluşmaktadır. Birinci görüntüde gerçel, ikinci görüntüde sanal bileşen ve üçüncü görüntüde genlik izgesi görülmektedir. Üçüncü görüntüde, dikdörtgen fonksiyon (yeşil renk ile çizilen) ile çarpımın sonucunda elde edilen sayısal verinin Fourier dönüşümünü (mavi) göstermektedir. Kırmızı renk ile çizilen sürekli verinin Fourier dönüşümü karşılaştırma amacı ile şekle eklenmiştir. Sayısal veri, sürekli veriyi temsil ettiğinde Fourier dönüşümleri çakışacaktır.
birinci sinusoidalin frekansi, a ve b katsayilarini giriniz > 1 1.5 1.5 ikinci sinusoidalin frekansi, a ve b katsayilarini giriniz >4-1 -1 ornekleme araligi veya yeni fonksiyon icin sifir >1.2 Ornekleme araligi 1.20000 Nyquist frekansi 0.416667 1.00000 HZ frekansi icin katlanma frekansi= 0.166667 4.00000 Hz frekansi icin katlanma frekansi= 0.166666
Ornekleme araligi 1.00000 Nyquist frekansi 0.500000 1.00000 HZ frekansi icin katlanma frekansi= 0 4.00000 Hz frekansi icin katlanma frekansi= 0
Ornekleme araligi 0.800000 Nyquist frekansi 0.625000 1.00000 HZ frekansi icin katlanma frekansi= 0.250000 4.00000 Hz frekansi icin katlanma frekansi= 0.250000
Ornekleme araligi 0.700000 Nyquist frekansi 0.714286 1.00000 HZ frekansi icin katlanma frekansi= 0.428571 4.00000 Hz frekansi icin katlanma frekansi= 0.285714
Ornekleme araligi 0.600000 Nyquist frekansi 0.833333 1.00000 HZ frekansi icin katlanma frekansi= 0.666667 4.00000 Hz frekansi icin katlanma frekansi= 0.666667
Ornekleme araligi 0.500000 Nyquist frekansi 1.00000 4.00000 Hz frekansi icin katlanma frekansi= 0
Ornekleme araligi 0.400000 Nyquist frekansi 1.25000 4.00000 Hz frekansi icin katlanma frekansi= 1.00000
Ornekleme araligi 0.300000 Nyquist frekansi 1.66667 4.00000 Hz frekansi icin katlanma frekansi= 0.666667
Ornekleme araligi 0.200000 Nyquist frekansi 2.50000 4.00000 Hz frekansi icin katlanma frekansi= 1.00000
Ornekleme araligi 0.150000 Nyquist frekansi 3.33333 4.00000 Hz frekansi icin katlanma frekansi= 2.66667
Ornekleme araligi 0.100000 Nyquist frekansi 5.00000
birinci sinusoidalin frekansi, a ve b katsayilarini giriniz >1-1.5 1.5 ikinci sinusoidalin frekansi, a ve b katsayilarini giriniz >3.5 1-1 Ornekleme araligi 1.00000 Nyquist frekansi 0.500000 1.00000 HZ frekansi icin katlanma frekansi= 0 3.50000 Hz frekansi icin katlanma frekansi= 0.500000
Ornekleme araligi 0.600000 Nyquist frekansi 0.833333 1.00000 HZ frekansi icin katlanma frekansi= 0.666667 3.50000 Hz frekansi icin katlanma frekansi= 0.166667
Ornekleme araligi 0.500000 Nyquist frekansi 1.00000 3.50000 Hz frekansi icin katlanma frekansi= 0.500000
Ornekleme araligi 0.400000 Nyquist frekansi 1.25000 3.50000 Hz frekansi icin katlanma frekansi= 1.00000
Ornekleme araligi 0.300000 Nyquist frekansi 1.66667 3.50000 Hz frekansi icin katlanma frekansi= 0.166667
Ornekleme araligi 0.200000 Nyquist frekansi 2.50000 3.50000 Hz frekansi icin katlanma frekansi= 1.50000
Ornekleme araligi 0.150000 Nyquist frekansi 3.33333 3.50000 Hz frekansi icin katlanma frekansi= 3.16667
Ornekleme araligi 0.100000 Nyquist frekansi 5.00000
GÜNLÜK HAYATTAN FREKANS KATLANMA ÖRNEKLERİ