Programlama:MATLAB
Bu kitap bir taslaktır. Sayfanın içeriğini geliştirerek Vikikitap’a katkıda bulunabilirsiniz. |
Derse Giriş
değiştirMATLAB, The MathWorks firması tarafından geliştirilen bir programlama dilidir. Lineer cebir programlamanın kolay olduğu yerde bir matris programlama dili olarak başlamıştır. İnteraktif oturumlar altında, bir grup çalışması kadar iyi çalıştırılabilmektedir.
Hesaplama
değiştirSayılar
değiştirMATLAB, diğer işler arasında, basit hesaplama işlemlerini yapabilir. Basit bir örnek çözümüyle rsayılarak, ne kadar yol gidebilir?
Önce Ahmet'in arabasının iki benzin dolumu arasındaki kat ettiği mesafeyi hesaplayalım.
>> 3503-3215 ans = 288
Ahmet'in arabasının litre başına gittiği yol:
>> 288/45 ans = 6.4
Buna göre gidebileceği yol:
>> 6.4 * 69.3 ans = 443.5200
Tekrar benzini bitinceye kadar 443.52 km yol gidebilir.
Aynı örneği, değişkenleri adlandırarak yapalım
>> mesafe = 3503-3215 mesafe = 288 >> kullanim = mesafe/45 kullanim = 6.4000 >> beklenen_mesafe= kullanim * 69.3 beklenen_mesafe = 443.5200
Sonucun komut penceresinde görüntülenmesini engellemek için, yazılan ifadenin ardından noktalı virgül koyulur. Sonuç depoda saklanır. Komut satırına değişkenin adını yazarak, değişkene erişmek mümkündür. Örneğin:
>>beklenen_mesafe = kullanim * 69.3; >> >>beklenen_mesafe beklenen_mesafe = 443.5200
MATLAB, numaraların yanı sıra dizgileri de işleyebilir. Dizgiler tek tırnak içinde yazılmalıdır:
>> dizgi1 = 'merhaba' dizgi1 = merhaba
Eğer içerisinde tek tırnak işareti de kullanacaksanız şu şekilde yazabilirsiniz:
>> dizgi1 = 'Vikitap''ta' dizgi1 = Vikitap'ta
>> dizgi2 = '''' dizgi2 = '
Diziler (Arrays)
değiştirDiziler MATLAB'da temel veri tipleridir. Aslında daha önce burada sunulan veri tipleri, yani numara ve dizgiler, dizilerin özel durumlarıdır. Çoğu geleneksel dilde olduğu gibi, MATLAB'daki diziler aynı tipin çeşitli değerlerine ait bir koleksiyondur (varsayılan olarak, tip C için double dır.) ve tamsayı (integer) olarak nitelendirilirler.
Dizi oluşturmanın kolay yollarından biri köşeli parantez içinde, dizinin her bir sayısının virgülle ayrılarak yazılmasıdır:
>> dizi = [0, 1, 4, 5] dizi = 0 1 4 5
C gibi daha alt seviye dillere karşın, MATLAB'da bir dizi daha üst seviye bir veri tipidir. Boyutuna, veri tipine vs. göre çeşitli bilgiler içerir.
>> length(dizi) ans = 4
Diziler çok boyutlu olabilir. 2 boyutlu bir dizi oluşturmak için (Lineer Cebir'de matris denir), virgülle ayrılmış değerler vermemiz ve her sırayı da noktalı virgülle ayırmamız gerekir:
>> matris = [1, 2, 3; 4, 5, 6] matris = 1 2 3 4 5 6
Unutulmamalıdır ki bir matris, matematiksel değeri açısından her sıradaki sütun sayısı ve her sütundaki sıra sayısı eşit olmalıdır:
>> matris = [1, 2, 3; 4, 5] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns.
Bir matrisin sıra ve sütun sayıları, içindeki size fonksiyonu sayesinde bilinebilir. Aşağıdaki standart matematiksel yazıda, ilk numara sıra sayısını, ikinci numara da sütun sayısını ifade eder.
>> size(matris) ans = 2 3
Tek boyutlu diziler genellikle çok boyutlu dizilerin bir özel halidir:
>> size(dizi) ans = 1 4
Daha önce de söylediğimiz gibi diziler yüksek seviye nesnelerdir, C dekilerden çok daha yüksek, hatta bir C++ vektöründen bile. Burda asıl gaye, matematiksel vektör ve matrislerle benzer tipte olması. Aslında bir vektör, bir satır vektörü ya da bir sütun vektörü olabilir ama bu ikisi eşit değildir:
>> sutun = [1; 2; 3] sutun = 1 2 3
>> satir = [1, 2, 3] satir = 1 2 3
"satir" ve "sutun" aynı boyda değildir:
>> size(sutun) ans = 3 1
>> size(satir) ans = 1 3
Diziler MATLAB'ın temel prensibidir ve neredeyse MATLAB'daki her şey, dizilerin geniş kapsamlı kullanımına dayalıdır. Matlab dizilerinin ve bu dizilerin kullanımlarının daha geniş açıklaması için Diziler ve Matrisler bölümüne bakın.
Diziler ve Matrisler (Arrays and Matrices)
değiştirScripts
değiştirMatlab scripts and functions are stored in M-files, with the extension *.m. Custom functions follow the syntax:
function outputname= function_name(input_arg1,input_arg2) statements return;
Function files must have the same name as function_name, and be added into MATLAB's PATH environment variable by selecting File-Set Path-Add Folder, then adding the folder containing function.m.
Yorumlar (Comments)
değiştirYorum satırları yüzde(%) karakteriyle başlar, böylece MATLAB '%' işaretinden sonraki kısmı görmezden gelir. Yorumlar, fonksiyonların ne işe yaradıklarını belirtmek için çok kullanışlıdır.(CTRL+R ile de eklemeniz mümkündür.)
Komut Satırına (command line) Veri Girmek
değiştirThe input() function lets your scripts process data entered at the command line. All input is converted into a numerical value or array. The argument for the input() function is the message or prompt you want it to display. Inputting strings require an additional 's' argument. Example:
%test.m %let's ask a user for x x = input('Please enter a value for x:')
Then running the script would produce the output:
Please enter a value for x:3 x = 3 >>
Örnekler
değiştirBir dosyaya yazmak
değiştirMATLAB'da dosya kaydetmenin bir kaç yolu vardır.
- save - Veriyi dosyaya kaydeder, varsayılan ayarı *.mat şeklindedir
- uisave - includes user interface
- hgsave - saves figures to files, *.fig by default
- diary [filename] - saves all the text input in the command window to a text file.
File Naming Constraints
değiştirMATLAB for Windows retains the file naming constraints set by DOS. The following characters cannot be used in filenames:
" / : * < > | ?
Tek Tırnak İşareti Ekleme
değiştirTek tırnak işaretini (') yazmazmanın bir yolu, işareti iki defa yazmaktır. Başka bir yol ise, char komutunu kullanmaktır, char(39). Örneğin:
>> ''''
ve
>> char(39)
ikisinin de sonucu
ans = '
böylece tek tırnak işaretini yazmış oluruz.
Inserting Newlines into Plot Labels
değiştirCell arrays are the easiest way to generate new lines when using the functions xlabel, ylabel, zlabel, text, title, and gtext. However, cell arrays do not always work (see next başlık).
When displaying text on plots, "\n" is typically interpreted as '\' followed by 'n' instead of the newline character. To generate multiple lines, use cell arrays. This is done by separating each string line of text with a comma and enclosing all comma-separated strings in curly braces as follows.
>> title({'First line','Second line'})
Sometimes it is nice to put the value of a variable and a newline into the plot title. You can do this like so:
n = 4; x = -n:1:n; %x'in alt sınırı,hassasiyeti,x'in üst sınırı y = x.^2; %y=x^2 plot(x,y) %ekrana çiz fonksiyonu title( [ 'plot of x squared', 10, 'from x = ', num2str(-n), ' to x = ', num2str(n) ] )%buradaki 10 yazı şekillerinden bir tanesini gösterir
The 10 outside the single quotes is the ascii value for a newline. You don't have to use the char() function, just the number will work.
The output should look like this:
plot of x squared from x = -4 to x = 4
Inserting Newlines into Disp, Warn, and Error
değiştirThe functions warning, error, sprintf and fprintf will interpret '\n' as a newline character. For example
>> error('This error\nhas a newline.') ??? This error has a newline.
This functionality was introduced in MATLAB 6.5 (R13), when formatted error strings were introduced. This is described in the Release Notes for that release. To do this in previous versions, use SPRINTF or CHAR(10):
>> error(sprintf('This error\nhas a newline.')) ??? This error has a newline.
disp(['abcd' char(10) 'efgh']) abcd efgh
This works as well:
disp(['abcd', 10, 'efgh']) abcd efgh
Alet çantaları (Toolboxes)
değiştirKılavuz (Guide)
değiştir- Kılavuz (GUIDE) allows the creation of interactive user interfaces.
Simulink
değiştir- Simulink is a set of tools for modeling, simulating and analysing systems.
Psychtoolbox
değiştir- Psychtoolbox is a set of tools that aid in vision research.
Distributed Computing toolbox
değiştir- The distributed computing toolbox is a set of tools that aid in distributing models over a cluster.