16 Kasım 2013 Cumartesi

İYTE IEEE Matlab Kurs Notları - 3

http://tr.wikipedia.org/wiki/Karmaşık_sayı

Karmaşık sayıları nasıl tanımlayabiliriz buna bakıcaz.

 ‎
 Şimdi karmaşık sayılar z = x + yi olarak gösteriliyordu.

Örnek olarak

>>> z = 3 + 4i;

şeklinde karmaşık sayıları tanımlayabiliriz. "i" harfi otomatik olarak matlab içinde tanımlıdır.

Karmaşık sayıların real sayı kısımlarını real() fonksiyonunu kullanarak buluruz.
 
>>> real(z)
ans = 3

Sanal kısmını ise imag() fonksiyonu ile buluruz. 


>>> imag(z)
ans = 4


Karmaşık sayıların büyüklüğünü abs() fonksiyonu


>>> abs(z)
ans = 5


Real kısmı ile sanal kısmı arasındaki açıyı angle() fonksiyonu ile

>>> angle(z)
ans = 0.92730


Karmaşık sayıların tersinide conj() fonksiyonu ile buluruz.

>>> conj(z)
ans = 3 - 4i



http://tr.wikipedia.org/wiki/Fourier_dönüşümü‎

Şimdi  bir fonksiyonun fourier dönüşümünü bulmak istersek ne yapabiliriz.Bu iş için fft() fonksiyonunu kullanıyoruz.

Şimdi bir fonksiyonu dönüşüm yaptırıp grafiğini çizdirelim.
>>> x = 0:pi/180:2*pi;
>>> y = sin(x);
>>> z = fft(y);
>>> plot(z)

http://o1311.hizliresim.com/1h/j/uljkc.png 



Bunun frekans aralığınada bakmak istersek stem() fonksiyonunu kullanıyoruz.


>>> stem(x,z)


http://o1311.hizliresim.com/1h/j/uljld.png






Şimdi 3 boyutlu zamanla dinamik değişen bir çizim yapmak istersek bunun için script yazıcaz.


chdir('~/octave'); % Windows'ta matlab kullananlar buna gerek yok

function ucBoyut(a,b)

n = 101;
x = linspace(-2,2,n); % sayı düzlemi
y = linspace(-2,2,n);
[X,Y] = meshgrid(x,y);

for t=0:.01:10
at = a +.8*t; % Zamanla değişim fonksiyonu bu aynı a(t) demek oluyor.
bt = b + .4*t;
Yxy = Y + .25*sin(2*(exp(X/2)-1));
Z = sin((at + .1*X + .2*Yxy).*X.^2+bt*(sin(2*Yxy) + .2*Yxy).*Yxy.^2);
surf(X,Y,Z)
view([-45,60]) % grafiği görüş açımızı ayarlıyoruz
drawnow % üst üste plotları refresh eder
end


Script ile ilgili bir kaç açıklama;

linspace() fonksiyonu sayı düzlemi oluşturmamızı sağlıyor.
view() fonksiyonu ile çizdirilen grafiğimize hangi açıdan bakıcağımız.
drawnow ile plotları refresh edip zamanla değişmesini sağlıyoruz.
at,bt,Yxy o kadar önemli değil karmaşık kendi uydurduğumuz fonksiyonlar.





Son olarakta derste bize sorulan soru;



function sumofact(a)
result = 0.0;
for y = 1:10
Y = factorial(y);
X = factorial(a);
result = result + X/Y;
end

disp(['Sonuc : ', num2str(result)]);



Script ile ilgili bir kaç açıklama;

Bu fonksiyonun amacı girdiğimiz sayının faktöriyelini alıp döngü her döndüğünde 1 den 10 kadar olan sayıların faktöriyelini girdiğimiz sayıya bölmek ve bunları toplamak.

factorial() fonksiyonu ile faktöriyel alıyoruz. 
disp() fonksiyonu matriks gibi davranıyor yani o yüzden 1x2 lik matriks tanımlar gibi tanımladık.
num2str() fonksiyonuda sayıları stringlere(yazılara) dönüştürüyor.

Peki diyceksiniz niye num2str() kullandık burda.

Çünkü disp() fonksiyonu içinde ilk sütunumuz string ve ikinciside öyle olmalı.

Hiç yorum yok:

Yorum Gönder