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

Ruzgar Turbin'i Yapim Asamasi

3-4 Aydır sadece kağıt üzerinde çalıştığımız "Rüzgar Türbin'i" projesi için hazırlıkları bitirdik. Alet çantamın gelmesi ve rüzgar türbin'inin kalbi olan güçlü mıknatısları da Karaköy/İstanbul 'dan temin ettik. İlginçtir sadece mıknatıs satan bir iş yeri var! Enerjinin   özelleştirilmesiyle herkesin kendi Elektriğini üretmeye başladığı son 3-4 aydır mıknatıs satışlarında da ciddi artış görülmüş, Mıknatıs'cının (: da dediği gibi satışlar daha fazla artacak şüphesiz ki elektrik üretiminin ^temeli manyetik alan'dır. Magnet yani mıknatıs ne kadar güçlü olursa o kadar çok elektrik üretimi yapılabilir. 12 adet (200 TL) aldığımız mıknatısları 60 derecelik açıyla metal levhada simetrik şekilde 2^^ şerli şekilde yapıp 6 adet manyetik alan oluşturmuş olacağız dönen türbin pervanesine bağlı levha döndükçe manyetik alan oluşacaktır ve Rüzgar Türbini için head (kafa) bölgesi dediğimiz bölge ile işimiz bitmiş olacak, sonrası birazcık daha karışık elektronik giriyor işin içine yaptıkça öğrendikçe burada fotoğraflar ile birlikte yayımlamaya devam edeceğim. Şimdilik elimizde ki malzemeler ölçü aleti, lehim makinesi, mıknatıslar( mıknatıscı karaköy: 0212 297 1850 ), tornavidalar, mukavva, kablo kesici, metal levha..
 SaintOne | http://saint-one.blogspot.com

 

Blogger news

Blogroll

About

Muhterem Blog © 2012 | Template By Jasriman Sukri