You are on page 1of 38

BİLGİSAYAR PROGRAMLAMA II ( DERS ÖZETİ)

MATLAB matematiksel işlemleri kolayca yapabileceğiniz bir platformdur. MATLAB


matematiksel işlemleri kütüphaneler halinde gruplamıştır. MATLAB sahip olduğu arayüz
üzerinde de satır-satır çalışır. MATLAB programları derlendikten sonra çalışır; bu nedenle tüm
satırlar arasındaki ilişkilerin doğru kurgulanmış olması gerekir.

Aşağıdaki şekilde MATLAB’in ara yüzü gösterilmiştir.

MATLAB uygulama geliştirme editörü aşağıda gösterilmiştir.

1
Programlama dilleri verileri değişkenler olarak adlandırılan veri yapıları üzerinde saklar.
Veriler sayısal veya sözel olabilir. Sayısal veriler sınırlı bir aralık için tanımlanabilir. Örneğin
bir sayı grubu sadece 0 veya 1 değerini alacak şekilde kısıtlanabilir. Bir diğer sayı grubu ise 0
ve 255 arasında ve sadece tam sayılardan oluşabilir.

MATLAB'daki sayısal sınıflar, işaretli ve işaretsiz tam sayıları ve tek kesinlikli ve çift kesinlikli
kayan noktalı sayıları içerir. MATLAB varsayılan olarak tüm sayısal değerleri çift duyarlıklı
kayan nokta olarak saklar. Herhangi bir sayıyı veya sayı dizisini tamsayı veya tek duyarlık
olarak saklamayı seçebilirsiniz. Tamsayı ve tek duyarlıklı diziler, çift kesinliğe göre bellek
açısından daha verimli depolama sunar. Tüm sayısal türler, dizin oluşturma, yeniden
şekillendirme ve matematiksel işlemler gibi temel dizi işlemlerini destekler.

Aşağıda MATLAB’de kullanılan sayısal / nümerik değişken tipleri ve sınırları verilmiştir ;

double, MATLAB®'daki varsayılan sayısal veri tipidir (sınıf), çoğu hesaplama görevi için
yeterli kesinlik sağlar. Sayısal değişkenler otomatik olarak 64 bit (8 bayt) çift duyarlıklı kayan
nokta değerleri olarak depolanır. Özet : Nokta dahil 16 basamaktan oluşan sayıları ifade eder.

double Çift-duyarlı sayı, negatif sayılar için ; x ~  −1.79769308 ; −2.22507 −308 

pozitif sayılar için ; x ~ 2.22507−308 ;1.79769308 

Şekil 1: Bir sayısı, örneğin x sayısını, double tipine çevirirseniz; oluşan yeni değerin nokta dahil
sadece 16 basamağı anlamlıdır.
MATLAB'daki single kesinlikli değişkenler, tek veri tipinin (sınıf) 4 baytlık (32 bit) kayan
nokta değerleri olarak saklanır. Özet : Nokta dahil 8 basamaktan oluşan sayıları ifade eder.
single Tek-duyarlı

2
Matlab’de, yaklaşık 3.4 ⋅ 1038 'den büyük veya yaklaşık −3.4 ⋅ 1038 'den küçük değerleri
depolamak için double kesinlik kullanılmalıdır. Bu iki sınır arasında kalan sayılar için double
veya single kesinlik kullanılabilir, ancak single daha az bellek gerektirir.

int8 [128; 127] arasında tamsayıları ifade etmek için kullanılan bir değişken tipi’dir.
int8 8-bit işaretli tamsayı ; 𝑥~[−27 ; 27 − 1] = [128; 127]

Şekil 2: int8 için sınır değerleri taşmasının etkisine dikkat ediniz. Bu durum değişken tipi
tanımlamanın neden özen gösterilmesi gereken bir konu olduğunu göstermektedir.

int16 16-bit işaretli tamsayı ; 𝑥~[−215 ; 215 − 1] = [32768; 32767]


int32 32-bit işaretli tamsayı ; 𝑥~[−231 ; 231 − 1] = [2147483648; 2147483647]
int64 64-bit işaretli tamsayı ; 𝑥~[−263 ; 263 − 1]
uint8 8-bit işaretlisiz tamsayı; 𝑥~[0; 28 − 1] = [0; 255]
uint16 16-bit işaretlisiz tamsayı; 𝑥~[0; 216 − 1] = [0; 65535]
uint32 32-bit işaretlisiz tamsayı; 𝑥~[0; 232 − 1] = [0; 4294967295]
uint64 64-bit işaretlisiz tamsayı; 𝑥~[0; 264 − 1]

Kayan-Nokta (Floating-Point) sayıları (Noktanın yeri değişebilir sayılar!)

MATLAB, çift duyarlıklı veya tek duyarlıklı biçimde kayan noktalı sayıları temsil eder.
Varsayılan, çift duyarlıktır, ancak basit bir dönüştürme işleviyle herhangi bir sayıda tek duyarlık
yapabilirsiniz.

3
Şekil 1 : Bir değişkenin sınıfının değiştirilmesi.

MATLAB’de kayan nokta doğruluğu default olarak; > eps komutuyla öğrenilebilir;

MATLAB’de, değişken tiperi arasında dönüşüm > cast fonksiyonu kullanılarak yapılabilir ;

MATLAB’de değişkenlerin tipleri aşağıdaki komutlar kullanılarak sorgulanabilir ;

allfinite Tüm değerler finite ise 1 döndürür.


anynan En az bir değer NaN ise 1 döndürür.
isinteger Değer integer ise ise 1 döndürür.
Değer floating-point ise ise 1
isfloat
döndürür.

Değer(ler) sayısal / numerik ise 1


isnumeric
döndürür.

isreal Değer reel sayı ise 1 döndürür.

isfinite Değer finite ise ise 1 döndürür.

4
isinf Değer inf ise 1 döndürür.

isnan Değer NaN ise 1 döndürür.

Ayrıca, >isa komutunu kullanarak da bir değişkenin tipini sorgulayabilirsiniz.

isa(x, 'integer')

isa(x, 'uint64')

isa(x, 'float')

isa(x, 'double')

isa(x, 'single')

MATLAB’de Sayısal Değerler İçin Sınır Değerleri

Kayan Noktalı sayılar (Floating-point)


eps
için görece doğruluk
Kayan nokta biçiminde ardışık en
flintmax
büyük tam sayı
>10/0 gibi 0 ile bölme işlemleri
Inf Tüm değerleri inf olarak oluştur sonucunda yada 10^500, exp(1000)
gibi taşma durumlarında oluşur.
Belirli tamsayı türünün en büyük
intmax
değeri
Belirli tamsayı türünün en küçük
intmin
değeri

NaN Tüm değerleri NaN olarak oluştur

realmax En büyük pozitif kayan noktalı sayı

En küçük normalleştirilmiş kayan


realmin
noktalı sayı

5
MATLAB’de kompleks sayılar kullanabilirsiniz. Kompleks sayılar 𝑧 = 𝑥 + √−1 ⋅ 𝑦 formunda
ifade edilen sayılardır. Matlab default olarak i değerini √−1 olarak tanımlar. Dolayısıyla i için
bir değer atarsanız; i için atanan √−1 değeri değişir.

Kompleks sayılar oluşturmak için ilk yöntem > complex fonksiyonundan yararlanmaktır ;

Diğer kompleks sayı oluşturma metodu, 𝑧 = 𝑥 + √−1 ⋅ 𝑦 formunu kullanmaktır ;

Kompleks sayıların reel bileşenine > real komutunu kullanarak ve imajiner bileşenine > imag
komutunu kullanarak ulaşabilirsiniz ;

MATLAB arayüzünde komut yazıp çalıştırabildiğiniz bölüme workspace denilir. Workspace


yazılan komutları satır-satır çalıştırabilir. Workspace üzerinde de değişken tiplerini
sorabilirsiniz;

6
Değişken sorgulama > whos komutu kullanılarak kod içerisinde de yapılabilir;

Değişkenleri çoklu olarak da sorgulayarak, aynı tipteki değişkenleri elde edebilirsiniz;

7
MATLAB, sayısal / nümerik değerleri ekranda görüntülemek için biçimlendirmenize izin verir.
Workspace üzerindeki biçimlendirme > format <Stil> komutuyla belirtilir.

Stil Örnek
short (default) 3.1416
long 3.141592653589793
shortE 3.1416e+00
longE 3.141592653589793e+00
shortG 3.1416
longG 3.14159265358979
shortEng 3.1416e+000
longEng 3.14159265358979e+000
+ +
bank 3.14
hex 400921fb54442d18
rat 355/113

Örnek ;

8
Bir matriste farklı tamsayı türlerini birleştirirseniz (örneğin, işaretsiz ile işaretli veya 8 bit
tamsayılar ile 16 bit tamsayılar), MATLAB tüm öğelerin tek bir ortak türden olduğu bir matris
döndürür. MATLAB, sonuç matrisinin tüm öğelerini, girdi matrisindeki en soldaki öğenin veri
türüne ayarlar. Örneğin, aşağıdaki birleştirmenin sonucu, üç adet 16 bitlik işaretli tam sayıdan
oluşan bir vektördür;

Nümerik ve nümerik olmayan değerleri bir satır vektörde ifade edecek olursanız; sonuç ilgili
sayılar arasındaki sol-en büyük tamsayı tipine döndürülür.

MATLAB’de bir matrisi aşağıda gösterildiği gibi tanımlayabilirsiniz ;

Boş matrisler, bir matrise eklendiğinde etki oluşturmaz;

MATLAB hexadecimal ve mantıksal /logic/ binary değişkenlerle çalışabilir ve Hexadecimal


sayılar double tipe dönüştürülebilir;

9
x matrisini; > compose(‘%x’,x) komutunu kullanarak matris formunda hexadecimal string
formuna dönüştürebiliriz;

Decimal sayıları binary sayılara karşılıklı olarak çevirebiliriz ;

MATLAB’de temel komut setleri aşağıda verilmiştir ;

En son cevap
ans
En son yaptığınız işlemin cevabı ans değişkeninde saklanır.
Komut Penceresini Temizle
clc
Workspace ekranını temizler

10
Komut Penceresi metnini dosyaya kaydet
Workspace’te gerçekleştirdiğiniz tüm işlemleri ve ekrana
raporlanan sonuçları bir dosya aktarmanızı sağlar. Örnek ;

diary

Çıktı görüntüleme biçimini ayarla


format

home İmleci eve gönder


Girişin MATLAB anahtar kelimesi olup olmadığını belirler. Örnek

iskeyword

;
more Komut Penceresinde disk belleği çıktısını kontrol edin
commandwindow Komut Penceresini Seçin
commandhistory Komut Geçmişi penceresini aç

MATLAB’de uzun veri satırlarını aşağıda gösterildiği şekilde bölerek girebilirsiniz ;

Örnek çok satırlı alfanümerik veri girişi;

11
Veri girişinde > input komutu kullanılabilir ; Örnek alfanümerik ve nümerik veri girişi aşağıda
gösterilmiştir ;

Workspace üzerinde bir ad altında değişken olup olmadığını > exist komutuyla öğrenebilirsiniz.

MATLAB harf duyarlıdır; komutlar default olarak küçük harflerle yazılmalıdır.

MATLAB’de rezerv edilmiş kelime listesini aşağıdaki işlemle elde edebilirsiniz;

Rezerv kelimeleri değişken olarak kullanmazsınız.

12
MATLAB’de temel matris işleme komutları aşağıda verilmiştir ;
Tüm sıfırlardan oluşan bir dizi oluşturun

zeros

Hepsi 1’den oluşan bir dizi oluştur

ones

Düzgün dağılmış rastgele sayılar

rand

Mantıksal 1 (doğru)

true

false
Mantıksal 0 (yanlış) ;

birim matrisi

eye

Köşegen matris oluşturmak veya matrisin köşegen elemanlarını almak için kullanılır.

diag

cat Dizileri birleştir

13
Dizileri yatay olarak birleştir

horzcat

Dizinin kopyalarını tekrarla

repmat

MATLAB’de grid formlu veri oluşturmak için aşağıda verilen komutlardan yararlanabilirsiniz;

Doğrusal aralıklı vektör oluştur


linspace

logspace Logaritmik aralıklı vektör oluştur

14
2-B ve 3-B ızgara verisi oluşturur.

meshgrid

15
Bir dizinin şekil, boyut ve derecesini belirlemek için aşağıdaki komutlardan yararlanabilirsiniz;

En büyük dizi boyutunun uzunluğu

length

dizi boyutu

size

Dizi boyutları sayısı

ndims

Dizi öğelerinin sayısı

numel

Girişin skaler olup olmadığını belirler

isscalar

16
Dizinin sıralanıp sıralanmadığını belirler

issorted

Matris veya tablo satırlarının sıralanıp sıralanmayacağını belirler

issortedrows

Girişin vektör olup olmadığını belirler

isvector

ismatrix Girdinin matris olup olmadığını belirler


isrow Girdinin satır vektörü olup olmadığını belirler
iscolumn Girdinin sütun vektörü olup olmadığını belirler
isempty Dizin boş mu?

17
MATLAB’de verileri yeniden boyutlandırma işlevilerini aşağıdaki komutlar sağlar;

sort Dizi öğelerini sıralama


sortrows Matris veya tablo satırlarını sıralama
flip Öğelerin çevirme sırası
fliplr Diziyi soldan sağa çevir
flipud Diziyi yukarı aşağı çevir
rot90 Diziyi 90 derece döndür
transpose Vektörü veya matrisi devrik
ctranspose Karmaşık eşlenik devrik
permute Dizi boyutlarına izin ver
ipermute Ters permut dizisi boyutları
circshift Diziyi dairesel olarak kaydır
shiftdim Dizi boyutlarını değiştir
reshape Diziyi yeniden şekillendir
squeeze 1 uzunluğunun boyutlarını kaldırın

MATLAB’de veri indeksleme işlemleri için aşağıdaki komutlar kullanılır ;


Dizindeki en-son eleman

end

Lineer indisden sıralı-indise dönüştür

ind2sub

Sıralı-indisten lineer indise dönüştür

sub2ind

18
MATLAB yapısallaştırılmış -record / structure- değişkenler sağlamaktadır;

MATLAB’de kullanılan matematiksel operatörler şunlardır ;

TOPLAMA
+ Toplama
Toplama

sum

Ardışık toplam

cumsum

Hareketli toplam

movsum

ÇIKARTMA
- Çıkartma
Fark veya sayısal türev

diff

ÇARPMA
Multiplication

.*

* Matris çarpımı

19
Dizindeki tüm elemanların çarpım sonucunu üret

prod

Ardışık çarpım sonucunu üret

cumprod

tensorprod Tensör çarpımı


BÖLME
./ Sağdan böl
.\ Soldan böl
/ xA = B için x değerlerini çözer
\ Ax = B için x değerlerini çözer
ÜS-ALAMA
Hadamart üssü

.^

Matris üssü

TRAZPOZE
.' Vemtör veya matris transpozu
' Kompleks konjugate transpozu

Mantıksal karşılaştırmalar için aşağıdaki komutlardan yararlanabilirsiniz;

20
Eşitliği belirle

==

Daha büyük veya eşit olarak belirleyin

>=

Daha büyük belirle

>

<= Küçük veya eşit olarak belirleyin

< Daha azını belirle


Eşitsizliği belirle

~=

isequal Dizi eşitliğini belirle

isequaln Nan değerlerini eşit olarak ele alarak dizi eşitliğini belirleyin

MATLAB platformunda karakter tablosu işlemleri için UTF-16 karakter kodlarına ve tersine
aşağıdaki komutları kullanarak ulaşabilirisniz.

21
FOR-NEXT LOOP

Kullanılan sayaç (örnekte; i ) tarafından verilen adımlar boyunca for-end arasındaki işlemleri
tekrarlar. for-end döngüsüne, ‘ > continue’ komutuyla adım atlatabilirisniz.

for-end döngüsünü belirli bir koşul gerçekleşince kırabilirsiniz.

IF-THEN
Koşullu işlem yapar

> 5045
IF-ELSE THEN
Çift koşulu işlem yapar

22
TRY-CATCH LOOP

> y=3

SWITCH-CASE LOOP

WHILE-END LOOP

23
PLOT komutu

Eksen etiketi ekleme ; xlabel ve ylabel komutlarının kullanımına dikkat ediniz.

24
Çok satırlı eksen adlandırma

Latex sembolleri kullanarak etiket adı oluşturmak. Örneği inceleyiniz.

25
BAR komutu ile çizim. Örneği inceleyiniz.

3D BAR çizmek. Örneği inceleyiniz.

26
DOSYAYA VERİ YAZMAK

Aşağıdaki örneği inceleyiniz.

KONTUR -EŞ YÜKSEKLİK /İZOHİPS - EĞRİLERİ ÇİZMEK

Aşağıdaki örneği inceleyiniz.

27
Eş-Yükseklik eğrilerinin etiketlenmesi için > <label komutundan yararlanabilirsiniz.

28
Yüzey çizimleri

SURF komutu ve kullanımı için aşağıda verilen örneği inceleyiniz.

Yüzey için basit bir render oluşturma işlemi aşağıdaki gibi yapılabilir.

29
İSTATİSTİKSEL HESAPLAMALAR

olarak verilsin. Bu durumda;

Ortalama (m) ve standart sapma (s) değerlerini aşağıda verildiği gibi hesaplayabilirsiniz ;

Aşağıda verilen örnekte gösterildiği gibi bir veri setine (x) , bir dağılım modeli uydurabilirsiniz.

MATLAB’de bir komut hakkında ayrıntılı bilgiye > help <KOMUT> yazarak erşebilirsiniz.

Örnek

> Help histfit

30
İlgili komut hakkında daha fazla ayrıntıyı > help komutunun en altındaki dökümanlar
bölümünde bulabilirsiniz.

YÜZEY İNTERPOLASYONU

Aşağıda verilen komutları ve grafiği inceleyiniz

31
Gürültü Filtreleme

Aşağıda verilen komutları ve grafiği inceleyiniz

32
EĞRİ UYDURMAK

Aşağıda verilen komutları ve grafiği inceleyiniz

BİR POLİNOMUN KÖKLERİNİ BULMAK

33
KÖKLERİ BİLİNEN POLİNOMU BULMAK

𝑥2 + 3 ⋅ 𝑥 − 4 = 0

BİR GÖRÜNTÜYÜ YÜKLEMEK

GÖRÜNTÜYÜ EKRANA ALMAK

34
BİR GÖRÜNTÜYE MEDIAN FİLTRE UYGULANMASI

BİR GÖRÜNTÜDEKİ KENARLARIN HESAPLANMASI

35
K-MEANS METODUNA GÖRE GÖRÜNTÜ KÜMELEME

FUZZY-C MEANS İLE KÜMELEME

36
TEMEL İSTATİSTİKLER

 5 0 −3 
Örnek uygulama için ; x =  2 7 6  olarak tanımlansın.
 −5 12 0 

DETERMİNANT

>> x=[5 0 -3; 2 7 6; -5 12 0];

>> det(x) % x’in determinantı

ans = -537

ORTALAMA

>> mean2(x)

ans =2.66666666666667

ORTANCA (MEDİAN)

>> median(x(:))

ans =2

EN-BÜYÜK DEĞER

>> max(x(:))

ans = 12

EN-KÜÇÜK DEĞER

>> min(x(:))

ans = -5

(SÜTÜN-SÜTÜN ) STANDART SAPMA

>> std(x)

ans = 5.13160143944688 6.02771377334171 4.58257569495584

(TÜM MATRİS İÇİN ) STANDART SAPMA

>> std(x(:))

ans =5.33853912601566

37
TRİGONOMETRİK FONKSİYONLAR
𝑡 𝑎çı𝑠ı = 450 ve 0     verilsin.

>> t=45;
>> beta=linspace(0,pi,1000);
SIN, COS, TAN VE COTAN
>> k=[sind(t) cosd(t); tan(t) cos(t)./sin(t)]
k= 0.707106781186548 0.707106781186548
1.61977519054386 0.617369623783555
DERECE→ GRAD ve DERECE → RADYAN açı dönüşümleri
>> grad=45*200/180
grad = 50
>> radyan=45*pi/180
radyan = 0.785398163397448
TRİGONOMETRİK FONKSİYONLARLA GRAFİK ÇİZİM ÖRNEKLERİ

38

You might also like