İYTE IEEE Matlab Kurs Notları - 3
-
http://cscem.blogspot.com/2013/11/iyte-ieee-matlab-kurs-notlar-3.html
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)
Bunun frekans aralığınada bakmak istersek stem() fonksiyonunu kullanıyoruz.
>>> stem(x,z)
Ş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ı.
-
çizdim
-
Yeniden ellerine saglik, faydali olacak.
