Level 1
Matlab ‘da Fonksiyon yazdığınız belgenin adı ile Fonksiyon adı aynı olmalıdır. Matlab İleri Düzey Algoritmalar ve Matlab Grafik çizimleri ‘ni inceleyebilirsiniz.
1-) 3'lük tabanındaki sayıyı 10 'luk tabanına çeviren fonksiyon
function [cp]=df(n)
s = num2str(n);
toplam = 0;
cevir=fliplr(s);
for i=1:length(cevir)
d=str2double(cevir(i));
if(d>=0) && (d<3)y
toplam=toplam+(d*(3^(i-1)));
else
fprintf('3 lük tabanında sayı giriniz.');
end
end
cp=toplam;
end
Code language: HTML, XML (xml)
2-) Girilen 2 sayi arkadaş sayı mı?
function [cp1,cp2]=yy(n,h)
toplam=0;
toplam1=0;
for i=1:n-1
if(mod(n,i)==0)
toplam=toplam+i;
end
end
cp1=toplam;
for i=1:h-1
if(mod(h,i)==0)
toplam1=toplam1+i;
end
end
cp2=toplam1;
if (n==cp2)
disp('Arkadassayidir');
else
disp('degildir');
end
3-) 3 basamaklı sayıların rakamlarının küplerinin toplamının kendisine eşit olduğu sayılar
clc
liste = [];
for sayi=100:999
s = num2str(sayi);
s1 = str2double(s(1));
s2 = str2double(s(2));
s3 = str2double(s(3));
toplam = s1^3 + s2^3 + s3^3;
if (sayi == toplam)
liste = [liste sayi];
end
end
disp(liste);
4-) 4 basamaklı armstrong sayılarının adedini veren fonksiyon
function [sonuc]=armstrong()
liste=[];
for n=1000:9999
s=num2str(n);
b1000=str2double(s(1))^3;
b100=str2double(s(1))^3;
b10=str2double(s(1))^3;
b1=str2double(s(1))^3;
toplam=b1000+b100+b10+b1;
if(n==toplam)
liste=[liste n];
end
end
disp(liste);
sonuc=sum(liste);
end
5-) 1 - 1000 arasındaki arkadaş sayıları bulan fonksiyon
function [ ] = arkadas( )
for i=1:10000
a1=raktop(i);
a2=raktop(a1);
if a2==i && a1<a2
fprintf('%g,%g sağlar.\n',a1,a2);
end
end
end
function toplam = raktop(n)
toplam=0;
for i=1:n-1
if mod(n,i)==0
toplam=toplam+i;
end
end
end
Code language: HTML, XML (xml)
6-) Girilen Terim sayısına kadar olan sayıları toplamını ard arda yazdıran fonksiyon
clc;
terim=input('Kaçıncı terime kadar yazılsın:');
if terim<1
fprintf('0 dan büyük sayı giriniz:');
elseif terim==1
fprintf('%g',0);
elseif terim==2
fprintf('%g,%g',0,1);
elseif terim==3
fprintf('%g,%g,%g',0,1,1);
else
fprintf('%g,%g,%g',0,1,1);
a=0;b=1;c=1;
for i=4:terim
d=a+b+c;
fprintf(',%g',d);
a=b;
b=c;
c=d;
end
end
fprintf('\n');
Code language: PHP (php)
7-) Girilen sayiya kadar olan mükemmel sayıları listeleyen matlab kodunu alt fonksiyon kullanarak yazınız.
(Kendisi hariç pozitif tam sayı bölenleri toplamı aynı sayıyı veriyorsa mükemmel sayıdır)
function [ liste ] = mukemmel( sayi )
liste=[];
for i=1:sayi
if pozboltop(i)==i
liste=[liste i];
end
end
end
function toplam = pozboltop(k)
toplam=0;
for j=1:k-1
if mod(k,j)==0
toplam=toplam+j;
end
end
end
☆FONKSİYON İSMİ İLE BELGENİN ADI AYNI OLMALIDIR.
Matlab Grafik Çizimleri , Grafik Çizdirme
Matlab’da Explot fonksiyonu:
Metin olarak girilen f (x,y)=0 biçiminde kapalı fonksiyon grafiğini çizmede kullanılır.
explot(‘kapalı fonk ifadesi’);
explot(‘kapalı fonk ifadesi’,[x min x max]);
Example: y=(x^3+7x)/(x-5) fonksiyonun grafiğini çiziniz.
Solution:
explot('(x^3+7*x)/(x-5)');
Code language: JavaScript (javascript)
Çizilen grafik üzerinde Fonksiyon özellikleri ile oynamak için:
Color:Kırmızı için r, yeşil için g, mavi için b , cam göbeği (cyan) için c , sarı için y , siyah için k , beyaz için w ,vs…kullanılır.
LineStyle : Çizgi stili için kesintisiz -, kesinitili – – , noktasal : , kesintili ve noktasal -. , çizgisiz none şeklindedir.
LineWidth: Çizgi boyutu olup sayısal değerler alır.
Marker: İşaretleyici için ise toplama + , çember o , nokta . , kare s, yıldız * , 5 köşeli yıldız p ,elmas d, çarpma x , 6 köşeli yıldız h , işaretsiz none şeklindedir.
MarkerSizer: İşaretçi boyutunu belirler.Sayısal değerler alır.
MarkerEdgeColor: işaretcinin kenar rengidir.
MarkerFaceColor :İşaretcinin iç rengidir.
Matlab’da Explot3 fonksiyonu:
Metin olarak gelen f(x,y,z) biçimindeki kapalı fonksiyonların grafiklerini 3 boyutlu olarak çizmek için kullanılır.Burada x ,y, z bir t gibi parametreye bağlı fonksiyonlardır. Yani x=f(t), y=g(t), z=h(t) gibi fonksiyonlardır.
explot3(‘f(t),g(t),h(t)’) şeklinde
explot3(‘f(t),g(t),h(t),[t min t max]’) şeklindedir.
Example: x=sin(t), y=e^t, z=cos(t) parametrik denklemleri ile verilen 3 boyutlu eğrinin grafiğini [-10π,10π] aralığında çiziniz?
Solution:
explot3('sin(t)','exp(t)','cos(t)',[-10π 10π]);
Code language: JavaScript (javascript)
Matlab’da Subplot fonksiyonu:
Subplot(a,b,c): Fonksiyonu ile aynı grafik penceresinden birden fazla eksen oluşturulabilir.Buradaki
a:grafik penceresinin satır sayısını
b:grafik penceresinin sutun sayısını
c:kaçıncı alana çizileceğ belirtilir.
Matlab’da Hold on Fonksiyonu:
Aynı grafikte birden fazla çizim yapılacak ise ilk grafikten sonra hold on komutuyla figure penceresi tutulup diğer grafikler çizdirilir.Başka bir figure geçiş yapılacak ise son çizilen fonksiyondan sonra hold off komutuyla hold on ‘un kapaması yapılır.
Example: Figure penceresi 2 sutun halinde olacak şekilde ilk alanında x^2 siny+y^2 sinx fonksiyonunu rengi siyah ve çizgi boyutu 10 olacak şekilde ,ikinci alanında x^2 cosy+ y^2 cosx
fonksiyonun rengi mavi,çizgi boyutu 5 ve çizgi stili noktasal olacak şekilde çizdiren matlab programını yazınız?
Solution:
subplot(121);
a='(x^2sin(y)+y^2sin(x)';
b=ezplot(a);
set(b,'color','k','linewidth',10);
subplot(122);
c='x^2cos(y)+y^2cos(x)';
d=ezplot(c);
set(d,'color','b','linewidth',5,'linestyle',':');
Code language: PHP (php)
Example: Üstteki fonksiyonları aynı grafikte çiziniz. (Hold on İle)
Solution:
a='x^2sin(y)+y^2sin(x)';
b=ezplot(a);
set(b,'color','k','linewidth',10);
hold on;
c='x^2cos(y)+y^2cos(x)';
d=ezplot(c);
set(d,'color','b','linewidth',5,'linestyle',':');
Code language: PHP (php)
Matlabda Yüzey Grafikleri
Ezcontour: Seviye grafiği
Ezcontourf: Dolgulu seviye grafiği
Ezsurf: Üç boyutlu yüzey grafiği
Ezsurfc: yüzey grafiği ile seviye grafiği
Ezmesh: Ağ grafiği
Ezmeshc: Ağ grafiği ile seviye grafiği
Example: f=y/(1+x^2+y^2) fonksiyonun figure penceresinde ayrı 4 alanda olacak şekide seviye grafiğini ,dolgulu seviye grafiğini, ağ grafiğini ve yüzey grafiği ile seviye grafiğini çizdiren matlab prog. yazınız.?
Solution:
f='y/(1+x^2+y^2)';
subplot(221);
ezcontour(f);
subplot(222);
ezcontourf(f);
subplot(223);
ezmesh(f);
subplot(224);
ezsurfc(f);
Code language: JavaScript (javascript)
Matlab’da Pasta Grafikleri
Pasta grafikleri pie fonksiyonu yardımıyla oluşturulur.
Örneğin;
x=[8,7,9,12,20,35,22];
y=[0,1,1,0,0,0,0];
pie(x,y);
colormap summer; %renk haritası
pasta grafiğini çizdirir.
Burada x değerleri grafiği çizdirecek veriyi,y değeri ise pasta grafiginde vurcu yapılacak değerleri ifade etmektedir. Colormap ifadesi grafikte kullanılacak renk haritasını ifade eder. Matlab da temel renk haritaları; hsv, lines, hot, vga, gray, jet, bone, cool, copper, prism, pink, autumn, white , spring, flag, winter, colorcube, summer şeklindedir.
Her bir pasta diliminin yanında ağırlığı yüzdesi verilmektedir.İstenirse buraya başka bir ifade de yazılabilir:
x=[8,7,9,12,20,35,22];
y=[0,1,1,0,0,0,0];
pie(x,y,{'İstanbul','İzmir','C','D','Edirne','F','G'});
Code language: JavaScript (javascript)
Herbir pasta dilimi için açıklama ve yüzde değerini birlikte yazmak istenirse:
x=[8,7,9,12,20,35,22];
y=[0,1,1,0,0,0,0];
p=pie(x,y);
pyazi=findobj(p,'Type','text'); %textalanını alıyoruz
z=get(pyazi,'String');
m={'A:';'B:';'C:';'D:';'E:';'F:';'G:'}; %matrisyaptık
b=strcat(m,z);%iki string birleştirdik
set(pyazi,{'String'},b);
color hsv;
Code language: JavaScript (javascript)
Buradaki findobj komutu, grafik nesneler içerisinde belirlenen nitelikleri elde etmek için kullanılır. strcap komutu ise aynı boyutlu iki metni birleştirmek için kullanılır. Matlab’da algoritmalar Level 2 ve Matlab Grafik Çizdirme örneklendirerek tamamlanmıştır.
Not:
Nargin: Giriş yapılan parametre sayısı
Nargout: Çıkış istenilen parametreleri sayısı
Varargin: Giriş yapılan tüm parametre dizisi
Varargout: Çıkış yapılan tüm parametre dizisi
Henüz Bilgisayarınıza Matlab yüklü değil ve denemek istiyosunuz?
Matlab ile benzerlik gösteren ücretsiz Octave kullanabilirsiniz. Matlab’ın alternatifi diye de değerlendirebilirsiniz. Ayrıca browser üzerinden de online olarak Grafik çizdirme yapabilirsiniz.
Temel kısımda eksikleriniz var ise Level1 ‘i inceleyebilirsiniz.
Matlab Algoritmalar Level1
Umarım faydalı bir içerik olmuştur İyi çalışmalar.
Hocam ellerinize sağlık, çok faydalı ve öğretici. Bir makale olmuş. Başarılarınızın devamını dilerim.