İçeriğe atla

Programlama:MATLAB

Vikikitap, özgür kütüphane


Derse Giriş

[değiştir]

MATLAB, 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ştir]

Sayılar

[değiştir]

MATLAB, 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ştir]

Diziler 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ştir]
Dizi uygulamalarına giriş
Temel Vektör Çalışmaları

Scripts

[değiştir]

Matlab 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ştir]

Yorum 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ştir]

The 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ştir]

Bir dosyaya yazmak

[değiştir]

MATLAB'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ştir]

MATLAB 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ştir]

Tek 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ştir]

Cell 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ştir]

The 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ştir]

Kılavuz (Guide)

[değiştir]
[değiştir]
  • Simulink is a set of tools for modeling, simulating and analysing systems.

Psychtoolbox

[değiştir]

Distributed Computing toolbox

[değiştir]
  • The distributed computing toolbox is a set of tools that aid in distributing models over a cluster.