Home » All posts
Matlab Proje Ornegi 2
MATLAB
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))
- Temel Matematik Fonksiyonlarının Matlab'de yazılışı.
- Matlab ile belirli aralıktaki sayıların toplamını yapan matlab kodları
- Matlab de Excel (xls) dosyalarından nasıl veri çekilir?
- Matlab programlama ile nasıl "sanal piyano" yapılır?
- Matlab programlama giriş seviyesi klavuzu
- Matlab Proje Örneği 1
- Matlab Proje Örneği 2
- Matlab Proje Örneği 3
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:
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 ifadeBurada ifadenin degeri dogru(true) ise deyim1 icra edilir sonra icra deyim2’ye
deyim1;
end
deyim2;
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 ifade
deyim1 ;
else
deyim2;
end
deyim3;
...
if ifade
deyim1;
deyim2;
..
deyim_n;
end
deyim_x;
..
If ifade
Deyim1;
Deyim2;
..
deyim_n;
else
deyim_n+1;
deyim_n+2;
..
deyim_m;
end
deyim_k;
...
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
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ı:
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









