Matlab Muhendislik Slayt Ders Notu

Matlab; elektrik-elektronik, bilgisayar, makine, inşaat mühendislik için slayt ders notları. 

(Matlab electrical-electronical, computer, machine and civil engineering student notes with power point)

Matlab ile Excelden Veri Nasil Cekilir?

Matlab kulanarak bir çok veritabanı tipinden (xml gibi) veri çekebileceğiniz gibi "Microsoft Excel" den data çekebilirsiniz. Peki bu ne işimize yarar derseniz; excel ile oluşturulmuş 500 tane hisse senedinin 1 yıl boyunca günlük verilerinin olduğu bir data düşünün. Bu bahsettiğim gibi karmaşık verilere ve fazla boyuta sahip data üzerinde el ile oynama yapmak günlerinizi alabilir. Bunun için excel de oluşturulmuş bir dosyadan aşağıdaki matlab komutları ile veri çekip matlab içerisinde array oluşturabilirsiniz. Matlab e array tanımlattıktan sonra ise yazacağınız bir kaç satır kod ile grafikler yaratabilir, sunumlarınızda .fig yada .m formatında kullanabilirsiniz. "%" simgesi ile başlayan satırlar kodları anlamanız için yaptığım yorumlardır. aşağıda datası excel de olup verileri matlabe çekip her bir öğrencinin notunu hesaplayan program kodları mevcuttur.
** xlsread komutunda excel dosyanızın yerini dogru yazdığınızdan emin olun.

%excel dosyasından veri çekip, bununla bir array oluşturur.
%oylesine olusturdugum excel dosyasinda ogrenci notlari girdim
%stud input ile hangi ogrencinin ortalamasini hesaplatmak istedigimi
%kullaniciya sordum
stud=input('Select student number')
%asagida grades adinda array olusturdum bu arrayi excel den veri cekip
%yapti, (help xlsread)
[grades] = xlsread('G:/desktop/student_grades.xlsx','Notlar');
%burada secilen ogrencinin excelde bulunan 2. 3. 4. kolonlardaki notlarini
%alip topladi
toplam = grades(stud,2)+grades(stud,3)+grades(stud,4)
%asagidaki satirda verilen uc notun ortalamasini bulmak icin 3 e boldum
ortalama = toplam/3
genelort=grades(21,5)
fprintf('student: %d\n',stud);
%secilen ogrencinin ortalamasinin cikis komutu ve genel ortalama ile
%arasındaki grafigin cizimi eger not ortalamadan yuksekse grafik cikmaz
%ogrenci basarilidir. grafik cikar ise ogrencinin genel ortalamaya olan
%yakınligi grafikten takip edilebilir.
fprintf('average of student: %d\n',ortalama);
plot(ortalama:genelort);



Matlab de Piyano Programi Yapin




Burada ki
 sıkıştırılmış dosyayı indirip, bilgisayarınızda zip içerisinden çıkarın. Matlab ile aşağıdaki şekilde ki gibi path ayarını yapıp indirdiğiniz klasörü bulunuz.





Matlab komut satırına ">keys" yazarak programı çağırınız. Bir müddet karşınıza çıkan piyanonun matlab ile nasıl yapılmış olabileceğini düşünürken, açık kaynak kodlu bu ".m" matlab programını inceleyebilir sizde matlab'in engin okyanusu için yeni şeyler keşfedebilirsiniz.



Matlab Proje Ornegi 3

Matlab de bir proje üzerinde çalışırken, hayatın her alanında olduğu gibi planlı ve düzenli bir şekilde çalışmanız başarılı ".m" programları yazmanızı sağlayacaktır. Aşağıda ekran görüntüsü bulunan programı matlab de açıp incelediğinizde göreceksiniz ki bir çok fonksiyonun(function varargout = final1(varargin) birleşimi ile oluşturulmuştur. Program yazarı, önce oturup düşünür kafasında tasarlar programı yazmadan önce, ve düşüncesinde parçalarını yerleştirmiş olur. Aşağıda ki görüntüye ait programın açık kaynak kodlarını indirmek için tıklayınız. Program basit bir oyun, sayıların üzerine çift tıklayarak sıralı bir şekilde düzenlemeye çalışıyorsunuz. Tabi ki en çok kullanılan komut "if else"


Matlab Proje Ornegi 2

Ekran görüntüsü aşağıda ki gibi olan ; Matlab ile yazılmış basit bir oyun. ".m file" şeklinde indirip projeyi incelemek için tıklayınız. ** Matlab programını açtıktan sonra "Ctrl+O" yazıp ".rar" içindeki dosyada bulunan "Pong.m" dosyasını seçiniz..

MATLAB

Matlab; "C" programlama dilinin engin okyanusundan esinlenerek hazırlanmıştır. Fakat C programlamaya nazaran Matlab daha çok matematiksel ve mühendisliklik hesaplamalarının çözümünü kolaylaştırmak içindir. Bin sekiz yüz seksen dokuz (1889.) dereceden elli altı (56) bilinmeyenli bir denklemi Matlab da yazdığınız 3-4 satır kod ile hesaplatabilirsiniz.
Matlab isminin açılımı: "Matrix Labaratory". Matlab ile kağıt üzerinde sayfalarca işlem gerektiren "Matrix" (çarpmak, bölmek, indislerini almak, tersini almak, pivotlarını belirlemek, tanımlanan farklı matrisler arasında ki benzerlikleri ve farklılıkları belirlemek) işlemlerini yapabilirsiniz.
Türkiye de henüz yaygın olarak kullanılmamasına rağmen, Amerika Birleşik Devletleri, Kanada, İngiltere gibi teknolojiye hakim ülkelerde Matlab profesyonel makine kontrolü, robot hareket algoritması, göz tarayıcısı, parmak izi okuyucusu gibi sistemler için kullanılır.  Ayrıca bir "xml", "xls", "html" ve java script dosyalarıyla beraber çalışabilmesi kabiliyeti ile belirlenen data base den verileri çekip 3 boyutlu

Matlab üzerinde tanımladığınız fonksiyon ve polinomların grafiklerini elde edebilirsiniz. Fonksiyonları değişken yapıp, yazdığınız program arayüzü ve matlab ile oluşturduğunuz ".m" uzantılı program vasıtasıyla kullanıcıdan değerler alıp grafik çizdirebilirsiniz (bkz. plot(x,y))


MATLAB



MATLAB Programlamaya Giris


MATLAB ILE PROGRAM YAZMAK
Su ana kadar Matlab ile gerçeklestirdigimiz uygulamalarda ,belirli bir islemi gerçeklestirmek
üzere gerekli olan Matlab komut ya da fonksiyonlarini Matlab komut satirindan,>>
sembollerinden sonra tek tek girerek icra ediyorduk.
Oysa,Matlab komut ya da fonksiyonlarindan gerçeklestirmek istediginiz bir isle iliskili özel
bir grubu,bir dosyaya kaydederek,bu dosya isminin çagrilmasi ile icra edebilirsiniz.Sonuçta
çok pratik ve etkin bir yol ortaya çikar;söz konusu islemin gerektigi her anda hazirlanan dosya
icra edilerek,komutlarin tek tek girilmesine gore, önemli bir zaman tasarrufu saglanir.
Bir Matlab deyimleri ya da komutlari grubunu içeren bu tip bir dosyaya Matlab’de Mdosyasi(
M-file) adi verilir.Bu tip dosyalariin uzantisi daima .m seklinde olmalidir.Bir Matlab
M dosyasi,bir komut grubu içerdigi için tanim itibari ile bir program dosyasidir.Dolayisi ile
,Matlab’de,M-dosyalari olusturularak programlama yapilabilir.
M dosyasi içine tüm Matlab komut ve fonksiyonlari yerlestirilebilir;bunlar arasinda asagida
inceleyecegimiz kontrol komutlari da bulunabilir.M-dosyalari aslinda bilinen metin(text)
dosyasi tipinde dosyalardir.Ancak özel bir komut yorumlayicisi içinden geçirilirler.
Matlab’de birçok matematik ya da mühendislik problemini çözmek için yazilacak programlar
C/C++,FORTRAN ya da PASCAL’daki karsiliklarina göre çok daha basit ve kisadir.Bu
aslinda beklenen bir sonuçtur çünkü Matlab’de gerçekte bu amaçla kullanilacak pek çok hazir
fonksiyon mevcuttur.
MATLAB’TE BIR m-DOSYAYI(PROGRAMI) ÇALISTIRMAK
Matlab’de bir program çalistirmak için asagidaki adimlar izlenmelidir:
1)Program Matlab editörü içinde yazilir ve saklanir.
2)Programin saklandigi dosya daima .m uzantili olmalidir.
3)Programi çalistirmak için ya komut satirindan ismi girilerek enter’a basilir veya asagidaki
gibi Debug/Run menüsü kullanilir:














4)Programi icra edebilmek için,komut satirinda, sadece programin adi yazilir;uzantisi
yazilmamalidir.
SEÇME(SELECTION) TIPINDEKI KONTROL DEYIMLERI:

IF DEYIMI
if deyimi,Matlab dilinde sartli dallanma(conditional branching) adi verilen
islemi gerçeklestiren bir deyimdir.
Sartli dallanma, herhangi bir programlama dili için temel kontrol yapisidir.
Sartli dallanma islemi sayesinde,bir program, kararlar alma imkanina kavusur; bir ifadenin
sonucuna göre, bir komutlar dizisinin icra edilip edilmeyecegine karar verebilir.
Ifadenin degeri, bir icradan digerine degisebilecegi için, bu özellik bir programa farkli
verilere karsi farkli sekillerde davranma imkani saglar. Matlab dilinde sartli dallanma if ve
else anahtar sözcükleri ile gerçeklestirilir. if deyiminin en basit sekli için yazilis biçimi
asagidaki gibidir:
if ifade
deyim1;
end
deyim2;
Burada ifadenin degeri dogru(true) ise deyim1 icra edilir sonra icra deyim2’ye
geçer.Ifadenin degeri yanlis(false) ise bu durumda da dogrudan deyim2’ye
geçilir.Ifadenin degeri yanlis ise deyim1 icra edilmeyecektir.Asagida if yapisini açiklayan bir
akis diyagrami verilmistir.



if deyimi için akis diyagrami(flow chart)
If deyimi else sözcügü ile birlikte kullanilirsa asagidaki yazilis biçimi kullanilir:
if ifade
deyim1 ;
else
deyim2;
end
deyim3;
...
Bu durumda,ifadenin degeri dogru ise deyim1 icra edilir ve sonra deyim3’e geçilir.Ifadenin
degeri yanlis ise,bu durumda da deyim1 atlanarak dogrudan else’i izleyen deyim2’ye
geçilecek ve bu icra edildikten sonra da deyim3 ile devam edilecektir.Asagida bu yapi ile
iliskili bir akis diyagrami verilmistir.

if deyiminde,ifadenin degeri dogru oldugu zaman sadece deyim1 gibi tek bir deyim degil de
bir deyimler grubunun icra edilmesi isteniyorsa bu durumda bu deyimler grubu if-end
sözcükleri arasina yerlestirilir:
if ifade
deyim1;
deyim2;
..
deyim_n;
end
deyim_x;
..
Bu durumda ifade dogru ise deyim1,deyim2,..deyim_n ile belirtilen deyimler
grubunun tümü icra edilerek deyim_x’e geçilecektir;ifade yanlis ise de bu durumda if’e
ait deyimler blogu atlanarak dogrudan deyim_x’e geçilecektir.
Ayni sey if else yapisi için de söz konusudur:
If ifade
Deyim1;
Deyim2;
..
deyim_n;
else
deyim_n+1;
deyim_n+2;
..
deyim_m;
end
deyim_k;
...
Yukardaki yapida,ifade dogru ise,deyim1,deyim2,..,deyim_n icra edilerek
deyim_k’ya geçilecek,ifade yanlis ise bu durumda da,if içindeki deyimler atlanarak
sadece deyim_n+1,deyim_n+2,..,deyim_m icra edilerek programin icrasi daha sonra
deyim_k’ya erisecektir.
ÖRNEK 1:
I.File/New/m-file yolu ile bir m- file açiniz:
II.Asagidaki komutlari
giriniz:

III.Debug/Save and Run menu adimlarini izleyiniz:
IV.Karsiniza asagidaki pencere gelecektir:
IF1.m adini vererek Save butonunu tiklayiniz.
V.Program Debug/Run ile çalistirilinca BIR TAM SAYI GIRINIZ mesaji
gelir;mesela 12 girilip enter’a basilinca “GIRDIGINIZ SAYI 10 DAN
BUYUKTUR” mesaji gelecektir:
Bu çok basit ve kisitli programda kullanici klavyeden 10’dan daha büyük bir sayi girdigi zaman,program yukardaki çiktida görülen mesaji verecek fakat 10 ya da daha küçük bir sayi girilirse bu durumda herhangi bir mesaj görüntülenmeyecektir.

Temel Matematik Fonksiyonlarinin Matlab-de Yazilisi


İşlem        Matlab Formatı
e^x            >>exp(x)
√x             >>sqrt(x)
ln x            >>log(x)
log10 x >>log10(x)
cos x >>cos(x)
sin x          >>sin(x)
tan x         >>tan(x)
cos-1 x >>acos(x)
sin-1 x >>asin(x)
tan-1 x >>atan(x)

****
e^x = e üzeri x ( matlab de üslü sayılar "Shift+3+3" şeklinde yazılır "^" sempoli iki kere basınca çıkar ve üslü sayıyı göstermek için bir tanesini silmeniz gerekir. Mesela 5 üzeri 6 sayısının matlab de kodlanması = "5^6" şeklinde olur.

Matlab Proje Ornegi

Matlab programlama kullanarak bir fotoğrafın pixel ayarlarını değiştiren script kodları aşağıdadır. Kodları kopyalayıp matlab programında "Ctrl+N" tuşuna basıp yeni scipt oluşturma sayfasına yapıştırın. Script'i Ezresize diye bir dosya açıp kaydedin ve o dosyanın içine car.jpg adında bir fotoğraf koyup matlab de "Ezresize" yazıp çağırın.. 

function EZresize

%Ezresize script'i size linerenterpolasyon algoritması yolu ile
%fotoğrafları kolay ve çabukça yeniden boyutlandırma yani
%pixeli ile oynama şansı verir
%kodlama :"Joe Blaine --- Image Resizing"

close all
clc

%Değişkenler


figure_color=[1 1 1];
panel_color=[0.5 0.5 0.5];
entryField_color=[1 1 1];

%Kolları

hFigure=figure(...
    'Units','Pixels',...
    'Position',[1000 300 198 348],...
    'Toolbar','none',...
    'MenuBar','none',...
    'NumberTitle','off',...
    'Color',[.5 .5 .5],...
    'Name','EZresize {Cadence Software Deveolpment}');

hPanel=uipanel(...
    'Parent', hFigure,...
    'Units','Pixels',...
    'Position',[0 0 200 350],...
    'BackgroundColor',panel_color);

hImageChoice=uicontrol(...
    'Style','Edit',...
    'Parent',hPanel,...
    'Units','Pixel',...
    'Position',[10 250 180 25],...
    'String','car.jpg',...
    'BackgroundColor',entryField_color);

hButton=uicontrol(...
    'Style','pushbutton',...
    'Parent',hPanel,...
    'Units','Pixels',...
    'Position',[25 300 150 20],...
    'String','Get Image',...
    'BackgroundColor',panel_color,...
    'Callback',@imageChoice_callback);

hImageChoiceText=uicontrol(...
    'Style','Text',...
    'Parent',hPanel,...
    'Units','Pixels',...
    'Position',[10 270 180 20],...
    'String','Enter the name of your image(.jpg):',...
    'BackgroundColor',panel_color,...
    'HorizontalAlignment','Center');


hWidthEditBox=uicontrol(...
    'Style','Edit',...
    'Parent',hPanel,...
    'Units','Pixel',...
    'Position',[10 200 180 25],...
    'String','300',...
    'BackgroundColor',entryField_color);


hWidthText=uicontrol(...
    'Style','Text',...
    'Parent',hPanel,...
    'Units','Pixels',...
    'Position',[10 220 180 20],...
    'String','Enter Desired Width (in Pixels)',...
    'BackgroundColor',panel_color,...
    'HorizontalAlignment','Center');

hHeightEditBox=uicontrol(...
    'Style','Edit',...
    'Parent',hPanel,...
    'Units','Pixel',...
    'Position',[10 150 180 25],...
    'String','200',...
    'BackgroundColor',entryField_color);

hHeightText=uicontrol(...
    'Style','Text',...
    'Parent',hPanel,...
    'Units','Pixels',...
    'Position',[10 170 180 20],...
    'String','Enter Desired Height (in Pixels)',...
    'BackgroundColor',panel_color,...
    'HorizontalAlignment','Center');


hButton2=uicontrol(...
    'Style','pushbutton',...
    'Parent',hPanel,...
    'Units','Pixels',...
    'Position',[25 120 150 20],...
    'String','Resize It!',...
    'BackgroundColor',panel_color,...
    'Callback',@resizeButton_callback);

hImageWriteEditBox=uicontrol(...
    'Style','Edit',...
    'Parent',hPanel,...
    'Units','Pixel',...
    'Position',[10 60 180 25],...
    'String','',...
    'BackgroundColor',entryField_color);

hButton3=uicontrol(...
    'Style','pushbutton',...
    'Parent',hPanel,...
    'Units','Pixels',...
    'Position',[25 30 150 20],...
    'String','Save Image',...
    'BackgroundColor',panel_color,...
    'Callback',@imageWrite_callback);

hImageWriteText=uicontrol(...
    'Style','Text',...
    'Parent',hPanel,...
    'Units','Pixels',...
    'Position',[10 80 180 20],...
    'String','Enter a filename',...
    'BackgroundColor',panel_color,...
    'HorizontalAlignment','Center');

handle_list=...
    [hFigure,hPanel,hImageChoice,...
    hButton,hButton2,hButton3,...
    hImageChoiceText,...
    hWidthEditBox,...
    hWidthText,...
    hHeightEditBox,...
    hHeightText,...
    hImageWriteEditBox,...
    hImageWriteText];

set(handle_list,...
    'Units','Normalized');

%Callback Functions

    function imageChoice_callback(hObject,eventdata)

        img=imread(get(hImageChoice,'String'),'jpg');

        % W=genişlik
        % H=yukseklik
        % C=3 for RGB color images

        [H W C]=size(img);
        oldsize=size(img);

        hFigure=figure(...
            'Units','Pixels',...
            'Position',[200 200 W H],...
            'Toolbar','none',...
            'MenuBar','none',...
            'NumberTitle','off',...
            'Color',figure_color,...
            'Name','EZresize {Cadence Software Deveolpment}');

        hAxes=axes(...
            'visible','off',...
            'Units','Pixels',...
            'Position',[0 0 W H],...
            'NextPlot','ReplaceChildren',...
            'XLimMode','Manual',...
            'YLimMode','Manual',...
            'XLim',[1 W],...
            'YLim',[1 H],...
            'YDir','Reverse');

        imagesc(img);

        setappdata(hFigure,'UserData',img);

    end %imageChoice_callback

    function resizeButton_callback(hObject, eventdata)

        %Get data
        img=getappdata(hFigure,'UserData');
        img=double(img);
        oldsize=size(img);
        H=str2double(get(hWidthEditBox,'String'));
        W=str2double(get(hHeightEditBox,'String'));
        newsize=[W H];

        %Routine

        % Scaling factor
        factor = (oldsize(1:2)-1)./(newsize-1);

        % Create new grid (foundation for image)
        u = 0:newsize(1)-1;
        v = 0:newsize(2)-1;
        [U, V] = ndgrid(u, v);

        % Make a conection between the new grid and the old size
        u = u.*factor(1) + 1;
        v = v.*factor(2) + 1;

        % Compute the location of each new point relative to one nearest
        % neighbor of the original image
        U = U.*factor(1); U = U - fix(U);
        V = V.*factor(2); V = V - fix(V);

        % Perform interpolation element by element
        U = repmat(U, [1 1 3]);
        V = repmat(V, [1 1 3]);
        N = (V-1).*((U-1).*img(floor(u), floor(v), :) - ...
            U.*img(ceil(u), floor(v), :)) - ...
            V.*((U-1).*img(floor(u), ceil(v), :) - ...
            U.*img(ceil(u), ceil(v), :));

        N=uint8(N);

        [H W C]=size(N);

        hFigure=figure(...
            'Units','Pixels',...
            'Position',[100 100 W H],...
            'Toolbar','none',...
            'MenuBar','none',...
            'NumberTitle','off',...
            'Color',figure_color,...
            'Name','Resized Image');

        hAxes=axes(...
            'visible','off',...
            'Units','Pixels',...
            'Position',[0 0 W H],...
            'NextPlot','ReplaceChildren',...
            'XLimMode','Manual',...
            'YLimMode','Manual',...
            'XLim',[1 W],...
            'YLim',[1 H],...
            'YDir','Reverse');

        imagesc(N)

        setappdata(hFigure,'UserData',N);

    end %resizeButton_Callback

    function imageWrite_callback(hObject, eventdata)

        F=getappdata(hFigure,'UserData');
        H=get(hImageWriteEditBox,'String')
        imwrite(F,H)

    end %imageWrite_callback


end %EZresize

%Credits: Andreas Klimke, for an image resizing algorithm

Matlab ile belirli aralıktaki sayilarin karesinin toplami

Matlab programlamada for döngüsü ile 1 den 10 a kadar olan sayıların karesinin toplamı:

>> a=0;
>> for b=1:10
a=a+b^2;
end

⇨
 

Blogger news

Blogroll

About

Muhterem Blog © 2012 | Template By Jasriman Sukri