You are on page 1of 137

Uğur Arifoğlu MATLAB7.

0 Simulink ve mühendislik uygulamaları

2.15. MATLAB ortamında kullanılan veri türleri

MATLAB ortamında çeşitli veri türü tanımlanmıştır. Dizi (array) şeklinde tanımlanan bu veri türleri aşağıda
maddeler halinde gösterilmiştir. Dizi, MATLAB ortamında bir adet değişken içerebildiği gibi bir vektör, iki veya
çok boyutlu matris de olabilir.

1. Fonksiyon kulpları (function handles)


2. Java türleri
3. Hücre (cell)
4. Yapı (structure)
5. Lojik (logical)- 1 byte uzunluğunda olup, 0 yada 1 değerini alır.
6. Karakter (char)- 2 byte uzunluğunda olup [0, 65535] aralığında bir uzunluğa sahiptir.
7. Sayısal (numerical)
7.1. Tek hassasiyetli sayı (single)- 4 byte uzunluğunda olup [-3e38; 3e38] aralığındaki sayılardır.
7.2. Çift hassasiyetli sayı (double)- )- 8 byte uzunluğunda olup [-1e308; 1e308] aralığındaki sayılardır.
7.3. İşaretli sayılar

7.3.1. İşaretli tamsayılar (hem pozitif hem de negatif değerleri içerirler)


7.3.1.1. int8 (8 bit işaretli tamsayı):1 byte uzunluğunda olup [-128 ; 127] aralığındaki sayıları
içerir.
7.3.1.2. int16 (16 bit işaretli tamsayı): 2 byte uzunluğunda olup [-32768 ; 32767] aralığındaki
sayıları içerir.
7.3.1.3. int32 (32 bit işaretli tamsayı): 4 byte uzunluğunda olup [-2147483648 ; 2147483647]
aralığındaki sayıları içerir.
7.3.1.4. int64 (64 bit işaretli tamsayı): 8 byte uzunluğunda olup [-92234e14 ; 92234e14]
aralığındaki sayıları içerir.
7.3.2. İşaretsiz tamsayılar (sadece pozitif değerleri içerirler)
7.3.2.1. uint8 (8 bit işaretsiz tamsayı):1 byte uzunluğunda olup [0 ; 255] aralığındaki sayıları
içerir.
7.3.2.2. uint16 (16 bit işaretsiz tamsayı): 2 byte uzunluğunda olup [0 ; 65535] aralığındaki
sayıları içerir.
7.3.2.3. uint32 (32 bit işaretsiz tamsayı): 4 byte uzunluğunda olup [0 ; 4294967295]
aralığındaki sayıları içerir.
7.3.2.4. uint64 (64 bit işaretsiz tamsayı): 8 byte uzunluğunda olup [0 ; 18447e15] aralığındaki
sayıları içerir.

MATLAB ortamında bir dizi içerisinde sayısal bir değer (özel olarak belirtilmemiş ise) çift hassasiyette bir sayı
(dizi) olarak tutulur. Bu durumda dizi içerisindeki her eleman için bellekte 8 byte yer ayrılır. Eğer dizi içinde
metin de yer alıyorsa metin içindeki her bir karakter için 2 byte yer ayrılır ve karakter dizisi tanımlanmış olur.
int8, int16,.., uint8, uint16,...,single, logical, vb. tür dizilerde ise tür dönüşüm fonksiyonları kullanılarak double
türü diziler oluşturulur. Fonksiyon kulpları hakkında ileride detaylı bilgiler verileceğinden veri türlerine ‘Hücre’
tanımı ile başlanacaktır.

2.11.1. Hücre (Cell)

Hücre daha sonra açıklanacak olan MATLAB veri türleri içinde yer alır. Hücre, bir çeşit dizidir ve çok boyutlu
olabilir. Hücrenin normal dizilerden farkı, içindeki elemanların farklı türden olabilmeleridir. Hücrenin her bir alt
parçasında yer alan satırlardaki eleman sayıları birbirlerine eşit olmalıdır, fakat bir parçadaki eleman türü diğer
alt parçadaki eleman türünden farklı olabilir. Şekil 2.18’de cell_top adlı 4 alt parçadan oluşan bir hücre
yapısı verilmiştir.

1
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

cellA cellB

‘function’
3-50.2
‘length ’
‘12345678’
‘12345678’

cellC cellD 44-6 -3j2+4j4714j

2-39-j1-2j043j688

Şekil 2.18

Şekil 2.18’de verilen hücre yapısının cellA adlı alt parçasında yer alan üç satırdaki sütun sayılarının (örnekte 8
sütun bulunmaktadır) farklı uzunlukta olduğu aksi takdirde MATLAB ortamında hata ile karşılaşılacağı
unutulmamalıdır. Benzer ilişki cellC adlı alt parça için geçerlidir. cell_top adlı hücreyi MATLAB ortamında
basit bir şekilde tanıtmak için her bir alt parçayı ayrı ayrı tanıtmak, daha sonra bu alt parçaları cell_top adlı
hücreyi oluşturacak şekilde bir araya getirmek yolu tercih edilecektir.

>>cellA=[‘function’; ‘length ’; ‘12345678’] (‘enter’)


cellA =
function
length
12345678

>>cellB=[3 -5 0.2] (‘enter’)


cellB =
3.0000 -5.0000 0.2000
>>
>>cellC=[2 -3 9 –j 1-2j;0 4 3j 6 88] (‘enter’)
cellC=
2.0 -3.0 9.0 0-1.0i 1.0-2.0i
0 4.0 0+3.0i 6.0 88.0
>>
>>cellD=[44; -6; –3j; 2+4j; 4; 71; 4j] (‘enter’)
cellC =

44.0
-6.0
0 - 3.0i
2.0 + 4.0i
4.0
71.0
0 + 4.0i
>>

2
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Yukarıdaki MATLAB satırları ile ilk adım olarak tüm alt hücreler MATLAB ortamına taşınmış oldu. Bundan
sonraki adım tüm alt hücreleri kullanarak cell_top adlı ana hücreyi oluşturmaktır. Hücrenin MATLAB’a
tanıtılmasında ‘{‘ ve ‘}’ işaretleri kullanılır;

>>cell_top={cellA cellB ; cellC cellD} (‘enter’)


cell_top =
[3x8 char ] [1x3 double]
[7x1 double] [7x1 double]
>>

Yukarıda elde edilen sonuçta da görüldüğü gibi ekranda cell_top adlı hücreyi oluşturan veri tipleri ve
bunların boyutları görülmektedir. Kullanıcı isterse cell_top adlı hücrenin her hangi bir alt parçasını (örnek
olarak cellA) MATLAB ortamında görüntüleyebilir;

>>cellA (‘enter’)
cellA =
function
length
12345678
>>

Kullanıcı isterse cell_top hücresinin elemanları hakkında celldisp komutunu kullanarak bilgi alabilir:

>> celldisp(cell_top) (‘enter’)


cell_top{1,1} =
function
length
12345678
cell_top{2,1} =
44.0000
-6.0000
0 - 3.0000i
2.0000 + 4.0000i
4.0000
71.0000
0 + 4.0000i
cell_top{1,2} =
3.0000 -5.0000 0.2000
cell_top{2,2} =
44.0000
-6.0000
0 - 3.0000i
2.0000 + 4.0000i
4.0000
71.0000
0 + 4.0000i

Kullanıcının cell_top hücresi hakkında dikkat etmesi gereken ilişki türü aşağıda gösterilmiştir:

cell_top(1,1)=cellA
cell_top(1,2)=cellB
cell_top(2,1)=cellC
cell_top(2,2)=cellD

Kullanıcı, cell_top adlı verinin türünü öğrenmek isterse class komutu kullanmalıdır:

>>class(cell_top)

ans =

3
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
cell

2.11.2. Yapı (Structure)

MATLAB ortamında tanımlı diğer bir veri türü ‘yapı’ dır. Yapı’ların MATLAB ortamında kullanılma nedeni; bir
konu hakkında sahip olunan bir çok bilginin bir arada tutulma ihtiyacıdır. Örnek olarak bir kişinin yaşadığı ülke,
şehir, mahalle, cadde, sokak, apartman, daire gibi birbirini takip eden zincirleme bilgiler yapı ortamı için bir
kullanım alanı oluşturur.

Örnek olarak kimlik adlı bir yapı oluşturulsun. Bu yapı içinde; cinsiyet, ülke, şehir, mahalle, cadde, sokak,
apartman, daire gibi alanları (field) içersin. Yapı oluştururken yapı ‘adı’ ile ‘alanlar’ birbirlerinden nokta işareti
ile ayrılmalıdır;

>> kimlik.isim= ‘Mehmet Sehit’ (‘enter’)


kimlik =
isim: 'Mehmet Sehit'
>> kimlik.ulke= ‘Turkiye’ (‘enter’)
kimlik =
isim: 'Mehmet Sehit'
ulke: 'Turkiye'
>> kimlik.cinsiyet= ‘Erkek’ (‘enter’)
kimlik =
isim: 'Mehmet Sehit'
ulke: 'Turkiye'
cinsiyet: 'Erkek'
>> kimlik.sehir= ‘Istanbul’ (‘enter’)
kimlik =
isim: 'Mehmet Sehit'
cinsiyet: 'Erkek'
ulke: 'Turkiye'
sehir: 'Istanbul'

Bu adımdan sonrası sehir adlı alanın alt alanında oluşturulsun;

>> kimlik.sehir.mahalle= ‘Istiklal’ (‘enter’)


kimlik =
isim: 'Mehmet Sehit'
cinsiyet: 'Erkek'
ulke: 'Turkiye'
sehir: [1x1 struct]

Dikkat edilirse mahalle’nin adı isim olarak değil MATLAB ortamında kapladığı alan (1*1) olarak kullanıcıya
verilmektedir. Kullanıcı şahsın oturduğu mahallenin ismini görmek ister ise;

>>kimlik.sehir (‘enter’)
ans =
mahalle: 'Istiklal'
>>
işlemi yapılmalıdır.

>> kimlik.sehir.mahalle.cadde= ‘Sakarya’ (‘enter’)


kimlik =
isim: 'Mehmet Sehit'
cinsiyet: 'Erkek'
ulke: 'Turkiye'
sehir: [1x1 struct]
>>

>> kimlik.sehir.mahalle.sokak= ‘30 Agustos’ (‘enter’)

4
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
kimlik =
isim: 'Mehmet Sehit'
cinsiyet: 'Erkek'
ulke: 'Turkiye'
sehir: [1x1 struct]
>>
>> kimlik.sehir.mahalle.apartman= ‘Zafer’ (‘enter’)
kimlik =
isim: 'Mehmet Sehit'
cinsiyet: 'Erkek'
ulke: 'Turkiye'
sehir: [1x1 struct]
>>
>> kimlik.sehir.mahalle.daire_no= ‘1’ (‘enter’)
kimlik =
isim: 'Mehmet Sehit'
cinsiyet: 'Erkek'
ulke: 'Turkiye'
sehir: [1x1 struct]
>>

Kullanıcı mahalle adlı alana yerleştirilen tüm bilgileri görmek isterse aşağıdaki satırı uygulamalıdır:

>> kimlik.sehir.mahalle
ans =
cadde: 'Sakarya'
sokak: '30 Agustos'
apartman: 'Zafer'
daire_no: '1'

 fprintf ('çıkışta gösterilmesi istenen ifade', 'ifadenin gösterilme biçimi', değişken listesi)

‘Çıkışta gösterilmesi istenen ifade’: Tırnak içine hangi ifade yazılırsa ekranda bu ifade gözükür.

'ifadenin gösterilme biçimi': Burada, ifadenin MATLAB ortamında aldığı değerin hangi formatta ekrana
yazılacağını belirten kodlar kullanılır. Bu kısımda % işaretinin arkasından
hassasiyet belirleme ve dönüşüm (c,d,e,E,f,F,g,G,
i,o,s,u,x,X) karakterlerinden biri kullanılır. Örneğin s; değişken
olarak 'karakter' seçildiği zaman kullanılır. Bu karakterlerin bazılarının ne
ifade ettiği aşağıdaki örneklerde gösterilmiştir. Diğer karakterler ile ilgili
bilgi ise etkileşimli yardım penceresinden öğrenilebilir. Daha sonra
kullanılan \n,\r,\t,\b,\f gibi tanımlar ile de (sırası ile); satırbaşı,
yeni satır, sekme, geriye doğru silme ve yeni sayfa işlemi
gerçekleştirilebilir.

değişken listesi : Burada ise ifadenin MATLAB ortamında atandığı değişken ismi yazılır.

%a.bf : f ifadesi sayının sabit noktalı olduğu anlamına gelir (default olarak short e formatındadır).
f sayısı gösterim olarak ‘a.b’ gibi iki sayıdan meydana gelir. ‘a’ sayısı değişkenin aldığı
değerin işareti, tam kısmı ve varsa noktayı da dahil ederek noktadan sonraki rakam sayısını
içerir. ‘b’ sayısı ise sabit noktalı sayının noktadan sonra ekrana yazılması istenen rakam
sayısını gösterir. Eğer tamsayı için kullanılacak rakam sayısı ‘a’, olması gerekenden az olsa
bile ekrana yazılan sonuç hatalı olarak ortaya çıkmaz.

>> sicaklik=1056.789432; (‘enter’)

5
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
>>fprintf('sicaklik=%4.0fderece',sicaklik) (‘enter’)
sicaklik=1057derece
>>fprintf('sicaklik = %4.1f derece',sicaklik) (‘enter’)
sicaklik = 1056.8 derece

%a.be : e ifadesi sayının üstel olduğu anlamına gelir (default olarak short e formatındadır). e
sayısı gösterim olarak ‘a.b’ gibi iki sayıdan meydana gelir. ‘a’ sayısı değişkenin aldığı
değerin işareti, nokta için (bir) ve üstel ifade için 5 haneli (e harfi+üssün işareti+üssün değeri)
sayıyı içerir. ‘b’ sayısı ise noktadan sonraki sayıyı gösterir.

>>fprintf('sicaklik=%8.3ederece',sicaklik) (‘enter’)
sicaklik=1.057e+003derece

%a.bg : g ifadesi sayının üstel olduğu anlamına gelir (default olarak short e formatındadır). g
sayısı gösterim olarak ‘a.b’ gibi iki sayıdan meydana gelir. g'nin e'den farkı, sayıyı daha da
kısaltmasıdır (bazen formata göre sayıyı yuvarlar).

>>fprintf('sicaklik=%4.0g derece \n',sicaklik) (‘enter’)


sicaklik=1e+003 derece
(bir satır atlandı)

Örnek olarak ‘Ahmet Sadık’ adındaki bir öğrencinin adı, soyadı, okul numarası, ilgili dersi, bu dersten
aldığı not alta alta ekrana yazdırılsın. Bunun için fprintf komutundan yararlanılabilir;

>>Ad=’Ahmet’; (‘enter’)
>>Soyad=’Sadık’; (‘enter’)
>>Numara=’307’; (‘enter’)
>>Ders=’Matematik’; (‘enter’)
>>Not=45.75; (‘enter’)
>>fprintf(‘Ad:%s\nSoyad: %s\nNumara:%s\nDers: %s\nNot:%3.1f’,...
Ad,Soyad,Numara,Ders,Not) (‘enter’)
Ad:Ahmet
Soyad: Sadık
Numara:307
Ders: Matematik
Not:45.8

Yukarıda \n komutu her bir bilginin alt alta yazılmasını sağlamaktadır. Eğer yukarıda \n komutu
kullanılmasaydı bilgiler aynı satıra yan yana yazılırdı. \n yerine \t konulsaydı sonuçlar aynı satıra fakat
aralarına boşluk gelecek şekilde yerleştirilecekti. \n komutundan önce yazılan s komutu ise değişkenin
‘karakter’ formunda olduğunu göstermektedir.

fprintf komutunun kompleks sayıların yalnızca reel kısımlarını gösterdiği unutulmamalıdır. Bu


nedenle kompleks sayıların kullanıldığı program ve hesaplamalarda fprintf komutu yerine disp
komutunun kullanılması daha uygun olur.

3.2.3. Save As komutu

6
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 3.1

Çalışma alanında kayıtlı olan değişkenlerden arzu edilen kadarı Save As...komutu kullanılarak bir isim altında
MATLAB ortamına kaydedilebilir. Şekil 3.1’de gösterildiği gibi Workspace ortamında bulunan değişkenlerden
(şekil 3.1’de A, B ve C değişkenleri seçilmiştir) arzu edilenleri shift tuşu ile seçilerek fare’nin sağ tuşuna
basıldığında ve ortaya çıkan seçeneklerden Save As…komutu seçilip ve 'tık'lanıldığında (veya şekil 3.1'de
Workspace ikonları içinde yer alan Save ikonu kullanıldığında) kullanıcının karşısına şekil 3.2’de verilen
pencere çıkar. Bu pencerede istenilen bir dosya adı (ör:yeni) altında A, B ve C değişkenleri kaydedilir.

Şekil 3.2
3.2.3.1. Import Data komutu yardımı ile MATLAB ortamındaki dosyaların okunması

MATLAB komut penceresinde File menüsü içinde yer alan Import Data seçeneği Fare ile seçilip üzerine
‘tık’lanıldığında kullanıcının karşısına şekil 3.3’de gösterilen pencere gelir. Bu pencerenin sol tarafında yer alan
dosyalardan arzu edilen seçilerek Aç komutuna 'tık'lanıldığında şekil 3.3(a) ile verilen pencere ile karşılaşılır.

7
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 3.3

Şekil 3.3(a)

Bu pencere içindeki Finish komutu üzerine Fare ile ‘tık’lanılır ise istenen dosya içeriği MATLAB
Workspace ortamına taşınmış olur (şekil 3.3(b)). Resim dosyaları MATLAB ortamında matrisel formda
saklanır.

Şekil 3.3(b)

Import Data seçeneği kullanılarak mat,txt,xls (Excel dosyaları) uzantılı dosyalar ve resim dosyaları
MATLAB ortamında görüntülenebilir. Import Data komutu yardımı ile Excel dosyaları, Notepad ve WordPad

8
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
içinde yer alan dosyalar da MATLAB ortamına taşınabilir. Bu dosyalar içinde yer alan Türkçe karakterler bu
komut tarafından algılanamaz.

3.2.4. Load komutu

MATLAB ortamında kayıtlı bulunan dosyaları çalışma ortamına (Workspace) getirmek için load komutu
kullanılır. Komutun kullanılış biçimi aşağıda gösterilmiştir:

>> load ‘dosya adı’ (‘enter’)

‘dosya adı’ ile belirtilen yere MATLAB ortamında daha önce kaydedilen dosyanın ismi yazılarak (‘enter’)
tuşuna basıldığında çalışma ortamına (workspace) bu dosya gelecektir. load komutu ile ancak daha önce
tanımlanmış ve MATLAB ortamında saklı olan dosya, Workspace ortamına getirilir..

3.2.5. Data alış verişi

MATLAB yazılımı bir programdan diğer bir programa data verişini (export) veya data alışını (import)
mümkün kılan alt yapıya sahiptir. Bu işlemler text olarak yazılmış dosyalarda save ya da load komutları
kullanılarak gerçekleştirilir.

Eğer data1.dat adlı bir text dosyası oluşturulmuş ise (long e formatında-bkz.Böl.2);

save data1.dat a b c –ascii komutu ile a, b, c değişkenleri data1.dat adlı dosyada ASCII
modunda saklanır. Çeşitli yerlerde kullanılabilen bu verilerin tekrar MATLAB ortamında kullanılabilmesi için bu
verilerin MATLAB tarafından anlaşılabilmesini mümkün kılan .m uzantılı hale getirilmesi gerekir. Bu veriler
MATLAB içinde load komutu ile yüklenemez, .m dosyası şeklinde çağırılması gerekir. Veriler yalnızca
MATLAB içinde kullanılacak ise .mat uzantılı dosya içinde saklanması tavsiye edilir.

save data1.dat a b c –ascii -double komutu ile a b c değişkenleri data1.dat adlı


dosyada 16 lı ASCII sistemine göre saklanırlar.

save data1.dat a b c –ascii -tabs komutu ile a b c değişkenleri data1.dat adlı dosyada
ASCII kodunda tablo biçiminde saklanırlar.

MATLAB bir dosyadan diğerine data aktarmak (import-export) amacı ile de kullanılabilir. Bunun için tanımlanan
komutlar aşağıda gösterilmiştir;

A=csvread(‘dosya adı’,c,r):Bu komutta dosya adı (örneğin: u1.m veya u1.dat veya u1.mat
veya u1.txt olan) ve içindeki sayıları birbirleri ile virgül ile ayrılan dosyanın A adlı bir
matrise atanması sağlanır. Bu komut içinde yer alan c değeri u1.m dosyasında
aktarılmayacak olan satır sayısını (1 numaralı satırdan başlayarak), r ise sütun sayısını (1
numaralı sütundan başlayarak) gösterir. Eğer c ve r her ikisi de sıfır ise bu durumda
u1.m dosyasındaki sayıların tümü A matrisine atanacak demektir. Örnek olarak u1.m
dosyası aşağıda belirtilen dataları içersin:
1,2,3
4,5,6
7,8,9

MATLAB ortamında aşağıda yapılan işlemler incelenmelidir:

>>A=csvread(‘u1.m’,1,2) (‘enter’) % u1.m’in ilk satır ve ilk 2 sütun’u A’ya


% aktarılmayacak
A=
6
9
>>A=csvread(‘u1.m’,1,1) (‘enter’) % ilk satır ve ilk sütun A’ya aktarılmayacak
A=

9
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
5 6
8 9
>>A=csvread(‘u1.m’,0,0) (‘enter’) % u1.m’in hepsi A’ya aktarılacak
A=
1 2 3
4 5 6
7 8 9
>>A=csvread(‘u1.m’,) (‘enter’)
A=
1 2 3
4 5 6
7 8 9
csvwrite(‘dosya adı’,A):Bu komut ile A matrisi ‘dosya adı’ kısmında yazılı olan dosyaya (.m,
.mat, .txt, .dat uzantılı) kaydedilir. Eğer bu dosyada data var ise bu
data değerleri A matrisi ile değiştirilir ve aralarına virgül yerleştirilir. Örnek
olarak yukarıda tanımlanan A matrisinin MATLAB ortamında u1.m adlı
dosyaya aktarılması istensin:

>> csvwrite(‘u1.m’,A) (‘enter’)

komutu icra edildiğinde u1.m dosyası aşağıdaki hale gelir;

1,2,3
4,5,6
7,8,9

Eğer içinde datanın bulunduğu dosya, .m uzantılı değil (örneğin lotus türü bir dosya) ise yukarıda verilen
komutta csv yerine wk1 konularak aynı işlemler yapılabilir.

3.2.5.1. fopen komutu

fopen komutu kullanılarak MATLAB ortamında, var olan bir veri dosyası açılabildiği gibi yeni bir veri dosyası
da oluşturulabilir. Bu komut MATLAB command window ortamında aşağıdaki biçimlerde uygulanır:

>>bilgi=fopen(‘dosya adi’,’secenek’) (‘enter’)


>>[bilgi, mesaj]=fopen(‘dosya adi’,’secenek’) (‘enter’)
>>[bilgi, mesaj]=fopen(‘dosya adi’,’secenek’,’format’) (‘enter’)

Yukarıda ‘dosya adi’ ile belirtilen yere MATLAB ortamına taşınacak dosyanın adı yazılır. ‘dosya adi’
boşluğuna yazılan dosya, MATLAB arama motorunun taradığı adresler içinde (öncelikle work dosyasında)
olmalıdır. Bu dosya, ya yeni bir data girmek ya da data okumak amacı ile çağırılır. Dosya yeni oluşturuluyor ise
work dosyasında açılır. Mevcut olan bir dosya çağırılacak ise önce work dosyasına bakılır orada yoksa diğer
MATLAB arama yollarına bakılır. ‘secenek’ boşluğuna yazılacak komut türü; bu dosyanın okuma mı, yazma
mı veya hem okuma hem de yazma amaçlı olarak mı açılacağı konusunda MATLAB’a bilgi verir. Tablo 3.1’de bu
komut türleri tanıtılmıştır:

Tablo 3.1
Komut türü Uygulama biçimi
‘r’ Dosyayı yalnızca okuma amaçlı olarak açar, yazma işlemine izin vermez.
‘r+’ Dosyayı hem yazma hem de okuma amaçlı olarak açar.
‘w’ Eğer dosya mevcut ise içindeki bilgiyi siler ve içine yazılabilir hale getirir, dosya mevcut
değilse yeni bir dosya açar ve içine yazılabilir hale getirir.
‘w+’ Eğer dosya mevcut ise içindeki bilgiyi siler, okunabilir ve yazılabilir hale getirir, dosya
mevcut değilse yeni bir dosya açar, okunabilir ve yazılabilir hale getirir.
‘a’ Mevcut bir dosyanın sonuna bilgi eklemek için kullanılır. Dosya mevcut değilse
oluşturur.
‘a+’ ‘a’ özelliğine ilave olarak okuma işlemini de mümkün kılar.

10
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
‘W’ Teyp sürücüleri için kullanılır. Dosyayı ‘Automatic Flushing’ özelliğini kullanmadan
yazmaya açar.
‘A’ Teyp sürücüleri için kullanılır. ‘W’ özelliğini kullanır ve bilgileri dosyanın sonuna ekler.

‘dosya adi’ boşluğuna yazılan dosya ikili (binary) koda göre açılıyor ise Tablo 3.1’de gösterilen komut
türünün sonuna b eklenir. Dosya text formatlı olarak açılıyor ise komut türünün sonuna t eklenir. İkili sistemde
default olarak b olduğu için, komut türünün sonuna bir ek getirilmediği durumda MATLAB dosyayı ikili koda
göre açar.
Yukarıda verilen komut satırı uygulandığında eğer ‘bilgi’ olarak -1 değeri elde ediliyor ise işlem doğru olarak
gerçekleşmemiş işlemde hata oluşmuş demektir (yani dosya MATLAB ortamına taşınamamıştır). Kullanıcı bu
değere bakarak fopen komutunun çalışmasını kontrol edebilir.

Yukarıda verilen komut satırı uygulandığında hata var ise ‘mesaj’ olarak hata hakkında bilgi verilir.

‘format’ olarak ; ‘n’ yazılırsa (default) lokal makina formatı, ‘l’yazılırsa IEEE-küçük endian kayan
noktalı formatı, ‘b’yazılırsa IEEE büyük endian kayan noktalı formatı kullanılır,‘%f’yazılırsa okutulacak
değerlerin sayı olduğu belirtilir.

Örnek olarak giris.dat adlı bir (var olmayan) bir dosya work ortamında (yazılabilir formatta) oluşturulmak
istenirse;

>>[bilgi ,mesaj]=fopen(‘giris.dat’,‘wt’) (‘enter’)


bilgi =
3
mesaj =
''
sonucu elde edilir. bilgi, pozitif bir sayı olduğu için yapılan işlem başarı ile gerçekleşmiştir. mesaj olarak
ise bir hata bildirisi ortaya çıkmamıştır.

Yukarıda verilen giris.dat dosyası yerine giris.txt adlı text dosyası da açılabilirdi. Bilindiği gibi txt
uzantılı dosyalar notepad komutu seçilerek de açılabilir.

Örnek olarak daha önce tanıtılan fprintf komutu ile fopen komutunun birlikte kullanıldığı bir MATLAB
programı aşağıda gösterilmiştir:

>>A=[ 2 4 6 8 10 12 14 16 18]; (‘enter’)


>>[bilgi,mesaj]=fopen(‘giris.dat’,‘wt’); (‘enter’)
>>fprintf(bilgi,’%5f %5f %5f\n’,A); (‘enter’)

Yukarıda gösterilen fprint komutu, A matrisi elemanlarını her bir satırda 3 eleman olacak şekilde (3 adet
veriden sonra bir satır atlanacak) giris.dat adlı (yeni oluşturduğu) text dosyasına atar. Yukarıda oluşturulan
giris.dat adlı dosyayı okuyabilmek için;

>> !notepad giris.dat (‘enter’)

komut satırı uygulanabilir. Bu işlem yapıldığında şekil 3.4’de gösterilen pencere elde edilir.

Şekil 3.4

3.2.5.2. fclose komutu

11
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
fclose komutu yazmak ya da okumak için açılan dosyanın, MATLAB’dan ilişkisini kesmek için kullanılır. Bu
dosya MATLAB’dan ilişkisi kesilmedikçe (MATLAB çalıştığı sürece), bilgisayardan silinemez. Yukarıda açılan
giris.dat adlı dosyanın MATLAB ile ilişkisi kesilmek istenirse;

>> a=fclose(bilgi) (‘enter’)


a=
0

a değeri -1 olmadığı için yapılan dosya kapatma işlemi başarı ile sonuçlanmıştır. Aynı işlem;

>> a=fclose(‘all’); (‘enter’)

komut satırı kullanılarak da yapılabilir.

3.2.5.3. fwrite komutu

fwrite, daha önce açılmış bir dosya içine (kullanıcını arzu ettiği) bir veriyi ikili (binary) koda göre aktaran bir
komuttur. Aşağıda gösterilen bir yapı altında uygulanır:

>> sayi=fwrite(bilgi,veri,yapı,boşluk) (‘enter’)

Yukarıda verilen komut satırında, bilgi; fopen komutunun uygulanması sonucu elde edilir. veri; kullanıcı
tarafından dosya içine aktarılmak istenen (matris formlu) veri (örnek olarak workspace ortamında saklı
bulunan bir matris olabilir) adıdır. yapı; girilecek verinin dosya içinde saklanma formatıdır. Saklanma
formatları Tablo 3.2’de gösterilmiştir.

Tablo 3.2
format Açıklama
‘char’ 8-bitlik karakter
‘schar’ 8-bitlik işaretli karakter
‘uchar’ 8-bitlik işaretsiz karakter
‘int8’ 8-bitlik sayı
‘int16’ 16-bitlik sayı
‘int32’ 32-bitlik sayı
‘int64’ 64-bitlik sayı
‘uint8’ 8-bitlik işaretsiz sayı
‘uint16’ 16-bitlik işaretsiz sayı
‘uint32’ 32-bitlik işaretsiz sayı
‘uint64’ 64-bitlik işaretsiz sayı
‘float32’ 32-bitlik değişken nokta
‘float64’ 64-bitlik değişken nokta
‘bitN’ N-bitlik işaretli sayı,1≤N≤64
‘ubitN’ N-bitlik işaretsiz sayı,1≤N≤64

atlama; her veri arasına bırakılacak boşluğu gösterir. Komut satırının uygulanması sonunda elde edilen sayı;
verinin içerdiği data sayısını gösterir. Daha sonra da bahsedileceği gibi MATLAB, bir matrisi arka planda sütün-
sütun depolar; 1. sütunun elemanları arkasına 2. sütun ve onun arkasına da 3. sütun elemanlarını ekler (böylece
matris sütunları tamamlanıncaya kadar devam edilir) ve sonuç olarak bu matris arka planda bir dizi olarak
saklanır.

3.2.5.4. fread komutu

fread; ikili (binary) sisteme göre hazırlanmış bir data dosyasını okuma komutudur. Aşağıda gösterilen format
kullanılarak uygulanır:

>>[dizi,sayi]=fread(bilgi,alan,yapı,boşluk) (‘enter’)

12
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Yukarıda gösterilen komut satırında, bazı tanımlar yukarıda açıklanmıştı. Komut satırında görülen alan;
dosyadan okunması istenen değişken sayısını belirtir, üç farklı şekilde uygulanır:

- alan boşluğuna bir sayı yazılabilir. Bu durumda dosyadan bu sayı adedi kadar veri okunur. Okunan veriler
dizi ile belirtilen çıkış değişkenine bir sütun matris olarak atanırlar.

- alan boşluğuna inf komutu yazılabilir. Bu durumda dizi ile belirtilen çıkış değişkenine okunan dosyadaki
tüm data değerleri aktarılır.

- alan boşluğuna [a,b] yazılabilir. Bu durumda dosyadaki a*b boyutu içine giren tüm datalar, dizi ile
belirtilen matrise a*b boyutlu olarak atanır.

3.2.5.5. fscanf komutu

fscanf; formatlanmış sisteme göre oluşturulmuş bir veri dosyasının okuma komutudur. Aşağıda gösterilen
format kullanılarak uygulanır:

>>[dizi,sayi]=fscanf(bilgi,’format’,alan) (‘enter’)

Yukarıda verilen tüm ifadeler daha önce açıklanmıştır. Aşağıdaki uygulama incelenmelidir:

>>A=[ 2,4,6,8,10;12,14,16,18 20];


>>[bilgi,mesaj]=fopen('iris.dat','wt');%iris.dat dosyasi yazma amacli olusturulur
>>fprintf(bilgi,'%5f %5f %5f\n',A); %iris.dat dosyasina A verisi yazdiriliyor
>>qq=fopen('iris.dat','rt'); % iris.dat dosyasi okuma amacli aciliyor
>>[dizi,sayi]=fscanf(qq,'%f',Inf) %iris.dat verileri dizi adli degiskene ataniyor

dizi =
2
4
6
8
10
12
14
16
18
20

sayi =
10

Yukarıda elde edilen sonuçlara bakıldığında okutulan veri sayısının 10 olduğu görülmektedir. Aynı dizi tekrar
okutulmak istense, önce fclose komutu ile dizi’nin MATLAB ile bağlantısı kopartılıp sonra fopen komutu
kullanılarak MATLAB bağlantısının kurulması gerekir. Aşağıda hem bu işlemin nasıl yapılacağı gösterilmekte
hem de [2 5] komutu ile A matris,i gerçek şekli ile ekrana yazdırılmaktadır:

>>fclose(qq);
>>qq=fopen('iris.dat','rt');
>>[dizi,sayi]=fscanf(qq,'%f',[2 5])
dizi =
2 4 6 8 10
12 14 16 18 20
sayi =
10

3.2.5.6. textread komutu

13
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
textread komutu, sütun yapısı formatlı ASCII kodlu verileri dosyadan okumak için kullanılır. Aşağıda
gösterilen format kullanılarak uygulanır:

[x,y,w,z,..]= textread(‘dosya adi’,’format’,satirno)

Yukarıda görülen komut satırında ‘dosya adi’; açılacak dosyanın adını belirtir. ’format’; sütun-sütun
okunacak datanın yapısını gösterir. Bölüm 2’de fprintf komutunda tanıtılan format türleri kullanılır. Örnek
olarak %s ifadesi format yerine yazıldığında, okunacak dosyadaki verinin karakter türü olduğu belirtilmiş
olur. satirno; dosyadan okutulacak satır sayısını gösteren bir ifadedir. Kısaca, bu komut kullanılarak sayı
veya karakter dizilerinden oluşan dosyalar MATLAB ortamında okutulabilir.

Eğer açılacak dosya (ör: okuma.dat), work klasöründe değilde (örneğin) D sabit diskinde deneme adlı alt
klasör içinde ise yukarıdaki komut satırında ‘dosya adi’boşluğuna;

[x,y,w,z,..]= textread(‘D:\deneme\okuma.dat’,’format’,satirno)

yazılmalıdır.

Aşağıda textread komutuna ilişkin bir uygulama gösterilmektedir. Bir şirkete iş başvurusu yapan kişilere
ilişkin çeşitli bilgiler basvuru.dat adlı dosya içine yerleştirilecektir. Başvuran şahsa ilişkin bilgiler bu
dosyaya aşağıdaki sıra gözetilerek yerleştirilecektir:

Adı, Soyadı, Yaşı, Cinsiyeti, Medeni_hali, Egitim_durumu

Yukarıda sayılan bilgileri içeren dosya öncelikle bilgisayar ortamında açılmalıdır. Bunun için aşağıda belirtilen
adımların gerçekleştirilmesi gerekir:
- MS Windows Başlat çubuğuna ‘tık’lanıldığında açılan pencere içinden Çalıştır seçeneğini seç.
- Yukarıda belirtilen işlem yapıldığında açılan pencerede yer alan boşluğa notepad yaz ve Tamam tuşuna
‘tık’la.

Yukarıda belirtilen adımlar gerçekleştirildiğinde açılan Adsız-Notdefteri şekil 3.5’de gösterilmiştir.

Şekil 3.5 Şekil 3.6

Daha sonra başvuru bilgileri şekil 3.6’da gösterildiği gibi satır-satır Adsız adlı Not defterine girilmelidir. Bu
işlem de gerçekleştirildikten sonra şekil 3.6’da görülen Dosya menüsü içinde yer alan Save As seçeneği
kullanılarak açılan pencerede dosya ismi olarak basvuru.dat adı yazılıp, dosya C:/MATLAB7.01/work
klasörü içine yerleştirilmektedir.

Veri dosyalarında her karakter grubu bir sütun olarak algılanır. Bu açıdan bakıldığında şekil 3.6'da görülen veri
grubu, 6 sütun-2 satırdan oluşan bir matris gibi düşünülebilir.

Artık, basvuru.dat adı ile work klasörüne yerleştirilen veri dosyası textread komutu kullanılarak
okutulabilir. Bu dosyada yer alan veriler; yukarıda da bahsedildiği gibi 2 satır-6 sütundan oluşan bir matris
olarak düşünülmelidir. Aşağıda MATLAB ortamında basvuru.dat adlı veri dosyasının textread komutu ile
okutulmasını sağlayan komut satırı verilmiştir:

14
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
>> [adi,soyadi,yasi,cinsiyeti,Medeni_durumu,Ogrenim_durumu]=textread...
('basvuru.dat','%s %s %f %s %s %s')

Yukarıda verilen komut satırının uygulanması sonunda elde edilen ekran görüntüsü aşağıda gösterilmiştir:

adi =
'Ahmet'
'Yesim'
'Mehmet'
soyadi =
'Kuru'
'Yagiz'
'Tas'
yasi =
26
27
24
cinsiyeti =
'E'
'K'
'E'
Medeni_durumu =
'Evli'
'Bekar'
'Bekar'
Ogrenim_durumu =
'Universite'
'Lise'
'Lise'

Yukarıda verilen program satırında %s; karakter girişler, %f ise sayısal girişler için kullanılmaktadır. Eğer bazı
bilgilerin ekranda görülmesi istenmiyor ise format bildiren ifadenin içine '*' işareti yerleştirilmelidir:

>>[adi,soyadi,Ogrenim_durumu]=textread...
('basvuru.dat','%s %s %*f %*s %*s %s')

Yukarıda verilen komut satırının uygulanması sonunda elde edilen ekran görüntüsü aşağıda gösterilmiştir:

adi =
'Ahmet'
'Yesim'
'Mehmet'
soyadi =
'Kuru'
'Yagiz'
'Tas'
Ogrenim_durumu =
'Universite'
'Lise'
'Lise'

3.3.2. M uzantılı dosyaların MATLAB içinde farklı klasörlere yerleştirilmesi

Kullanıcı MATLAB ortamında oluşturduğu değişik M uzantılı dosyaları farklı klasörlere yerleştirmek isteyebilir.
Örneğin eğri çizimleri için geliştirdiği MATLAB dosyalarını ‘egri’ adlı bir klasöre, diferansiyel denklem
çözümleri için geliştirdiği dosyaları ise ‘diferansiyel’ adlı bir klasör içine yerleştirmek isteyebilir. Bundan amaç
daha sonraki çalışmalarda bu dosyaları aramadan kolayca bulmaktır. Bunun için önce MATLAB içinde work
klasörü içinde bir alt klasör açılır ve adına diferansiyel denir. Bu klasörün work adlı klasör içinde olması
şart değildir. Böyle bir tercih yapılmasının nedeni MATLAB bilgisayardan ‘uninstall’ edilse bile work

15
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
klasörünün bilgisayarda hala kalabilme özelliğindendir. MATLAB içinde açılan bir .m uzantılı dosya adresi
MATLAB arama motoruna tanıtılmaz ise Command Window ortamında bu dosya ismi yazıldığında bu
dosya bulunamaz. Bu nedenle yeni açılan bu klasörün adresi MATLAB’a öğretilmelidir.

Böyle bir işlem için MATLAB masaüstünde File menüsü içindeki Set Path.. seçeneği kullanılır. Örneğin
kullanıcı MATLAB ortamında hazırladığı harmonik problem çözümlerini içeren tüm M uzantılı dosyaları
harmonik adlı bir klasörde depolamak istesin. Bunun için ilk adım olarak yukarıda bahsedildiği gibi work adlı
klasör içinde harmonik adlı bir alt klasör açmak gerekir. Daha sonra bu klasör yolunu MATLAB’a tanıtmak
gerekmektedir. Bunun için ise File/Set Path.. yolu ‘fare’ ile seçilmelidir. Bu işlem yapıldığında
kullanıcının karşısına şekil 3.5’de görülen pencere çıkar.

Şekil 3.5

Açılan pencere içinde Add Folder seçeneğine ‘tık’lanıldığında kullanıcının karşısına şekil 3.6’da görülen
pencere çıkar. Bu pencerede Tamam seçeneği seçildiğinde şekil 3.7’de verilen pencere elde edilir. Bu pencerede
görülen sıralama MATLAB motorunun dosya aramadaki öncelik sırasını göstermektedir.

Şekil 3.6 Şekil 3.7

Eğer bu sıralama kullanıcı açısından uygun değilse kullanıcı Move Down seçeneğini kullanarak
<C:\MATLAB7\work\harmonik> yolunu alt sıralara taşıyabilir. Şekil 3.5’de Add with Subfolders
seçeneği kullanılırsa harmonik adlı alt klasörün altına eklenecek yeni alt klasörlerde bir daha tanıtıma gerek
kalmaksızın kendiliğinden arama motorunun arama yoluna eklenecektir. Eğer şekil 3.7’de görülen yollar içinden

16
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
bazıları kullanıcı tarafından artık kullanılmıyor ise Remove seçeneği kullanılarak bu yollar arama seçenekleri
içinden çıkartılabilir. Eğer Revert seçeneği kullanılırsa en son tanıtılan yol işlemi iptal edilir. Default
seçeneği kullanılırsa arama yolu varsayılan (eski) yollarına geri döner.

Örnek olarak A sürücüsünde Untitled2.m adlı bir MATLAB dosyası bulunsun. Kullanıcı bu dosyayı C
ortamına taşımadan A sürücüsü üzerinden çalıştırmak istediğinde karşısına şekil 3.8'de gösterilen bir pencere
çıkar. Bu pencerede kullanıcıya, mevcut klasör içinde Untitled2 adlı dosyanın bulunamadığı veya tanımlı
MATLAB yolu içinde bu dosyanın bulunamadığı mesajı verilerek bu dosyayı çalıştırmak için aşağıdaki üç yoldan
bir tanesinin seçilmesi gerektiği belirtilmektedir. Seçilen ilk tercih mevcut klasörün değiştirilmesi, ikinci tercih
MATLAB path (yolunun) değiştirilmesi ve bu yolun taramada (şekil 3.7) en üste yerleştirilmesidir. Son seçenek
ise bu yolun taramada en alta yerleştirilmesidir.

Şekil 3.8 Şekil 3.9

Şekil 3.10
Eğer şekil 3.9'da gösterildiği gibi ikinci seçenek fare ile işaretlenir ve OK tuşuna basılırsa, A sürücündeki
program çalışır. Kullanıcı MATLAB masaüstünde File menüsü içinde yer alan Set Path… seçeneğine 'tık'larsa
şekil 3.10 görüntüsü ile karşılaşılır. Burada görüldüğü gibi A sürücüsü MATLAB tarama motorunun yolunun ilk
arayacağı yere yerleştirilmiştir. Eğer şekil 3.10'da Save tuşuna basılmaz ise bu yol süreklilik kazanmaz diğer bir
ifade ile bir başka zamanda A sürücüsünde bir MATLAB dosyası çalıştırılması gerekse yukarıda belirtilen tüm
işlemlerin tekrar yapılması gerekir. Save tuşuna basıldığında kullanıcının bilmesi gereken diğer önemli bir
nokta da; arama motoru bir dosyayı ararken her seferinde A sürücüsüne bakacağından, disket sürücüsünde
sürekli bir disketin bulunması gibi anlamsız bir sonuç ortaya çıkacaktır. Sonuç olarak, kullanıcı sık sık A (ya da
diğer E, F gibi sabit olmayan) sürücülerden faydalanıyor ise en azından şekil 3.9'da gösterilen en son seçeneği
işaretlemesi daha uygun olacaktır. Böylece arama işleminde sabit olmayan sürücü en son taranır ve ancak sabit
sürücülerde aranan dosya bulunamaz ise sabit olmayan sürücüler aramaya dahil edilir.

Problem

17
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Şekil 4.15’de verilen devrede (büyük oklar çevre akım yönlerini göstermektedir);

v1 ( t )  2 *10 * sin wt ; v 2 ( t )  2 *15 * sin( wt  60)

olduğuna göre sürekli hal koşulları altında i1 ( t ) ve i 2 ( t ) akımları arasındaki faz farkını derece olarak
hesaplayan bir MATLAB programı yazınız (tüm ilk koşul değerleri 0 alınmıştır).

i1 ( t )

I cı I c2
i 3 (t) i 2 (t )

Şekil 4.15.

Çözüm

Devre çözüm yöntemi olarak çevre akımları yaklaşımı kullanılırsa (çevre akım yönleri saat ibresi dönüş yönü
alınmıştır);

R1  R 3  j * (XL1  XC)  (R 3  j * XL1)   I c1   10 * exp( j * 0) 


 I   
  ( R 3  j * XL1) R 2  R 3  j * (XL1  XL2)  c 2   15 * exp( j * pi / 3)

yazılabilir. Verilen devrede dal akımları ile çevre akımları arasında

i1 ( t )  I c1 ; i 2 ( t )  I c 2 ; i 3 ( t )  I c1  I c 2

ilişkisi bulunmaktadır. Aşağıdaki program i1 ( t ) ve i 2 ( t ) akımları arasındaki faz farkını derece olarak
hesaplamaktadır.

f=50;C=4; L1=5;L2=6; R1=1; R2=2; R3=3;


XL1=2*pi*f*L1; XL2=2*pi*f*L2; XC=1/(2*pi*f*C);
Z=[R1+R3+j*(XL1-XC) -(R3+j*XL1); -(R3+j*XL1) R2+R3+j*(XL1+XL2)];
V=[10*exp(j*0);-15*exp(-j*pi/3)];
akim=inv(Z)*V;i1aci=angle(akim(1));i2aci=angle(akim(2));
farkaci=(i1aci-i2aci)*180/pi

Yukarıda verilen programın çalıştırılması sonunda elde edilen açı farkları aşağıda gösterilmiştir;
>>
farkaci =
-37.1962
5.2.3. Bir matrisin elemanlarının bir kısmı ile diğer bir matris oluşturulması

MATLAB ortamında daha önce tanımlanmış bir matrisin bazı satır veya sütunlarını kullanarak yeni matrisler elde
etmek mümkündür. Aşağıdaki örnekler incelenmelidir;

>>h=[1 2 3 (‘enter’)
4 5 6 (‘enter’)
7 8 9] (‘enter’)
h=
1 2 3
4 5 6
7 8 9

18
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
>>A=h(:,2) (‘enter’)
A=

2
5
8

Yukarıda verilen örnekte h matrisinin 2 numaralı sütunu A matrisine atanmaktadır. h matrisinin satır hanesinde
yer alan (:) işareti, satırlar ile ilgili bir işlemin yapılmayacağını göstermektedir

>> B=h(1,:) (‘enter’)


B =
1 2 3

Yukarıda verilen örnekte h matrisinin 1 numaralı satırı B matrisine atanmaktadır. h matrisinin sütun hanesinde
yer alan (:) işareti, sütunlar ile ilgili bir işlemin yapılmayacağını göstermektedir

>>f=[1,2,3;4,5,6;7,8,9;10,11,12] (‘enter’)
f =
1 2 3
4 5 6
7 8 9
10 11 12

>>C=f(:,2:3) (‘enter’)
C =
2 3
5 6
8 9
11 12

Yukarıda verilen örnekte f(:,2:3) ifadesinde virgülün önünde yer alan (:) işareti, f matrisinde satır
işleminin yapılmayacağını göstermektedir. Virgülün sağında yer alan 2:3 ise f matrisinin 2. sütündan 3. sütuna
kadar tüm sütunlarının C matrisine atanacağını göstermektedir.

>> G=f(1:3,:) (‘enter’)


G =
1 2 3
4 5 6
7 8 9

Yukarıda verilen örnekte f(1:3,:) ifadesinde virgülün solunda yer alan 1:3 işareti, f matrisinde 1. satırdan 3.
satıra kadar tüm satırların G matrisine atanacağını göstermektedir. Virgülün sağında yer alan (:) işareti ise f
matrisinde sütun işleminin yapılmayacağını göstermektedir.

>> P=f(3:4,1:2) (‘enter’)

P =
7 8
10 11

Yukarıda verilen örnekte f(3:4,1:2) ifadesinde virgülün hem solunda hem sağında sayılar yer aldığı için, f
matrisinde hem satır hem de sütün işlemlerinin yapılacağı anlaşılmaktadır. f matrisinde 3. satırdan 4. satıra kadar
tüm satır elemanları ile f matrisinde 1. sütundan 2. sütuna kadar tüm sütun elemanlarının ortak olanlarının
(kesişim kümesi) p matrisine atanacağını göstermektedir.

Yukarıdaki işlem aşağıda verilen komut ile de gerçekleştirilebilir;

>> P=f([3 4],[1 2]) (‘enter’)

19
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
P =
7 8
10 11

veya

>> P=f([3,4],[1,2]) (‘enter’)


P =
7 8
10 11

Eğer f matrisinin yalnızca 1. ve 3. satırları ile 1. ve 3. sütunları kullanılarak E adlı yeni bir matris elde edilmek
istenirse aşağıdaki program satırı uygulanabilir;

>>E=f([1 3], [1 3]) (‘enter’)


E =
1 3
7 9

Yukarıdaki satır içinde 1 ve 3 rakamları arasına virgül yerleştirilir ise sonuç yine aynı olacaktır.

Kolon operatörü (:) kullanılarak da benzer işlemler yapılabilir. Aşağıdaki örnek incelenmelidir;

>> M=[0.9 0.8 0.82 0.9;0 1 4 0.7;0.6 0.4 0.6 0.1;8 0.1 0.7 0.4]
M =
0.9000 0.8000 0.8200 0.9000
0 1.0000 4.0000 0.7000
0.6000 0.4000 0.6000 0.1000
8.0000 0.1000 0.7000 0.4000

>>F=M([1:3],[2:2:4]) (‘enter’)
F =
0.8000 0.9000
1.0000 0.7000
0.4000 0.1000

Yukarıda verilen örnekte M matrisinin 1. (dahil) ve 3. (dahil) satırları arasında kalan satırları ile 2. (dahil)
sütunundan 4. (dahil) sütununa kadar olan sütunlar ikişer ikişer artırıldığında elde elden sütun elemanları ile F
matrisi oluşturulmaktadır.

Şu ana kadar verilen örneklerde ‘M(…’ ifadesinin içinde vektör kullanıldı. Aşağıda verilen örnekte ise vektör
yerine matris gösterimi kullanılmıştır;

>>K=M([2 1;4 2],[2 1;3 1]) (‘enter’)

Yukarıda verilen MATLAB satırının uygulanması sonunda nasıl bir sonuç elde edileceği aşağıda adımlar halinde
gösterilmiştir:

>>[2 1;4 2] (‘enter’)


2 1
4 2

matrisi MATLAB ortamında (daha önce de bahsedildiği gibi) dizi olarak tutulmaktadır. Diğer bir ifade ile 1.
sütunun arkasına 2. sütün, 2. sütunun arkasına 3. sütun ve 3. sütunun arkasına ise 4. sütun eklenir. Buna göre
yukarıdaki;

2 1
4 2

20
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
matrisi MATLAB ortamında dizi olarak (2 4 1 2) şeklinde saklanır. Bu açıklamadan sonra K=M([2 1;4
2],.. satırının MATLAB ortamında uygulanışı aşağıdaki gibi olacaktır:

0 1.0000 4.0000 0.7000


8.0000 0.1000 0.7000 0.4000
0.9000 0.8000 0.8200 0.9000
0 1.0000 4.0000 0.7000

Yukarıda görüldüğü gibi M matrisinin 2. satırı K matrisinin 1. satırı, M matrisinin 4. satırı K matrisinin 2. satırı, M
matrisinin 1. satırı K matrisinin 3. satırı, M matrisinin 2. satırı ise K matrisinin 4. satırı olmaktadır.

[2 1;3 1] matrisi MATLAB ortamında;

2 1
3 1

olduğuna göre yukarıda satır için yapılan işlemler sütun için yapılmalıdır. Buna göre yukarıda elde edilen son
matrisin sütunları K=M(….,[2 1;3 1]) işlemine maruz bırakılırsa 1. sütun yerine 2. sütun, 2. sütun yerine
3. sütun, 3. sütun yerine 1. sütun, 4. sütun yerine ise 1. sütun gelecektir:

1.0000 4.0000 0 0
0.1000 0.7000 8.0000 8.0000
0.8000 0.8200 0.9000 0.9000
1.0000 4.0000 0 0

Böylece;

>>K=M([2 1;4 2],[2 1;3 1]) (‘enter’)


K =
1.0000 4.0000 0 0
0.1000 0.7000 8.0000 8.0000
0.8000 0.8200 0.9000 0.9000
1.0000 4.0000 0 0

elde edilecektir.

Bir diğer örnek olarak aşağıdaki MATLAB satırı incelenmelidir;

>>T=K([1 5 6 8 3 12]) (‘enter’)


T =
1.0000 4.0000 0.7000 4.0000 0.8000 0

Yukarıdaki sonucu anlayabilmek için matris elemanlarının MATLAB ortamında dizi olarak saklanıldığının
tekrar hatırlanması gerekir:

K=(1 0.1 0.8 1 4 0.7 0.82 4 0 8 0.9 0 0 8 0.9 0)

Buna göre K matrisinin 1.,5.,6.,8.,3. ve 12. elemanlarının T vektörünü oluşturduğu anlaşılmaktadır.

Yukarıdaki gösterim kullanılarak K matrisinin bazı eleman değerleri değiştirilebilir:

>>K([1 5 6 8 3 12])=99 (‘enter’)


K =
99.0000 99.0000 0 0
0.1000 99.0000 8.0000 8.0000
99.0000 0.8200 0.9000 0.9000
1.0000 99.0000 99.0000 0

Görüldüğü gibi K matrisinin 1., 5., 6., 8., 3. ve 12. eleman değerleri 99 sayısı ile değiştirilmektedir.

21
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Matrisel gösterim kullanılarak da bir matrisin bazı satır ve sütun eleman değerleri değiştirilebilir. Aşağıdaki
örnek incelenmelidir:

>>K([1 3],[2 4])=0.99 (‘enter’)


K =
99.0000 0.9900 0 0.9900
0.1000 99.0000 8.0000 8.0000
99.0000 0.9900 0.9000 0.9900
1.0000 99.0000 99.0000 0

Yukarıda gösterildiği gibi K matrisinin 1. satır ve 3. satır ile 2. sütun ve 4. sütun elemanlarının içinde ortak
olanlarının (kesişim kümesi) değerleri 0.99 yapılmaktadır.

Yukarıdaki gösterimde bir çok eleman değeri bir tek eleman değeri ile değiştirildi. Aynı anda birden fazla
eleman değeri de değiştirilebilir. Aşağıdaki örnekler incelenmelidir:

>>K([1 3],[2 4])=[1 -1;2 -2] (‘enter’)


K =
99.0000 1.0000 0 -1.0000
0.1000 99.0000 8.0000 8.0000
99.0000 2.0000 0.9000 -2.0000
1.0000 99.0000 99.0000 0

Görüldüğü gibi K matrisinin 1. ve 3. satır ile 2. ve 4. sütun elemanlarının içinde ortak olanlarının (kesişim
kümesi) değerleri (4 adet eleman)

1 -1
2 -2

elemanları ile yer değiştirmektedir.

>> K(3, [2:4])=3:2:7 (‘enter’)


K =
99.0000 1.0000 0 -1.0000
0.1000 99.0000 8.0000 8.0000
99.0000 3.0000 5.0000 7.0000
1.0000 99.0000 99.0000 0
Eğer kesişim küme eleman sayısı ile yerlerine atanan eleman sayısı arasında uyumsuzluk olur ise hata bildirimi
ile karşılaşılacaktır.

MATLAB ortamında daha önce tanımlanmamış bir matris kolon gösterimi yardımı ile oluşturulabilir. Aşağıdaki
örnekler incelenmelidir:

>>s(1:3,1:4)=5 (‘enter’)
s =
5 5 5 5
5 5 5 5

5.2.4. Matrisleri birleştirerek yeni bir matris oluşturulması

MATLAB ortamında mevcut matrisleri kullanarak yeni bir matris oluşturulması işlemi yapılırken dikkat edilmesi
gereken en önemli nokta birleştirilen matrisler arasındaki boyut uyumudur. Burada matris oluşturmak için rand
komutundan faydalanılacaktır (rand komutunun her uygulanışında –matris boyutu aynı olsa bile-farklı
değerler içeren bir matris elde edileceği unutulmamalıdır) :

>> a1=rand(3,2) % 3 satır, 2 sütunluk rasgele elemanlardan oluşan matris oluşturuluyor


a1 =
0.4103 0.3529

22
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
0.8936 0.8132
0.0579 0.0099
>> a1=rand(3,4) (‘enter’)
a2 =
0.1389 0.6038 0.0153 0.9318
0.2028 0.2722 0.7468 0.4660
0.1987 0.1988 0.4451 0.4186

>> a1_2=[a1 a2] (‘enter’)


a1_2 =
0.4103 0.3529 0.1389 0.6038 0.0153 0.9318
0.8936 0.8132 0.2028 0.2722 0.7468 0.4660
0.0579 0.0099 0.1987 0.1988 0.4451 0.4186

>> a3=rand(3,6) (‘enter’)


a3 =
0.8462 0.6721 0.6813 0.5028 0.3046 0.6822
0.5252 0.8381 0.3795 0.7095 0.1897 0.3028
0.2026 0.0196 0.8318 0.4289 0.1934 0.5417

>> a1_2_3=[a1_2;a3] (‘enter’)


a1_2_3 =
0.4103 0.3529 0.1389 0.6038 0.0153 0.9318
0.8936 0.8132 0.2028 0.2722 0.7468 0.4660
0.0579 0.0099 0.1987 0.1988 0.4451 0.4186
0.8462 0.6721 0.6813 0.5028 0.3046 0.6822
0.5252 0.8381 0.3795 0.7095 0.1897 0.3028
0.2026 0.0196 0.8318 0.4289 0.1934 0.5417
5.2.5. MATLAB Command Window ortamında tanımlı bir matrisin bazı eleman değerlerinin Array
Editor ortamında değiştirilmesi

Şekil 5.1

Şekil 5.1’de Command Window ortamında K matrisi yazılır ve ('enter') tuşuna basılırsa Workspace ortamında
K adlı (sarı renkli) ikon ortaya çıkar. Bu ikon üzerine ‘fare’ ile gelinip çift adet ‘tık’lanıldığında şekil 5.1(a)’da
verilen Array Editor ekran görüntüsü ile karşılaşılır. Şekil 5.1(a)’da görülen K matrisinin

23
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 5.1(a) Şekil 5.1(b)

hangi eleman (yada elemanları) değiştirilecek ise ‘fare’ ile o elemanın üzerine ‘tık’lanılarak ortaya çıkan siyah
çerçeve içine istenilen (yeni) değer klavye ile girilir. Daha sonra değiştirilen eleman dışında kalan herhangi bir
eleman üzerine fare ile 'tık'lanılarak şekil 5.1(a)'da görülen siyah pencere kapatılır. Bu işlem bittikten sonra
Array Editor penceresinin File menüsü içinde yer alan Close Editor (veya Close K) seçeneği
kullanılarak bu ortamdan çıkılır. Böylece K matrisinin değeri değiştirilmiş olur. Eğer kullanıcı fare yardımı ile
şekil 5.1(b)'de gösterildiği gibi satırları seçer ve daha sonra farenin sağ tuşuna 'tık'larsa şekil 5.1(c)'de gösterilen
pencere açılır. Bu pencere içinde Delete komutu seçilirse şekil 5.1(d)'de verilen pencere ile karşılaşılır. Bu
pencere içinde Shift cell up seçeneğini kullanır ise şekil 5.1(e)'de verilen sonuç matris elde edilir. Burada
görüldüğü gibi işaretlenen satırlar '0' a eşitlenmiştir. Kullanıcı şekil 5.1(f)'gösterildiği gibi sütunları fare ile seçer,
yukarıda belirtilen işlemler sonunda şekil 5.1(d)'de verilen pencereye ulaşır ve Shift cell left komutuna
'tık'larsa, K matrisinin işaretlenen sütun elemanları '0'a eşitlenir (şekil 5.1(g)).

Şekil 5.1(c) Şekil 5.1(d)

Şekil 5.1(e) Şekil 5.1(f)

24
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Şekil 5.1(g)

5.2.6. Bir matrisin MATLAB Command Window ortamında boyutunun değiştirilmesi

MATLAB ortamında kayıtlı bir matrisin boyutunun değiştirilmesi iki türlü olabilir: Matris boyutu büyültülebilir
(genişletilebilir), matris boyutu küçültülebilir (daraltılabilir). Örnek olarak C1 matrisi aşağıdaki gibi verilmiş
olsun:

>> C1= [1 2 3;4 5 6] (‘enter’)


C1 =
1 2 3
4 5 6

C1 matrisi 2*3 boyutundadır. Örnek olarak aşağıdaki komut satırı yardımıyla C1 matrisi 3*3 boyutuna
genişletilebilir. Genişletilen C1 matrisinin yeni eleman değerleri (örneğin) sıfır olsun:

>> C1([3:3], [1:3])=0 (‘enter’)


C1 =
1 2 3
4 5 6
0 0 0

Eğer C1 matrisi daraltılmak istenir ise silinmek istenen satır ve (veya) sütun eleman değerleri boş diziye
atanmalıdır. Yukarıdaki C1 matrisinin (örneğin) 2. satırı silinerek 2*2 boyutuna indirgenmek istenirse,
aşağıdaki komut satırı uygulanmalıdır:

>> C1(2,:)=[ ] (‘enter’)


C1 =
1 2 3
0 0 0

5.2.6.1. Bir matrisin MATLAB Editor ortamında boyutunun değiştirilmesi

Şekil 5.2(a) Şekil 5.2(b)

Şekil 5.1'de görülen Array Editor ortamındaki K matrisinin 3. ve 4. sütunlarının silinmesi istense, önce şekil
5.2(a)'da gösterildiği gibi fare yardımı ile silinmesi gereken sütunlar işaretlenir. Daha sonra farenin sağ tuşuna
'tık'lanıldığında açılan pencere içinde (şekil 5.2(a)) Delete komutu seçilir. Bu işlem sonunda şekil 5.2(b)'de
gösterilen pencere açılır. Bu pencere içinde Entire column seçeneğine 'tık'lanılıp OK tuşuna basılırsa, şekil
5.2(c) ile verilen pencere elde edilir. Burada da görüldüğü gibi K matrisinin boyutu küçülmüştür. Eğer K
matrisinin şekil 5.2(d)'de gösterildiği gibi 3. ve 4. satırları silinmek isteniyor ise önce bu satırlar fare ile seçilir,
daha sonra yukarıda anlatıldığı gibi şekil 5.2(b) penceresine ulaşılır. Bu sefer bu pencerede Entire row
seçeneğine 'tık'lanılıp OK tuşuna basılırsa, şekil 5.2(e) ile verilen sonuç elde edilir.

25
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 5.2(c) Şekil 5.2(d)

Şekil 5.2(e) Şekil 5.2(f)

Eğer kullanıcı K matrisinin boyutunu artırmak istiyor ise şekil 5.2(f)'de göstertildiği gibi (örneğin 5. bir sütun
ilave etmek için) fare ile 5. sütundaki herhangi bir hücreye 'tık'layarak açılan siyah pencere içine klavye yardımı
ile istediği değeri girebilir. Benzer işlemi aynı sütunun diğer elemanları içinde yapmalıdır. Aksi halde diğer
eleman değerleri kendiliğinden '0'a atanır.

5.2.9. MATLAB ortamında tanımlı bir matrisin yeniden düzenlenmesi

Daha önce de bahsedildiği gibi boyutu ne olursa olsun tüm matrisler MATLAB arka planında bir boyutlu bir dizi
olarak saklanır. Kullanıcı MATLAB ortamında verilen bir matrisin boyunu (eleman değerleri aynı kalmak şartı
ile) değiştirmek istediğinde yukarıda bahsedilen gerçeği unutmamalıdır.

Örnek olarak 3*4 boyutunda olan N matrisi:

>> N=[1 2 3 4;5 6 7 8;9 10 11 12] (‘enter’)


N =
1 2 3 4
5 6 7 8
9 10 11 12

olsun. Bu matrisi MATLAB arka planında;

>>N(:) (‘enter’)
ans =
1
5
9
2
6
10
3
7
11
4
8
12

olarak saklanır. N matrisinin boyutu reshape komutu kullanılarak değiştirilebilir:

26
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

M=reshape (N,a,b): N matrisinin elemanlarını a satır sayılı b sütun sayılı M adlı matris içinde
saklar.
>>M=reshape(N,4,3) (‘enter’)
M =
1 6 11
5 10 4
9 3 8
2 7 12

Eğer MATLAB ortamında saklı M matrisinin satırları 180 derece ters çevrilmek istenirse fliplr komutu
kullanılmalıdır;

K=fliplr(M): M matrisinin satır elemanlarını 180 derece ters çevirerek K adlı matris içine atar:
>> K=fliplr(M)
K =
11 6 1
4 10 5
8 3 9
12 7 2

Eğer MATLAB ortamında saklı K matrisinin 1. satırı son satır, son satırı 1. satır yapılıp diğer satırlarda buna göre
düzenlenmek istenir ise flipud komutu kullanılmalıdır;

T=flipud(K): M matrisinin satır sıralamasını ters çevirerek T adlı matris içine atar:
>> T=flipud(K)
T =
12 7 2
8 3 9
4 10 5
11 6 1

Eğer MATLAB ortamında saklı T matrisi saatin dönüş yönünün ters istikametinde 90 derece döndürülmek istenir
ise rot90 komutu kullanılmalıdır:

S=rot90(T): T matrisini 90 derece saat ibresinin hareket yönünü ters yönünde döndürür ve
elde edilen matrisi S adlı matrise atar.
>> rot90(T)
ans =
2 9 5 1
7 3 10 6
12 8 4 11

5.2.12. Çok boyutlu matris yapıları

Buraya kadar kullanılan matrisler iki boyuta sahipti. MATLAB ortamında çok boyutlu matris yapıları da
tanımlıdır. Üç boyutlu bir matrisi tanımlamak için şöyle bir örnek verilebilir: Üç boyutlu matrisin ilk iki boyutu
kitabın bir sayfasını (x,y-düzlemi), üçüncü boyutu ise bu sayfadan sonraki (arkaya doğru) herhangi bir sayfayı
temsil etsin (z ekseni). Örnek olarak b1 matrisi 2 satır 3 sütun ve 2 sayfadan oluşan bir eser olsun. b1 matrisinin
ilk sayfası;

>> b1(:,:,1)=[1 3 5;7 9 11] (‘enter’)


b1 =
1 3 5
7 9 11

27
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

olsun. b1 matrisinin 2. sayfası ise;

>> b1(:,:,2)=[0 2 4;6 8 10] (‘enter’)


b1(:,:,2) =
0 2 4
6 8 10

olsun. Eğer MATLAB ortamında b1 matrisinin ne olduğu merak edilirse;

>> b1 (‘enter’)
b1(:,:,1) =
1 3 5
7 9 11
b1(:,:,2) =

0 2 4
6 8 10

elde edilir. Eğer b1 matrisinin boyutu merak edilirse;

>>ndims(b1) (‘enter’)
ans =
3

bulunur. b1 matrisinin ölçüsü merak edilirse;


>> size(b1) (‘enter’)
ans =
2 3 2

elde edilir. Böylece b1 matrisinin 2*3*2 ölçülerinde olduğu anlaşılmaktadır.

Dört boyutlu bir matrise şöyle bir örnek verilebilir: İlk iki boyut matrisin satır ve sütun boyutunu, 3 . boyut bu
matrisin kitabın hangi sayfasında bulunduğunu (diğer bir ifade ile sayfa numarasını), 4. boyut ise kitabın bir çok
kitabın sırayla yerleştirildiği rafta soldan (yada sağdan) kaçıncı kitap olduğunu belirten sayı olabilir. Eğer bu
örnek daha da geliştirilirse 5. boyut kitabın kaçıncı rafta olduğunu, 6. boyut rafı içeren dolap numarasını, 7.
boyut dolap sırasını (soldan yada sağdan), 8. boyut dolapları içeren oda numarasını, 9. boyut odanın bulunduğu
kat numarasını vb. temsil edebilir. Matrisin boyutu arttıkça b1 matrisini takip eden parantez içindeki virgül
sayısı da artacaktır.

Okuyucunun unutmaması gereken önemli bir nokta da, her bir boyut için yeni bir matris tanımlanması gereğidir.
Örnek olarak b1 eserinin 3 sayfalı olduğu düşünülürse 3. sayfaya ilişkin matrisin MATLAB’a tanıtılması gerekir.
Bunun için ise aşağıdakine benzer bir işlem gerçekleştirilmelidir:

>> b1(:,:,3)=[-2 13 44;62 83 110] (‘enter’)

5.5. Ekranın birden çok çizim için pencerelere ayrılması

subplot komutu ekranı birden çok alt çizim ekranlarına ayırır. Örnek olarak; eğer iki tane çizim aynı ekran
üzerinde yapılacak ise bunlar ya (yan yana) üst sağ ve üst sola yerleştirilir yada (üst üste) alt sağ ve alt sola
yerleştirilir. Eğer dört adet çizim yapılacak ise iki adet üste, iki adet alta çizim yapılabildiği gibi 4 tanesi yan
yana da çizdirilebilir. Bu komut; subplot(n,m,p) biçiminde kullanılır. Burada çizim yapılacak şekilleri bir
matrisin elemanları olarak görmek mümkündür. Bu durumda n; satır sayısını, m; sütun sayısını gösterir. p ise
çizilen alt pencerenin kaçıncı alt pencere olduğunu gösterir. Pencere sayısı soldan sağa ve yukarıdan aşağıya
doğru numaralanır. Örnek olarak, subplot(2,1,1) komutu yazıldığında bu komutu takip eden plot
komutu ile çizdirilecek olan şekil, (ekran bir matris olarak düşünülerek) matrisin (n=2) ikinci satır (m=1) birinci
sütununa yerleştirilir. Bu şekil (p=1) ilk şekil olacaktır. Örnek olarak subplot (222) yazıldığında bu komutu

28
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
takip eden plot komutu ile verilen şekil dört parçaya ayrılan ekranın (ikinci satır ikinci sütun) sağ altına
yerleştirilir ve bu ikinci şekil (p=2) olmalıdır.

5.6. Plot komutu kullanarak eğrinin daha dar aralıkta çizdirilmesi

Kullanıcı plot komutu ile çizdirmek istediği y=f(x) fonksiyonunda (program satırları içinde x’i daha geniş
aralıkta belirlese bile) x’i daha dar aralıkta da çizdirebilir. Aşağıdaki örnek incelenmelidir:

figure(1)
x=0:0.5:50;
y=3*x.^2;
plot(x,y);
title('ikinci dereceden egri cizimi');
xlabel('x'),ylabel('y'),grid;
figure(2)
plot(x(1:5),y(1:5));
title('ikinci dereceden egri cizimi');
xlabel('x'),ylabel('y'),grid;

Şekil 5.9 Şekil 5.10

Şekil 5.9’da (Figure No.1) x değişkeni 0:0.5:50 aralığında değiştirilmektedir. Şekil 5.10’da ise
(Figure No.2) x değişkeni ilk 5 değeri için çizdirilmektedir. Böylece kullanıcı x’in değişimi içinde istediği
değişim aralığını daha hassas olarak görme imkanına sahip olabilmektedir. Burada dikkat edilmesi gereken nokta
ise x ve y’nin incelendiği eleman sayılarının aynı boyutta olmasıdır (bu örnekte 5). Aksi halde kullanıcı hata
uyarısı ile karşılaşacaktır.
5.7. Figure penceresini kullanarak eğrinin eksenleri ile oynanması

Şekil 5.9’da gösterilen Figure No.1 penceresinde Edit seçeneği içine girilip Axes Properties alt
seçeneği ‘tık’lanıldığında şekil 5.11’de verilen görüntü ile karşılaşılır. Eğer X ekseni ile ilgileniliyor ise bu
pencerede X axis ikonuna 'tık'lanılarak açılan alt pencere içinde yer alan limits seçeneğinin sağ tarafına alt ve
üst X değerleri klavye ile girilebilir. Benzer işlemler arzu edilir ise Y (eğer çizim üç boyutlu ise Z) ekseni için de
yapılabilir. Font seçeneğine 'tık'lanıldığında ise açılan pencere ile eksenlerde kullanılan harflerin boyut ve
fontları seçilir. Şekil 5.11'de yer alan Auto seçeneği işaretlenirse, kullanıcı sınırların tespitini MATLAB'a bırakır.
X scale seçeneği ile X ekseninin değişiminin lineer mi yoksa logaritmik mi olacağı belirlenir. Bu pencere
içinde Title boşluğuna eğrinin ismi, Colors seçeneğinin yanındaki ilk kutucuk ile şeklin arka plan rengi,
ikinci kutucuk ile de X, Y ve Z eksenleri üzerindeki text formatındaki harflerin rengi belirlenir. Grid kutucuğu
hangi eksen için işaretlenir ise o eksen ızgara formunda oluşturulur.

29
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 5.11

Eğer kullanıcı Şekil 5.11'de Reverse seçeneğini işaretler ise eksen üzerindeki sayılar ters döndürülür, örneğin
X ekseni 0'dan 50'ye kadar sıralanırken, Reverse seçeneğine 'tık'lanıldığında X ekseni 50'dan 0'a doğru azalır.
Box komutu işaretlendiğinde ise Y'nin en üstteki değerinin ve X'in en sağdaki değerinin hizasındaki (kesik kesik)
çizgiler düz çizgiye döndürülür. Şekil 5.11'de Ticks..ikonuna 'tık'lanırsa şekil 5.12'de görülen pencere ile
karşılaşılır. Bu pencere içinde yer alan seçenekler kullanılarak X, Y ve Z ekseni üzerinde yer alan değerler
değiştirilebilir (Insert), silinebilir (Delete). Step by komutu ile seçilen eksen üzerindeki değerlerin artışı
belirlenebilir. Bu işlemler yapılırken fare yardımı ile şekil 5.12'de gösterilen tablo içindeki pencereye
'tık'lanılarak aktif hale gelen pencere içine klavye yardımı ile yeni bir değer yazılabilir (şekil 5.13).

Şekil 5.12 Şekil 5.13

30
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 5.14 Şekil 5.15

Eğer kullanıcı şekil 5.11'de fare yardımı ile eğri üzerine 'tık'larsa şekil 5.14 ile verilen pencere ile karşılaşılır. Bu
pencerede X Data Source seçeneğinin sağ tarafında yer alan boşlukta (Auto yazısının bulunduğu yer) ok
işaretine 'tık'lanıldığında, kullanıcının karşısına Workspace ortamında o anda yer alan değişkenlerin listesi
çıkar. Bu değişken listesinden bir tanesi seçilir ise bu seçilen diziyi oluşturan değerler, X eksenini oluşturan yeni
değişkenler olarak belirlenir.. Benzer şeyler Y (ve varsa Z) ekseni için söylenebilir. Plot type komutu ile eğri
(line ,bar, area, stem ve stairs) türlerinden birisine uygun şekilde çizdirilir. Line komutuna
tık'lanıldığında ise kullanıcının karşısına çizgi türleri (düz,kesik çizgi vb.) seçenekler çıkar. Marker komutu ile
de eğriyi oluşturan her bir noktanın (üçgen,kare, yuvarlak,yıldız vb.) şekillerden hangisine uygun olacağına karar
verilir (none seçeneği kullanılırsa klasik çizim şekli uygulanır). Line komutu hizasındaki renk seçim kutusu
yardımı ile çizginin rengi, Marker komutu hizasındaki renk seçim kutusu yardımı ile de işaret rengi belirlenir.
Figure Color seçeneği ile şekil 5.14'de x-y eksenlerinin ve şekil adının bulunduğu pencere rengi belirlenir.
Şekil 5.11'de Inspector kutusuna 'tık'lanıldığında, şekil 5.15'de gösterilen arka plan ayar penceresi ile
karşılaşılır. Bu pencere yardımı ile eksenlere ilişkin detaylı ayarlar gerçekleştirilir. Eğer şekil 5.14'de gösterilen
Inspector seçeneğine 'tık'lanılır ise şekil 5.16'da gösterilen iki boyutlu eğriye ilişkin arka plan ayar
seçenekleri ile karşılaşılır. Kullanıcı kendisine sunulan alternatifleri kullanarak eğri ve şekil hakkında uygun
değişiklikler gerçekleştirebilir.

Şekil 5.16 Şekil 5.17

Şekil 5.17'de ok ile gösterilen Data Cursor ikonuna 'tık'lanıldığında farenin imleci '+' işareti şeklini alır. Bu
durumda fare ile eğrinin hangi noktasına 'tık'lanılır ise o noktanın koordinatları eğri üzerinde gözükür (şekil

31
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
5.17). Eğer şekil 5.17'de X ve Y değerlerini içeren pencere üzerine fare ile gelinip sağ tuşuna 'tık'lanılır ise bir
pencere açılır (şekil 5.17). Açılan pencere içinde Display Style seçeneğinin altında yer alan Window
Inside Figure seçeneği işaretlenir ise X ve Y'nin aldığı değerler şeklin altında açılan yeni bir kutu içine
yazılır ve şekil 5.17'de görülen X–Y penceresi kapanır. Eğer kullanıcı birden fazla noktayı eğri üzerinde görmek
isterse, eğri üzerine gelinip farenin sağ tuşuna basıldığında açılan pencere içinden Create New Datatip
seçeneğini kullanmalıdır. Kullanıcı eğer, X-Y penceresini silmek isterse, eğri üzerine gelinip farenin sağ tuşuna
basıldığında açılan pencere içinde yer alan Delete Current Datatip komutunu, tüm X-Y pencerelerini
silmek isterse Delete All Datatip komutunu seçmelidir. Eğer şekil 5.17'de gösterilen alt pencere içinde
Export Cursor Data to Workspace… seçeneği işaretlenir ise eğri üzerinde işaretli tüm X-Y değerlerini
içeren bir yapı (struct) datası Workspace ortamında oluşturulur.

Şekil 5.18 Şekil 5.19

Şekil 5.18'de gösterildiği gibi Insert Legend ikonuna 'tık'lanılığında Figure 1 ekranında bulunan tüm
eğrilerin renk ve isimlerini açıklayan küçük bir pencere açılır. Şekil 5.19'da gösterilen (beş parmak işaretli) Pan
ikonuna 'tık'lanıldığında fare imleci beş parmak şeklini alır. İmleç, eğri üzerine getirilir ve farenin sol tuşuna
basılırsa beş parmak işareti eğriyi kavrayacak şekilde değişir. Bu durumda eğri (farenin sol tuşu bırakılmayacak)
fare hareketine bağlı olarak sağa-sola ya da yukarı-aşağı hareket ettirilebilir. Böylece eğrinin diğer bölgelerde
aldığı X ve Y değerleri de görülmüş olur. Pan ikonunun yanında yer alan rotate ikonu üzerine 'tık'lanıldığında
ise (özellikle üç boyutlu grafiklerde) eğriye çeşitli açılardan bakma imkanı elde edilir.

Şekil 5.19'da ikon menüsünün en sağında yer alan Show Plot Tools menüsüne 'tık'lanıldığında şekil 5.20'de
gösterilen pencere ile karşılaşılır. Bu pencere 3 adet alt pencere içerir. En altta yer alan Property Editor-
Text penceresi yerine (eğer fare ile eğrinin üzerine 'tık'lanırsa) Property Editor-lineseries
penceresi açılır. Eğer fare ile eksenin üzerine 'tık'lanılır ise en alta Property Editor-Axes penceresi gelir.
Altta yer alan bu pencereler ile ilgili olarak gerekli açıklamalar yukarıda verilmişti.

Şekil 5.21'de gösterildiği gibi Figure-Palette adlı alt pencerede 2D Axes ifadesinin sağ tarafında bulunan
kutucuğa 'tık'lanıldığında içinde beyaz renkli kutucukları barındıran bir pencere çıkar. Fare yardımı ile bu
pencerelerden bir kısmı seçilerek (subplot) alt çizim pencereleri açılır. Şekil 5.21'de iki tane alt alta çizim
penceresi oluşturacak şekilde beyaz kutucuk seçilmiştir. Bu işlem uygulandığında şekil 5.22'de görülen pencere
elde edilir. Artık bu pencere içine yeni bir çizim yapılabilir. Bunun için iki adet (yatay eksen ve düşey eksen
için) diziye ihtiyaç vardır. Şekil 5.22'de (altta boş olan) çizim penceresine 'tık'lanılır ise (sağ altta yer alan) Add
data ikonu aktif hale gelir. Bu ikon üzerine 'tık'lanıldığında şekil 5.23'de verilen pencere ile karşılaşılır. Bu
pencerede X Data Source yanında yer alan boşluğa (ok işaretine 'tık'lanıldığında Workspace ortamında yer
alan tüm değişkenlerin listesi içinden) F1 seçilerek, Y Data Source

yanında yer alan boşluğa da benzer şekilde F2 seçilerek OK tuşuna basılırsa (grid komutu da işaretlenerek)
şekil 5.24'de verilen pencere elde edilir.

32
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 5.20

Şekil 5.21

Şekil 5.21'de Figure Palette penceresinde 2D yerine 3D seçilseydi, yukarıda işin içine bir de Z boyutu
girecekti. Bu durumda F1 ve F2'ye ilaveten Z boyutu olarak bir başka dizi daha (örneğin:workspace
ortamından) bulunması gerekecekti.

33
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 5.22

Şekil 5.23

34
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 5.24

Şekil 5.25

Şekil 5.24'de Figure Palette penceresi içinde yer alan Variables ifadesinin üzerine 'tık'lanıldığında şekil
5.25'de gösterilen Annotations seçenek penceresine ulaşılır. Eğer elde edilen eğri pencereleri üzerinde bir
değişiklik yapılmak istenir ise (örneğin; ok çizmek,bir text ifadesi yazmak, şekil yerleştirmek vb. gibi) ilgili
işaretler üzerine 'tık'lamak gerekir.

6.2.1.6. Polinom integralinin alınması

polyint(a): Katsayıları a vektörü ile verilen bir (A) polinomun integralini hesaplar.

Örnek olarak; A= 2s 3  3s 2 - 5s  6 polinomunun integrali hesaplanmak istensin:

>> a=[ 2 3 –5 6]; (‘enter’)


>> polyint(a) (‘enter’)

35
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
ans =
0.5000 1.0000 -2.5000 6.0000 0

Elde edilen sonuca bakarak A polinomunun integrali;

B = ∫ 2s 3 + 3s 2 - 5s + 6)ds = 0.5s 4 + s 3 - 2.5s 2 + 6s

olmaktadır. polyint(a) ifadesinde integral sabiti ‘sıfır’ kabul edilmektedir. İntegral sabitinin ‘sıfır’ kabul
edildiği yukarıda bulunan çözüm vektörünün son elemanının ‘sıfır’ olmasından da anlaşılmaktadır.

polyint(a,sabit) Kullanıcı integral sabitini sıfırdan farklı bir değerde seçmek isterse bu komutunu
kullanmalıdır.

Örnek olarak integral sabiti 5 alınırsa;

>> a=[ 2 3 –5 6]; (‘enter’)


>> polyint(a,5) (‘enter’)
ans =
0.5000 1.0000 -2.5000 6.0000 5.0000

elde edilir.

6.6.1. MATLAB ortamında altprogram içinde altprogram kullanılması

MATLAB ortamında altprogram (ana altprogram) içinde bir veya daha çok sayıda altprogram (yardımcı
altprogram) kullanılabilir. Yardımcı altprogramlar ancak ana altprogram tarafından çağrılabilirler. Bunun
dışındaki bir yolla yardımcı altprogramlara erişim imkansızdır. Ana altprogram içinde yardımcı altprogram
kullanılmasının nedeni yeni altprogram dosyaları (m file) açmamak, takip edilmesi kolay olan altprogramlar
yazabilmektir.

Problem 6.1…..

(a / a 1 ) x 2  (b / b1 ) x  (c / c1 )  0

denkleminde a=1; b=5; c=6 değerlerini almaktadır. a 1 , b1 , c1 değerleri ise;

3a 1 - 4  0
b1  5  0
2c 1  2  0

denklemlerini sağlamaktadır. Verilen ikinci dereceden denklemin köklerini bulan MATLAB programını yazınız.

Çözüm

>> a=1; (‘enter’)


>> b=5; (‘enter’)
>> c=6; (‘enter’)
>> [x1 x2]=kokbul(a,b,c) (‘enter’)

Yukarıda adı geçen kokbul.m adlı altprogram aşağıda verilmiştir:

function [h1, h2]=kokbul(k1,k2,k3) %1


w2=[3 -4]; %2
a1=kokbul2(w2); %3
w3=[1 5]; %4
a2=kokbul2(w3); %5

36
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
w4=[2 2]; %6
a3=kokbul2(w4); %7
a=k1/a1; %8
b=k2/a2; %9
c=k3/a3; %10
x=-b/(2*a); %11
y=sqrt(b^2-4*a*c)/(2*a); %12
h1=x+y; %13
h2=x-y; %14
function u1=kokbul2(n1) %15
u1=roots(n1); %16

Yukarıda görüldüğü gibi ana altprogram içinde 1 adet yardımcı altprogram kullanılmaktadır. Ana altprogram 16
satırdan, yardımcı altprogram ise 2 satırdan oluşmaktadır. Command Window ortamında verilen 4 satırın
çalıştırılması sonunda elde edilen kök değerleri aşağıda gösterilmiştir:

>>
x1 =
3.5726
x2 =
-2.2393

mean(x): x bir vektör ise bu komut ile x’in elemanları toplanır ve eleman sayısına bölünür.
Eğer x bir matris ise x’in her bir sütununun ortalama değerini hesaplar;
>> a=[1 2 3;2 4 6;4 8 12] (‘enter’)
a =
1 2 3
2 4 6
3 6 12
>> mean(a) (‘enter’)
ans =
2.3333 4.6667 7.0000
>> x=[2 4 6] (‘enter’)
x =
2 4 6
>> mean(x) (‘enter’)
ans =
4

geomean(x): x vektörünün ‘geometrik ortalama’ değerini hesaplar.

x=[ x 1 , x 2 , x 3 ,....x n ]

vektörünün geometrik ortalaması;


1
n
( ∏ xi ) n
i =1

ifadesi ile hesaplanır. Aynı işlem MATLAB ortamında aşağıdaki gibi yapılır:

>>a=[1 2 3 2 4 6 4 8 12] (‘enter’)


>>geomean (x)
ans =
3.6342

harmmean(x): x vektörünün ‘harmonik ortalama’ değerini hesaplar.

x=[ x 1 , x 2 , x 3 ,....x n ]

37
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

vektörünün harmonik ortalaması;


n
n 1

i =1 x i

ifadesi ile hesaplanır. Aynı işlem MATLAB ortamında aşağıdaki gibi yapılır:

>> a=[1 2 3 2 4 6 4 8 12] (‘enter’)


>>harmmean (x)
ans =
3.2727

trimmean(x,k): x vektörünün (%k)/2 lik maksimum ve minimum değerlerinin atılması ile elde
edilen yeni vektörün ortalamasını bulur.

>> a=[1 2 3 2 4 6 4 8 12] (‘enter’)


>> trimmean(a,50) (‘enter’)
ans=
3.5000

Yukarıda a vektörünün %50 kırpılmış değeri hesaplanmaktadır.

median(x) : x bir vektör ise x’in alt ve üst sınırı arasındaki ‘orta değer’ (değerler sıralandığında
ortada bulunan) elemanını bulur. Eğer x bir matris ise x’in her bir sütununun içinde
o sütundaki sayıların mean(x) değerini hesaplar;

>> c =[5 2 3]; (‘enter’)


>> median(c) (‘enter’)
ans =
3
>>b =[1 8 3;2 4 6;4 8 12]; (‘enter’)
>> median(b) (‘enter’)
ans =
2 8 6

Yukarıda görüldüğü gibi b matrisinin ilk sütunu içindeki sayılar arasında 1 ile 4
arasında olup bu sütunun ortalama değerine en uygun olan sayı 2 olmaktadır. İkinci
sütun için bu sayı 8, üçüncü sütun için ise 6 olarak görülmektedir.

median(x,k) : x bir matris olmak üzere k=1 ise x’in orta değeri x’in sütunları üzerinde
hesaplanır. k=2 ise x’in her bir satırı üzerinde orta değer hesaplanır;

sort(x) : x bir vektör ise bu komut ile x’in elemanları sıralanır. x bir matris ise bu komut ile
x’in sütunları küçükten büyüğe sıralanır;

>> x=[8 1 5;2 0 3;9 7 6] (‘enter’)


x =
8 1 5
2 0 3
9 7 6

>> sort(x) (‘enter’)


ans =
2 0 3
8 1 5
9 7 6

38
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

sort (x,1) : x matrisinin sütunlarını küçükten büyüğe sıralar.

sort (x,2) : x matrisinin satırlarını küçükten büyüğe sıralar.

8.1. Mantık işlemleri

Mantık yada ilişki içeren ifadelerde; eğer giriş verileri sıfırdan farklı ise çıkış değerleri doğru (1), giriş verileri
sıfır ise çıkış değerleri yanlış (0) olarak alınır. Bu anlamda çıkış değerleri mantıksal (lojik) değerler (1 ve 0 gibi)
almaktadır. MATLAB ortamında kullanılan karşılaştırma işaretleri Tablo 8.1’de verilmiştir;

Tablo 8.1
İşaret Anlamı
< Daha küçük
<= Daha küçük veya eşit
> Daha büyük
>= Daha büyük veya eşit
= = Eşit
~ = Eşit değil

Aşağıdaki MATLAB yazılımları incelenmelidir;

>>A=1:9 (‘enter’)
A=
1 2 3 4 5 6 7 8 9
>>B=8-A (‘enter’)
B=
7 6 5 4 3 2 1 0 -1
% A vektoru icinde 4’e esit ve bundan kucuk olan sayilar 1'e,
% digerleri ise 0'a esitleniyor
>>sec1= A<=4 (‘enter’)
sec1=
1 1 1 1 0 0 0 0 0
% A vektoru icinde B den buyuk olan sayilar 1'e
% digerleri ise 0'a esitleniyor
>>sec2= A>B (‘enter’)

sec2=
0 0 0 0 1 1 1 1 1
% A vektor icinde B ye esit olan sayilarin 1'e
% digerleri ise 0'a esitleniyor
>>sec3= (A= =B) (‘enter’)
sec3=
0 0 0 1 0 0 0 0 0

% B vektorunden, A vektorunun icindeki


% degeri 2 den buyuk sayilarin birbirlerinden çıkartılması
%
>>C=A>2 % 2’den büyük sayılar 1'e, digerleri ise 0'a esitleniyor
C =
0 0 1 1 1 1 1 1 1
>>D=C.*A % A nın içinde 2 den büyük olmayan sayılar sıfıra
% eşitleniyor, D adlı vektore ataniyor
D =
0 0 3 4 5 6 7 8 9
>>sec4= B-D % istenen amaca ulaşılıyor (‘enter’)

39
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
sec4=
7 6 2 0 -2 -4 -6 -8 -10

Yukarıda verilen işlemlerde görüldüğü gibi ‘=’ işareti ile ‘= =’ işareti arasında fark vardır. ‘= =’ işareti iki
değişkeni karşılaştırır. Eğer iki değişken aynı değeri alır ise sonuç ‘1’, farklı ise sonuç ‘0’ olur.

Diğer taraftan ‘=’ işareti ise ‘atama’ için kullanılır. ‘=’ işaretinin sağ tarafındaki sayı bu işaretin sol tarafındaki
değişkene atanır.

8.3.2. Mantıksal kontrol işlemcileri

Tablo 8.4’de gösterilen mantıksal kontrol işlemcileri, her iki yanına yerleştirilen ve (1*1) boyutunda olan
ifadenin doğru veya yanlış olmasına göre 1 veya 0 üreten MATLAB komutlarıdır.

Tablo 8.4
İşaret Lojik karşılığı
&& ve
|| veya

Kontrol işareti && ise ve bu işaretin her iki tarafındaki (1*1) boyutundaki ifadeler doğru ise sonuç 1, aksi halde
0 olacaktır. Eğer | | işaretinin her iki tarafındaki ifadelerden en az biri doğru ise sonuç 1, aksi durumlarda sonuç 0
olacaktır. Aşağıdaki örnekler incelenmelidir:

>>a=2; (‘enter’)
>>b=3; (‘enter’)
>>(a<3)&&(b>4) (‘enter’)

ans =
0
>>m=[1 2]; (‘enter’)
>>n=[3 4]; (‘enter’)
>>(m<3)&& (n>2) (‘enter’)
??? Operands to the || and && operators must be convertible to logical
scalar values.

Yukarıda görüldüğü gibi m ve n vektörleri (1*1) boyutunda olmadığı için hata uyarısı ile karşılaşılmıştır.

find(x) : x bir vektör ise bu komut ile x ‘in sıfır olmayan elemanlarının sırası oluşturulan
vektöre yazılır. Eğer x bir matris ise bu komut x matrisini sütun sütun tarayarak (b
matrisinin MATLAB arka planında bir dizi olarak saklandığı unutulmamalıdır) sıfır olmayan
elemanların sırasını vektör olarak (sütun vektör) yazar.

>> a=[1 0 -1 6]
a=
1 0 -1 6
>> find(a)
ans =
1 3 4
>> b=[0 1 3 -1;
0 1 0 3;
0 2 0 1;
0 -4 2 0];
>> find(b)
ans =
5
6
7
8

40
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
9
12
13
14
15

find komutunun yanındaki ifade lojik bir fonksiyon ise bu komutun karşılaştırma amaçlı kullanılması da
mümkündür. Aşağıdaki örnekler incelenmelidir:

>>[satir,sutun]=find(b==2) (‘enter’)
satir =
3
4
sutun =
2
3

Yukarıdaki program satırında b matrisinin 2’ye eşit elemanlarının adresleri aranmaktadır. Komutun
uygulanmasından elde edilen sonuçlara bakıldığında b matrisinde iki tane 2 sayısı bulunduğu anlaşılmaktadır.
İlk 2 sayısı 3. satır 2. sütunda, ikinci 2 sayısı ise 4. satır 3. sütunda bulunmaktadır.

Eğer b matrisinde 2’den büyük elemanların adresleri merak edilirse aşağıdaki komut satırı uygulanmalıdır:

>> [satir,sutun]=find(b>2) (‘enter’)


satir =
1
2
sutun =
3
4

Elde edilen sonuçlara bakarak b matrisinde 1. satır 3. sütunda ve 2. satır 4. sütununda 2’den büyük elemanlar
bulunmaktadır. Eğer kullanıcı bu eleman değerlerini merak ederse aşağıdaki komut satırlarını kullanabilir:

>> b(1,3) (‘enter’)


ans =
3
>> b(2,4) (‘enter’)
ans =
3

Eğer kullanıcı b matrisi içinde -5’den büyük, -1’den küçük eleman (yada elemanların) adreslerini merak ederse
aşağıdaki komut satırını kullanabilir:

>> [satir,sutun]=find(b>-5 & b<-1) (‘enter’)


satir =
4
sutun =
2

Elde edilen sonuca göre yukarıdaki şartı sağlayan bir adet eleman bulunmaktadır ve bunun adresi ise 4. satır 2.
sütundur.

Aşağıda verilen örnekte ise b matrisinin 2’den büyük elemanları 6 sayısına atanmaktadır:

>>b(find(b>2))=6 (‘enter’)
b =
0 1 6 -1
0 1 0 6

41
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
0 2 0 1
0 -4 2 0

Aşağıdaki örnekte ise b’nin 1’den büyük ve 3’ten küçük elemanları 8 yapılmaktadır:

>> b(find(b>1 & b<3))=8 (‘enter’)


b =
0 1 3 -1
0 1 0 3
0 8 0 1
0 -4 8 0

Problem

Kullanıcı, klavye yardımı ile bir matris girecektir. Yazılan MATLAB programı ile bu matristeki pozitif sayılar bir
matrise, negatif sayılar bir diğer matrise ve kompleks sayılar ise başka bir matrise atanacaktır.

Çözüm

A=input('[....;....;...]seklinde bir matris giriniz=')


k=find(imag(A)); %matristeki komplex sayıların yeri bulunuyor
b=A(k); %komplex sayıların yeri b ye atanıyor
disp('simdi ekranda matrisin sadece negatif sayıları gözüksün')
A1=(A<0).*A
disp('simdi de ekranda sadece matrisin pozitif sayıları gözüksün')
A2=(A>0).*A
disp('simdi ise ekranda sadece komplex sayilari görelim')
A3=zeros(size(A)); %A ile aynı boyutta sıfırlık matris oluşturuluyor
A3(k)=b

Yukarıda verilen programın çalıştırılması sonunda elde edilen Command Window ekran görüntüsü aşağıda
verilmiştir:

[....;....;...]seklinde bir matris giriniz=[2 3 i;4 -6 9;-3i 6 9]


A =
2.0000 3.0000 0 + 1.0000i
4.0000 -6.0000 9.0000
0 - 3.0000i 6.0000 9.0000

simdi ekranda matrisin sadece negatif sayıları gözüksün


A1 =
0 0 0
0 -6 0
0 0 0

simdi de ekranda sadece matrisin pozitif sayıları gözüksün


A2 =
2 3 0
4 0 9
0 6 9

simdi ise ekranda sadece komplex sayilari görelim


A3 =
0 0 0 + 1.0000i
0 0 0
0 - 3.0000i 0 0
>>

Problem…..

42
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
rand komutu ile K adlı 10*8 boyutunda bir matris üretiniz. rand komutu ile üretilen bu matrisin 0.2 den
küçük elemanların değerleri ve adresleri veren M adlı bir matris oluşturulacaktır. M matrisinin ilk sütunu 0.2'den
küçük sayının K matrisinin hangi satırında bulunduğunu, M matrisinin ikinci sütunu 0.2'den küçük sayının K
matrisinin hangi sütununda bulunduğunu ve M matrisinim üçüncü sütunu ise 0.2'den küçük sayının değerini
verecektir. Bu işlem yapan MATLAB programını yazınız.

Çözüm
>>
K=rand(10,8)
[a b]=find(K<0.2); % a satır numarası, b sütun numarası
ss=length(a); % a nın satır sayısı
for u=1:ss
c(u,1)=K(a(u,1),b(u,1)); % a ve b adreslerindeki K eleman degerlerini
% verir
end
M=[a b c] % arzu edilen sonuç matrisi

8.10. break komutu

For döngüsü içinde değişken son değerine ulaşmadan döngüden çıkmak için break komutu kullanılabilir.

Aşağıda verilen dosyada, A matrisinin içindeki ilk 0 aranmakta, sayı yakalandığında bu sayının bulunduğu satır
ve sütun numarası saptanıp iç içe olan for döngüleri durdurulmakta ve hesaplama 2. end komutunun altından
devam etmektedir. Programın en altında ise 0 sayısının bulunduğu satır ve sütun numaraları yazdırılmaktadır.

A=[1 5 6;7 -3 9;-4 0 8];


for t=1:size(A,1) %t; 1'den A'nın satır sayısına kadar artıyor
for g=1:size(A,2) %g; 1'den A'nın sütun sayısına kadar artiyor
if A(t,g)==0
satir_numarasi=t;
sutun_numarasi=g;
break;
end
end
end
satir_numarasi
sutun_numarasi

Not: Yukarıda verilen programın en başına tic, en sonuna ise toc yazılır ve program tekrar çalıştırılırsa
elapsed_time=0.16 elde edilir. Bunun anlamı; tüm işlemlerin 0.16 saniye içinde bitirildiğidir. Eğer
yukarıda verilen programda break komutu kaldırılır, program tekrar çalıştırılır ve zamana tekrar
bakılırsa, 0.22 saniye elde edilir. Böylece break komutu ile program kesilerek kullanıcıya zaman
tasarrufu sağlanmaktadır.

8.11. continue komutu

Yukarıda bahsedildiği gibi bir döngü sona erdirilmek istendiğinde break komutu kullanılmaktadır. Bazen
döngünün durdurulması yerine yalnızca döngünün o an geçerli olan değişkeni bir atlatıp döngüye devam etmek
istenebilir.

Aşağıda verilen programda B matrisinin tüm elemanları 2’ye bölünmekte fakat mutlak değeri 6’dan büyük olan
A matrisi elemanlarına bu işlem uygulanmamakta, bu durum ile karşılaşıldığında continue komutu ile
döngüde o an geçerli olan değişkenin aldığı değer atlanmakta ve döngüye devam edilmektedir, son olarak A
matrisinin son hali ekrana yazdırılmaktadır..

B=[2 5 11;7 -3 9;-4 0 8];


for t=1:size(B,1)
for g=1:size(B,2)

43
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
if abs(B(t,g))>6
continue
end
B(t,g)=B(t,g)/2;
end
end
B

Yukarıdaki programın uygulanması sonunda elde edilen B matrisi değeri aşağıda verilmiştir:
>>
B =
1 2.5 11
7 -1.5 9
-2 0 8
>>

Aşağıda verilen MATLAB programında A vektörünün sıfıra eşit veya sıfırdan küçük değerli elemanları için (10
tabanına göre) logaritma işlemi yapılmamakta (bu şarta uygun sayılar A vektörü içinde sayılar aynen
bırakılmakta), yalnızca A’nın pozitif değerli elemanları için A vektör elemanlarının logaritması alınmaktadır:

A=[0 1 -5 2 8 -7];
for n=1:length(A)
if A(n)<=0
continue
end
A(n)=log10(A(n))
end
A % A vektorunun pozitif elemanlarının
% logaritmaları alındığında elde edilen yeni A vektoru

Yukarıda verilen programın çalıştırılması sonunda elde edilen A vektör eleman değerleri aşağıda gösterilmiştir:

>> A =
0 0 -5.0000 0.3010 0.9031 -7.0000

8.12. return komutu

Ana programdan alt programa dallanıp alt program içinde istenilen şart gerçekleştiğinde alt programdaki
döngüden çıkıp tekrar ana programda kalındığı yerden devam edilmek isteniyor ise alt program içinde return
komutu kullanılmalıdır. Aşağıda verilen örnekte Command Window ortamında A matrisi tanıtılmakta, bul.m
adlı bir alt program içine dallanılmaktadır. Alt program içinde A matrisinin (alt programdaki karşılığı B) ilk sıfır
olan elemanı bulunmakta return komutu yardımı ile derhal alt program sona erdirilip Command Window
ortamında ana program kaldığı yerden devam etmektedir. Daha sonra ana programda ilk 0 elemanının
bulunduğu A matrisinin satır ve sütun numaraları yazdırılmaktadır.

>> A=[1 5 6;7 -3 9;-4 0 8]; (‘enter’)


>>[satir_no,sutun_no]=bul(A) (‘enter’)

Aşağıda bul.m adlı alt program verilmiştir:

function [satir_no, sutun_no]=bul(B)


for t=1:size(B,1)
for g=1:size(B,2)
if B(t,g)==0
satir_no=t;
sutun_no=g;
return;
end

44
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
end
end
Yukarıda verilen Command Window ortamındaki iki program satırının çalıştırılması ile aşağıdaki sonuçlar elde
edilir.
>>
satir_no =
3
sutun_no =
2

8.13. error komutu

Kullanıcı bazen programı belli koşulları gözeterek yazar. Eğer program içinde kullandığı değerler bu koşulları
sağlamaz ise program çalışabilir fakat sonuçları doğru olmayabilir. Kullanıcı ileride bu programı çalıştırdığında
bu koşuları unutabileceğini düşünerek yazdığı program içine bir komut yerleştirerek hem programın durmasını
hem de neden durması gerektiğine dair mesajın (hatırlatmanın) ekrana yazılmasını istediğinde (veya buna benzer
amaçlar için) error komutunu kullanabilir.

Örnek olarak kullanıcı A adlı bir matris içine pozitif doğru akım bilgileri girmekte ve yazdığı
ortalama_bul.m adlı alt program ile A vektör matrisinin ortalamasını hesaplamaktadır. Bilindiği gibi pozitif
doğru akım değeri asla pozitif değerden negatif değere geçmez. Eğer A vektör matrisi içinde herhangi bir eleman
değeri negatif ise kullanıcı error komutu yardımı ile hem programı durdurabilir hem de durdurma sebebini
ekrana yazdırabilir. Yine bilinmelidir ki içinde negatif sayı barındıran bir matrisin ortalaması (mean komutu
yardımı ile) hesaplanabilmektedir. Diğer bir ifade ile böyle bir programda error komutu kullanılmadığında
herhangi bir hata ile karşılaşılmaz. Bu programı kesmek kullanıcının bir tercihidir.

>> A=[1 5 6 7 -3 9 4 0 8]; (‘enter’)


>> ortalama=ortalama_bul(A) (‘enter’)

Aşağıda ortalama_bul.m adlı alt program verilmiştir:

function d=ortalama_bul(B)
for t=1:size(B,1)
for g=1:size(B,2)
if B(t,g)<0
error ('matris elemanlarından hic biri negatif olamaz')
end
end
end
d=mean(B);

Yukarıda verilen iki program satırının uygulanması sonunda elde edilen sonuçlar aşağıda verilmiştir. Görüldüğü
gibi programın çalışması error komutu kullanılarak durdurulmakta ve ortalama hesabı yaptırılmamaktadır.
>>
??? Error using ==> ortalama_bul
matris elemanlarından hic biri negatif olamaz

8.14. warning komutu

error komutunda kullanıcının istediği mesaj ekrana yazılmakta ve program durdurulmaktadır. warning
komutunda ise kullanıcının istediği mesaj ekrana (uyarı olarak) yazılmakta fakat programın çalışması devam
ettirilmektedir. Bu komutun uygulamasına örnek olarak yukarıda verilen ortalama_bul.m adlı alt
programda error komutu yerine warning yazılıp uyarı metni değiştirilebilir. Aşağıdaki alt program
incelendiğinde A vektörünün ortalaması alınmakta fakat uyarı ifadesi ile de kullanıcı uyarılmaktadır:

function d=ortalama_bul(B)
for t=1:size(B,1)
for g=1:size(B,2)

45
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
if B(t,g)<0
warning (['matris elemanlarından hic biri negatif olamaz'...
‘ fakat yine de ortalama alınmaktadır’])
end
end
end
d=mean(B);

Aşağıda verilen satırlar uygulandığında;

>> A=[1 5 6 7 -3 9 4 0 8]; (‘enter’)


>> ortalama=ortalama_bul(A) (‘enter’)

Warning: matris elemanlarından hic biri negatif olamaz fakat yine de


ortalama alınmaktadır
ortalama =
4.11111111111111

elde edilir.

8.15. eval komutu

Bu komut MATLAB ortamında çeşitli biçimlerde kullanılabilir. Aşağıda verilen örnekler incelenmelidir:

>>x=0:1:3; (‘enter’)
>>y=eval(‘2*x.^2+sin(2*x)’) (‘enter’)
y =
0 2.90929742682568 7.24319750469207 17.72058450180107

Yukarıdaki satırlarda x değerleri iki tırnak içinde verilen fonksiyonda yerine konularak elde edilen değerler y
vektörüne atanmaktadır.

for n=1:3
eval(['A' num2str(2*n) ' = [n ;n-1 ;2*n]'])
end

Yukarıda verilen program uygulandığında aşağıdaki sonuçlar elde edilir:

>>
A2 =
1
0
2
A4 =
2
1
4
A6 =
3
2
6

Açıklama: num2str(x) komutu ile x sayısı MATLAB ortamında karakter gibi değerlendirilir. Bu nedenle
yukarıda verilen program satırında (2*n) sayısı A adlı karakterle birleştirilebilmektedir.

eval komutunun bulunduğu satırda yer alan [n ;n-1 ;2*n] vektör matrisi n döngüsü ile değer
değiştirmektedir.

karakter='<=';

46
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
A=[-1 4 6;11 -8 -6];
for n=1:2
for m=1:3
if eval([num2str((A(n,m))) karakter num2str(0)])
A(n,m)=abs(A(n,m));
end
end
end
A

Yukarıda verilen programda ise A matrisinin elemanları içinde 0’a eşit veya küçük olanın mutlak değeri
alınmakta ve son olarak yeni hali ile A matrisi ekrana yazdırılmaktadır. Programın uygulanması sonunda elde
edilen A değeri aşağıda gösterilmiştir;
A =
1 4 6
11 8 6
>>

Yukarıda verilen programdaki eval komutunun bulunduğu satır;

if eval([‘A(n,m)’ ‘<=’ ‘0’])

biçiminde de yazılabilirdi. Bu durumda da A matrisi aynı değeri alırdı.

8.16. feval komutu

feval(‘fonksiyon adı’,degerler):’degerler’ bölümünde yer alan sayının aldığı değeri


‘fonksiyon adı’ kısmında yazılı olan fonksiyona
koyarak hesaplatan bir MATLAB komutudur.

‘fonksiyon adı’ kısmında yer alan fonksiyon MATLAB arka planında tanımlı (sin,cos,tan, gibi)
fonksiyon ise;

>>b= feval(@sin,pi/3) (‘enter’)


b =
0.8660

program satırlarında görüldüğü gibi pi/3 açısı (radyan olarak) sin(x) ifadesinde x yerine konularak sin(pi/3)
değeri hesaplanmakta ve sonuç b değerine atanmaktadır.

feval komutunun alt program uygulamaları ile ilgili örnekler ise Bölüm 10’da verilmiştir.

Problem

Öyle bir MATLAB programı yazın ki, hangi dereceden olursa olsun bir polinomun tüm köklerini hesaplayabilsin.
Yazılan program içinde polinomun katsayıları vektör olarak verilmeyecek, ekran üzerinden klavye ile
girilecektir. Yazılan program satırları arasında aşağıdaki satırlar da bulunacaktır. Program kullanıcının belirlediği
kadar denklemi ard arda çözebilecektir. Aşağıda yazılacak programa ilişkin ara satırlar gösterilmiştir:
…..
disp(‘kac adet denklem koku bulmak istiyorsunuz?’)
…..
disp('polinomun en buyuk derecesini gir')
….
….
disp('en buyuk dereceden baslayarak sıra ile katsayilari giriniz')
…..
disp('inci denklemin kokleri')

47
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
(Kullanıcı, dilediği kadar polinomun köklerini ard arda bulmak istemektedir. Yazılacak MATLAB programında
kullanıcının karşısına önce "kaç adet denklem bulmak istiyorsunuz?" sorusu çıkacaktır. Daha sonra sıra ile 'en
büyük polinom' derecesinden başlayarak polinomun katsayıları sıra ile klavye kullanılarak girilecektir. Ekranda
kaçıncı denklemin kökleri olduğunu belirten açıklama da yer alacaktır. Bu işlem tüm denklemler bitene kadar
devam edecektir)

Çözüm
>>
disp(' kaç adet denklem koku bulmak istiyorsunuz?')
aa=input('');
n=0;
while n<aa
n=n+1;
disp('polinomun en büyük derecesini gir')
A=input('');
disp('en büyük dereceden başlayarak sıra ile katsayıları giriniz')
c=size(A,1);
for k=1:A+1
c(k)=input('')
end
disp('inci denklemin kökleri')
roots(c)
end

13.4. Üç boyutlu ara değer hesabı

Bir veri grubunun üç farklı değişkenin fonksiyonu ve 3 boyutlu bir dizi oluşturması durumunda üç verinin bazı
değerlerine karşı gelen değeri bulmak için interp3 komutu kullanılır. Bu komutun genel kullanımı;

>>v1=interp3 (x,y,z,v,x1,y1,z1) ( ‘enter’)

şeklindedir. Bu komutun kullanılış biçimi interp2 ile aynıdır ve aynı çözüm yöntemleri kullanılır. x, y ve z
aynı eleman sayısına sahip vektörler olmalıdır. Aynı uzunlukta olmayan x, y ve z vektörlerinin bulunması
halinde meshgrid komutu kullanılarak gerekli uygunlaştırma işlem yapılabilir.

13.5. n boyutlu ara değer hesabı

Bir veri grubunun n farklı değişkenin fonksiyonu ve n boyutlu bir dizi oluşturması durumunda, n adet verinin
bazı değerlerine karşı gelen değeri bulmak için interpn komutu kullanılır. Bu komutun genel kullanımı;

>>v1=interpn (x,y,z,v,....,x1,y1,z1,....) ( ‘enter’)

şeklindedir.

13.6. Eğri uydurma işleminin Basic Fitting arayüzü yardımı ile gerçekleştirilmesi

Eğri uydurma işleminin Basic Fitting arayüzü yardımı ile nasıl gerçekleştirildiği aşağıda verilen
problemin çözümü üzerinden anlatılacaktır.

Problem 13.3

MATLAB ortamında (arka planda) tanımlı olan census adlı data dosyası 1790 ile 1990 yılları arasında
ABD’deki yaş populasyonunu içermektedir. Bu değişimi temsil edecek 4. dereceden polinomun katsayılarını
bulunuz.

Çözüm

Command Window ortamında;

48
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
>> load census (‘enter’)

komutu uygulandığında Workspace ortamında cdate ve pop adlı iki vektör matris ortaya çıkacaktır (şekil
13.9) . cdate; 1790 ile 1990 arasındaki 10'ar yıllık artışları gösteren sütun vektör, pop; 1790 ile 1990 yılları
arasındaki popülasyonu gösteren sütun vektördür.

Şekil 13.9

Şekil 13.10’da

>> plot(cdate,pop,'ko') (‘enter’)

komutunun uygulanması sonunda elde edilen pop=f(cdate) değişimi gösterilmiştir.

Aşağıda verilen komut satırı uygulandığında bu iki vektör arasındaki ilişkiyi temsil eden 4. dereceden bir
polinomun katsayıları elde edilecektir:

>> p=polyfit(cdate,pop,4) (‘enter’)


Warning: Polynomial is badly conditioned. Remove repeated data points
or try centering and scaling as described in HELP POLYFIT.
> In polyfit at 81

p =
Columns 1 through 3
4.7543e-008 -3.5557e-004 1.0032e+000
Columns 4 through 5
-1.2644e+003 6.0020e+005

Şekil 13.10 Şekil 13.11

49
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Yukarıda verilen uyarıda (her ne kadar polinomun katsayıları elde edilmiş olsa da) cdate ve pop adlı iki
vektör arasındaki dağılımının pek uygun olmadığı, verilen data değerlerinin normalize edilerek eğri uydurma
işleminin tekrar yapılması önerilmektedir

Normalizasyon işlemi için önerilen yollardan bir tanesi de; cdate değerleri ile cdate değerlerinin ortalaması
arasındaki farkı, cdate değerlerinin standart sapmasına bölmektir. Aşağıda bu işlemin yapıldığı MATLAB
komut satırı gösterilmiştir:

>>sdate=(cdate-mean(cdate))./std(cdate); (‘enter’)

Yukarıda verilen komut satırının uygulanması sonunda elde edilen sdate adlı vektör matrisi, cdate adlı
vektör matrisinin açıklanan normalizasyon yaklaşımına maruz bırakıldığında elde edilen (normalleştirilmiş)
değerleridir.

cdate adlı vektörün normalleştrilmesi sonunda elde edilen sdate adlı vektöre polyfit komutu
uygulandığında;

>>p=polyfit(sdate,pop,4) (‘enter’)
p =
7.0471e-001 9.2102e-001 2.3471e+001 7.3860e+001 6.2229e+001
>>
elde edilir. 4. dereceden bu polinom için sdate vektörünün aldığı değerler;

>>pop4=polyval(p,sdate);
komut satırı ile bulunabilir. Böylece normalizasyon işlemine maruz bırakılmış cdate değerleri ile
normalizasyon işlemi yapılmamış cdate değerleri aynı eksen takımı üzerinde aşağıdaki komut satırı yardımı ile
çizdirilirse şekil 13.11’de görülen değişimler elde edilir.

>>plot(cdate,pop4,‘ –’, cdate,pop,‘o’)

13.6.1. Eğri uydurmada kullanılan arayüzlerin tanıtılması

Kullanıcının deney sonucu gözlemlediği data değerleri ile (çeşitli yaklaşımlar kullanarak) eğri uydurma
yaklaşımı sonucu hesapladığı değerler arasındaki ilişkinin doğruluğunu tespit etmek için kullanılan yaklaşım
şekillerinden bir tanesi rezidü hesabıdır. MATLAB ortamında normalize edilmiş data değerlerinin çeşitli eğri
uydurma yaklaşımlarına uygulanması sonunda elde edilen sonuçlar rezidü hesabı yapılarak karşılaştırılabilir.

MATLAB ortamında eğri uydurma amaçlı kullanılan iki farklı arayüz ortamı bulunmaktadır. Bunlardan ilki
Basic Fitting arayüzü diğeri ise Curve Fitting Tool arayüzüdür

13.6.1.1. Eğri uydurma işleminin Basic Fitting arayüzü yardımı ile gerçekleştirilmesi

Yukarıda verilen cdate ve pop adlı iki vektör arasındaki eğri uydurma işlemi, MATLAB ortamındaki Basic
Fitting arayüzü kullanılarak da çok kolay bir şekilde yapılabilir. Bunun için aşağıdaki işlemlerin sıra ile
gerçekleştirilmesi gerekir:

1. Verilen data değerleri plot komutu yardımı ile çizdirilmelidir:

>> load census (‘enter’)


>> p=plot(cdate,pop) (‘enter’)

Elde edilen şekil penceresinde Tools seçeneği içine girilerek Basic Fitting üzerine ‘tık’lanılmalıdır
(şekil 13.12). Bu işlem yapıldığında şekil 13.13'de gösterilen pencere ile karşılaşılır.

50
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.12 Şekil 13.13

2. Şekil 13.13’de gösterilen Basic Fitting penceresinde, Select Data ifadesinin yanındaki boşlukta,
şekil 13.12’de verilen eğriye ilişkin data değerlerinin data1 adlı ortamda saklandığı anlatılmaktadır.
Center and scale X data yazısının sol yanında yer alan boş kutu üzerine ‘tık’lanıldığında data1
adlı değişimin normalizasyon işlemi (arka planda) yapılır.

3. Check to display fits on figure yazısının altında kalan pencere içinde çeşitli seçenekler yer
almaktadır. Bu pencere içinde kullanıcıya iki farklı tip eğri uydurma seçeneği sunulmaktadır:Bu iki seçenek;
interpolasyon (ara değer bulma) ve polinom seçimidir. Bu pencere içinde yer alan kutucuklardan ilki
spline interpolant seçeneğidir. Bu kutucuk işaretlendiğinde MATLAB hesaplamaları spline
komutu kullanılarak gerçekleştirilir. Bu kutucuğun altında kalan kutucuk işaretlendiğinde ise kutucuklardan
ilki spline interpolant seçeneğidir. Bu kutucuk işaretlendiğinde MATLAB hesaplamaları pchip
komutu kullanılarak gerçekleştirilir. Bu komut MATLAB arka planında ‘Piecewise Cubic Hermite
Interpolating Polynomial’ adlı interpolasyon metodunu kullanır.
Bu pencere içinde baştan üçüncü kutu ve altında yer alan diğer kutular işaretlendiğinde ise sırası ile birinci
(linear), ikinci (quadratic), üçüncü (cubic), …, dereceden polinomlar yardımı ile eğri uydurma
işlemi gerçekleştirilir. Eğer verilen data değerleri N adet ölçüm içeriyor ise MATLAB ortamında en fazla N.
dereceden bir polinom uydurmaya müsaade edilir.

4. Show equation ifadesinin sol yanında yer alan kutucuk işaretlendiğinde ise eğri uydurma
yaklaşımında kullanılan polinomun denklemi ekran üzerinde gözükür. Significant digits
seçeneğinin yanında yer alan boşlukta ise bu polinomun katsayılarından kaç adet önemli sayının
gösterileceği belirlenir.

5. Plot residuals seçeneği işaretlendiğinde bu ifadenin altında yer alan iki seçenek önem kazanır. İlk
seçenek (Bar plot yazan) rezidü değişiminin ne şekilde çizdirileceği (Bar plot, Scatter plot,
Line plot) hakkında kullanıcının tercihini sormaktadır. Bunun altında yer alan seçenekte ise (Subplot
yazan) çizdirilecek rezidü eğrisinin mevcut olan şekil penceresinin altına mı (Subplot) yoksa bağımsız bir
pencere (Separate)olarak mı çizdirileceği konusunda kullanıcıya seçenek verir.

6. Show norm of residuals seçeneği yanında yer alan kutucuk ‘tık’lanıldığında ise kullanıcı
(hesaplamalarda hata ile orantılı olan) rezidü genliği hakkında kullanıcıya bilgi verilir.

Yukarıda yapılan açıklamalara örnek olması bakımından şekil 13.13’de işaretlenen kutucukları gösteren pencere
şekil 13.14’te verilmiştir. Şekil 13.14’de gösterilen seçeneklerin işaretlenmesi sonunda elde edilen ekran
görüntüsü ise şekil 13.15’te gösterilmiştir.

>> plot(cdate,pop,’ro’)

51
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.14 Şekil 13.15

Şekil 13.14’te butonuna ‘tık’lanılır ise Şekil 13.16 da verilen ekran görüntüsü ile karşılaşılır.

Şekil 13.16

Şekil 13.16’da verilen pencerenin sağ tarafında yer alan Numerical results bölümünde sırası ile;
uydurulan polinom denklemi, polinomun (en yüksek dereceden başlayarak sıralanan) katsayıları ve rezidü normu
(genliği) verilir. Bu bölümüm en altında yer alan Save to workspace seçeneği ‘tık’lanıldığında ise
kullanıcının karşısına şekil 13.17 de gösterilen pencere çıkar.

52
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.17

Şekil 13.17 de verilen pencerede (fit ve normresid) adları kullanıcı tarafından istenirse değiştirilebilir) OK
seçeneği ‘tık’lanıldığında, Workspace ortamında bu adlar ile anılan bir yapı ve bir değişken oluşturulur. fit
adlı yapı içinde polinomun derecesi ve katsayılarını bildiren bilgiler, normresid adlı değişken içine ise rezidü
normu yazılır. Eğer şekil 13.16’da gösterilen pencere içinde sağ en altta yer alan butonuna ‘tık’lanılır ise
şekil 13.18 ile verilen ekran görüntüsü elde edilir.

Şekil 13.18

Şekil 13.18’de verilen Find Y=f(X) pencerenin sağ tarafında yer alan Evaluate seçeneğinin sol yanında
yer alan boşluğa, ölçüm sonunda hakkında bilgi sahibi olunmayan cdate değerleri girilir. Evaluate
seçeneği ‘tık’lanılır ise en üstünde X ve f(X) ifadeleri bulunan boş alana cdate değerlerine karşı gelen pop
değerleri gelir (hesaplanır). Kullanıcı Evaluate seçeneğinin sol tarafındaki boşluğa (1800:5:1850
biçiminde) vektör biçiminde aradığı cdate değerlerini de girebilir.

Kullanıcı, Evaluate seçeneğinin sol tarafındaki boşluğa ölçümde göz önüne alınan en büyük cdate (yani X)
değerlerlerinden daha büyük değerler girerek ekstrapolasyon da yapabilir. Ekstrapolasyon sonunda elde edilen
yeni pop (yani f(X)) değerleri en üstünde X ve f(X) ifadeleri bulunan boş alana yazılır. Eğer sağ en altta yer
alan Save to workspace seçeneği işaretlenir ise elde edilen sonuçlar Workspace ortamında kullanıcının
belirleyeceği bir isim altında ayrı ayrı kaydedilir. Bu seçenek kullanıldığında kullanıcının karşısına çıkan ekran
görüntüsü şekil 13.19’da verilmiştir. Kulanıcı isterse x1 ve fx1 adlarını değiştirebilir.

53
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.19

Eğer kullanıcı bu yeni değerleri eğri üzerinde görmek isterse şekil 13.18'de yer alan Plot evaluate
results seçeneğini işaretlemesi yeterlidir. Burada bir ekstrapolasyon örneği olması için Evaluate
seçeneğinin sol tarafındaki boşluğa 2000:5:2500 yazılmış, Plot evaluate results seçeneği
işaretlenmiş ve elde edilen değişim şekil 13.20’de gösterilmiştir. Şekil 13.18'in ekstrapolasyon uygulaması
sonunda aldığı görüntü ise şekil 13.21'de gösterilmiştir.

Şekil 13.20 Şekil 13.21

Kullanıcı isterse şekil 13.18'de Plot Fits penceresi içinde yer alan eğri türlerinden birkaç tanesini aynı anda
işaretleyebilir. Bu durumda şekil 13.20'de birden fazla eğri ve rezidü değeri elde edilir. Kullanıcı isterse en
uygun olan eğriyi bunların içinden seçebilir.

13.6.1.2. Eğri uydurma işleminin Curve Fitting Tool arayüzü yardımı ile gerçekleştirilmesi

MATLAB araç kutuları içinde eğri uydurma işleminin yapılması için geliştirilen diğer bir arayüz (GUI) Curve
Fitting Tool ortamıdır. Bu ortamı kullanarak; bir veya daha fazla data seti incelenebilir, grafik olarak en iyi
eğri uydurma işlemi, aynı datayı birden fazla eğri ile çizdirip karşılaştırma imkanı, ara değer bulma-dış değer
bulma-türevsel ve integral eğri uydurma işlemleri yapılabilir. Eğri uydurma araç kutusunu çalıştırmak için
aşağıdaki komut satırının uygulanması yeterlidir:

>>cftool ('enter')

Yukarıdaki komut satırı uygulandığında kullanıcının karşısına şekil 13.22'de verilen görüntü çıkar. Bu araç
kutusunun tanıtılması için örnek olarak yine problem 13.3 çözülecektir: Bölüm 13.6.1.1'de belirtildiği gibi;

>>load census (‘enter’)

komutu uygulandığında Workspace ortamında şekil 13.9'da gösterildiği gibi cdate ve pop adlarında iki adet
vektör oluşur (cdate; x ekseni ve pop; y ekseni seçilecektir). Önce bu iki vektörün cftool ortamına
taşınması açıklanacaktır.

54
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.22 Şekil 13.23

13.6.1.2.1. Workspace ortamındaki datanın eğri uydurma araç kutusuna taşınması (importing)

Şekil 13.22'de Data..butonuna 'tık'lanıldığında (veya File menüsü altında yer alan Import Data..
komutuna 'tık'lanıldığında) şekil 13.23'de gösterilen pencere açılır. Bu pencere içinde X Date ifadesinin sağ
tarafındaki ok işaretine 'tık'lanıldığında Workspace ortamında saklı olan büyüklükler ile karşılaşılır. Bunlar
içinden x eksenine karşı gelmesi düşünülen vektör işaretlenir. Benzer şeyler Y Date ifadesi için geçerlidir. Bu
işlemler gerçekleştirildiğinde şekil 13.23'de Preview penceresinde, bu iki vektörün değişimi görülecektir. Bu
gösterimde yalnızca x ve y değerlerinin işaretlendiği, her hangi ibr eğri çizim işleminin yapılmadığına dikkat
edilmelidir.

Şekil 13.23'de Create data set komutuna 'tık'lanıldığında cdate ve pop vektörleri Curve Fitting
Tool araç kutusuna taşınır (importing). Bu işlem sonunda şekil 13.22'de verilen Curve Fitting Tool
penceresi şekil 13.24'de gösterilen forma dönüşür. Artık eğri uydurma işlemine geçilebilir.

Şekil 13.23'de Weights (ağırlık sabitleri) ifadesinin sağ tarafındaki boşluğa (varsa) probleme ilişkin ağırlık
katsayı vektörünün adı yazılabilir. Eğer buraya bir şey yazılmaz ise tüm data değerleri için 1 değeri (default)
alınır.

Şekil 13.23'de Data set name ifadesinin sağ tarafındaki boşluğa x ve y eksenlerini oluşturan vektörlerin adları
(kendiliğinden) yazılır. Kullanıcı dilerse buraya başka adlar da yazabilir.

Eğer x ve y eksenlerini oluşturan data değerleri içinde Inf sayısı var ise ihmal edilir (göz önüne alınmaz),
complex sayı var ise reel kısmı alınır. Bu iki durumda da ekranda bir pencere belirir ve kullanıcı uyarılır.

Verilen problemde MATLAB arka planında saklı olan iki adet vektör (cdate ve pop) kullanılmıştır. Kullanıcı
isterse bunların yerine Workspace ortamında oluşturacağı iki adet (eşit boyutta) vektör kullanarak da benzer
işlemleri yapabilir.

13.6.1.2.2. Eğri uydurma (Fitting)

Daha önceki adımlarda x ve y eksenine ilişkin data değerleri cftool ortamına taşındı. Şekil 13.24'de
Fitting… komutuna 'tık'lanıldığında şekil 13.25'de gösterilen Fitting penceresi ile karşılaşılır. Bu
pencerede New Fit komutuna 'tık'lanıldığında ise şekil 13.26'da verilen görüntü elde edilir (Fitting
penceresi). Bu pencerede Fitname komutunun sağ tarafında bulunan boşluğa çizdirilecek eğrinin ismi
yazılmalıdır (ör:egri2). Daha sonra yer alan Polynomial alt penceresinde yer alan eğri türlerinden birisi
seçilerek (örneğin; quadratic) Apply ya da Immediate apply komutlarına 'tık'lanıldığında, Fitting
penceresi şekil 13.27 ile verilen forma dönüşür. Bu işleme ilişkin istatistiksel bilgiler ise şekil 13.27'de
Results penceresinde yer alır.

55
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Kullanıcı dikkat ederse Curve Fitting Tool penceresi içinde bir adet eğri görecektir. Eğer bu pencerenin
altında eğriye ilişkin rezidü değişimi de görülmek isteniyor ise şekil 13.24'de gösterilen Curve Fitting Tool
penceresinde yer alan View menüsünün içinde yer alan Residuals/Line Plot seçeneğine 'tık'lanılmalıdır.

Bu işlem yapıldığında şekil 13.24 yerine şekil 13.28'de verilen pencere elde edilir.Eğer kullanıcı daha yüksek
mertebeden eğri uydurmak isterse ekranda;

Equation is badly conditioned. Remove repeated data points or try


centering and scaling.

uyarısı ile karşılaşabilir.Bu durumda şekil 13.27'de Center and scale X data ifadesinin sol tarafında yer
alan kutucuk işaretlenerek data değerleri normalize edilebilir.

Şekil 13.24 Şekil 13.25

Şekil 13.26 Şekil 13.27

56
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.28 Şekil 13.29

Verilen problem için şekil 13.27'de Center and scale X data işaretlendiğinde, arka planda yapılan
normalizasyon işlemi aşağıda verilmiştir:

>>(cdate-mean(cdate))./std(cdate)

13.6.1.2.3. Eğri uydurmada işleminde en iyi eğrinin tespit edilmesi

Kullanıcı, yukarıda bahsedilen işlemleri dilediği kadar eğri türü üzerinde deneyebilir. Şekil 13.27'de Type of
Fit seçeneğinin sağ tarafındaki boşlukta yer alan ok 'tık'lanıldığında kullanıcının karşısına bir çok eğri türü
çıkar. Bu seçenekler; Custom equations(kullanıcı tarafından belirlenecek eğri türleri), Exponential,
Fourier, Gaussian, Interpolant, Polynomial(polinom), Power, Rational (oransal),
Smoothing Spline, Sum of Sin functions, Weibull olarak sıralanır. Bu eğri tipleri aşağıda
tanıtılmıştır:

 Exponentials
y  ae bx
y  ae bx  ce dx
 Fourier Series
n
y  a 0   a i cos(nwx  bi sin( nwx )
i 1
 Gaussian
 x  bi 2 
n  ( ) 
ci
y   ai e 
i 1
 Polynomials
n 1
y   pi x n 1i
i 1
 Power Series
y  ax b
y  a  bx c
 Rationals

57
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
n 1
n 1 i
 pi x
y  i 1 m
x m   qi x m i
i 1
 Sum of Sines
n
y   a i sin( b i x  ci )
i 1
 Weibull Distribution
b
y  abx b 1e  ax
 Custom Equations
Şekil 13.27'de Type of Fit ifadesinin sağ tarafında yer alan boşlukta ok işareti yardımı ile Custom
Equations ifadesine ulaşılır. Bu pencerede yer alan New equation..komutuna 'tık'lanıldığında şekil
13.29 ile verilen pencere açılır. Bu pencere iki adet seçenek içerir. Bunlardan ilki, Linear Equations
diğeri ise General Equations seçeneğidir. Şekil 13.29, Linear Equations'a ilişkindir. Bu
pencerede Add a term ifadesine 'tık'layarak y denklemine yeni sinüs eşitlikleri ilave edilebilir yada Remove
Last Term komutu kullanılarak y ifadesine en son ilave edilen terim silinebilir. Şekil 13.29'da General
Equations seçeneğine 'tık'lanıldığında şekil 13.30 penceresi ile karşılaşılır. Bu penceede Equation
ifadesinin sağ tarafında bulunan ikinci boşluğa kullanıcı, dilediği eşitliği yazabilir. Bu pencerenin altında yer
alan pencerede ise y eşitliğinde kullanılan katsayılara ilişkin başlangıç değeri, alt ve üst sınır değerlerini
girecek küçük pencereler bulunur. Bu değerler girildiğinde OK tuşuna basılarak eğri denklemi tamamlanır.

Şekil 13.30 Şekil 13.31

Bu tiplerden hangisi seçilirse Type of Fit ifadesinin altında yer alan boşlukta, seçilen eğri tipine ilişkin eğri
denklem (ya da denklemleri) belirir. Kullanıcı, eğri tipini yukarıda bahsedildiği gibi seçtikten sonra şekil
13.27'de görülen Copy Fit komutuna 'tık'ladığında açılan (şekil 13.27'ye benzeyen) yeni pencerede Fit
name ifadesinin sağ tarafına yeni bir isim (ör:egri3) yazmalı ve Immediate apply (ya da Apply)
komutunu uygulamalıdır. Bu şekilde kullanıcı, dilediği kadar eğri denklemini seçerek eğri uydurma işlemini
gerçekleştirebilir. Şekil 13.31'e bakıldığında 7 adet eğri uydurulduğu görülecektir. Şekil 13.32'de en altta yer
alan Table of Fits penceresi içinden hangi eğriye 'tık'lanılırsa, aynı şekilde yer alan Results penceresinde
bu eğriye ilişkin denklem, katsayı ve istatistiksel değerler yer alır. Table of Fits penceresi yer alan eğriler
içinden (isabetli bir eğri uydurma işlemi yapılamadığı düşünülerek) bir tanesi silinmek istenir ise ilgili satır fare
ile işaretlenerek Delete fit komutuna 'tık'lanılması gerekir.

Şekil 13.31'de Residuals penceresinde yer alan eğriler içinde birbirlerine benzer olanlar dışında kalan eğrile r,
kötü bir eğri uydurma işleminin sonucunu göstermektedir. Bu nedenle diğer eğrilerden sapan ve uzaklaşan
eğriler şekil 13.32'de Delete fit komutu kullanılarak uzaklaştırılmalıdır. Şekil 13.31'de, bu özelliğe sahip

58
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
(kötü uydurulmuş 3 adet-egri1-egri4-egri5) eğri, ok ile işaretlenmiştir. Kötü olan eğrileri tespit etmek için şekil
13.32'de Table of Fits penceresinde yer alan SSE(Sum of Squares due to Error) ve Adj R-square
değerleri de kullanılabilir. Adj R-square değeri 1'e yaklaştıkça eğrinin iyi olduğu, 1'den uzaklaştıkça ise
eğrinin kötü olduğu bilinmelidir. SSE değeri ise küçüldükçe eğrinin iyi olduğu, büyüdükçe eğrinin kötü olduğu
söylenebilir (istatistiksel katsayılara ilişkin açıklamalar ilerleyen sayfalarda verilecektir). Bu bilgiler ışığında
şekil 13.32'de egri1, egri4 ve egri5'e ilişkin SSE ve Adj R-square değerleri incelenmelidir (en iyi eğrinin
egri6 olduğu görülmelidir).

Şekil 13.31'de görülen tüm eğriler bilgisayar ekranında farklı renkte oldukları için kullanıcı tarafından rahatlıkla
fark edilebilirler. Kitap siyah-beyaz baskı olarak basıldığından bu ayırımı kitap üzerinde görmek zorlaşabilir.
Şekil 13.31'de, fare ile herhangi bir eğrinin üzerine gelinip sol tuşa basıldığında, bu noktaya ilişkin x ve y
değerlerini gösteren küçük bir pencere açılır.

Şekil 13.32 Şekil 13.33

Şekil 13.32'de SSE sütununa fare ile 'tık'lanıldığında bu sütundaki değerler büyüklüklerine bağlı olarak
sıralanırlar. Benzer şeyler Adj R-square için de söylenebilir. Eğri6 değerlerinin sütunun en üstünde olması en
iyi eğri uydurmanın bu eğri ile yapıldığını da göstermektedir. Şekil 13.34'de en iyi eğrinin katsayıları
gösterilmiştir.

59
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.34 Şekil 13.35


13.6.1.2.4. Ekstrapolasyon

Şimdiye kadar, verilen dataların alt ve üst sınırları arasında kalan değerleri içeren bir eğri uydurma işlemi
gerçekleştirildi. Mevcut data değerlerini kullanarak bu data değerlerinin dışında kalan değerler için de bilgi
istenebilir. Örneğin; verilen problemde cdate değerleri; 1790 ile 1990 arasında, pop değerleri ise 3.9 ile 248.7
arasında değişmekteydi. Eğer kullanıcı mevcut 7 adet eğriyi kullanarak 1790'dan küçük ve/veya 1990'dan büyük
seneler için pop değerlerini bulmak istese (extrapolasyon) cftool ortamında ne yapmalıdır?

Yukarıda bahsedilen soruyu cevaplamak için öncelikle şekil 13.31'de Tools menüsünde yer alan Axis Limit
Control ifadesi 'tık'lanmalıdır. Bu işlem yapıldığında kullanıcının karşısına şekil 13.33'de verilen pencere
çıkar. Bu pencere iki adet alt pencereden oluşmaktadır; Data and Fits ve Residuals. Bu pencerelerde
yatay eksen için X Lower Limit-X Upper Limit ve düşey eksenler için Y Lower Limit ve Y Upper
Limit butonları bulunmaktadır. Bu butonların sağ tarafında bulunan aşağı ve yuları ok işaretlerine 'tık'lanılarak
limit değerleri azaltıp artırmak mümkündür. Örnek olarak X değerleri 1800 ile 2050 aralığında seçilirse şekil
13.34'de gösterilen pencere elde edilir. Bu değişim bir liste olarak görülmek istenir ise şekil 13.35'de
Analysis.. butonuna 'tık'lanılmalıdır. Bu işlem yapıldığında kullanıcının karşısına şekil 13.36'da verilen
pencere çıkar. En iyi eğri uydurmanın egri6 ile yapıldığı bilindiği için şekil 13.36'da Fit to analyze
ifadesinin sağ tarafındaki boşluğa egri6 getirilmiş, bu kutunun altında yer alan Analyze at Xi kutusu içine ise
istenilen aralık ve artış miktarı yazılmalıdır. Şekil 13.36'daki uygun kutucuklar işaretlenip Apply seçeneğine
'tık'lanıldığında şekil 13.36'da sağ tarafta yer alan (1800 ile 2050 aralığındaki ) cdate ve (bu aralığa karşı
gelen)pop değerler listesi elde edilir.

60
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.36 Şekil 13.37

Şekil 13.36'da Save to workspace..butonuna basıldığında kullanıcının karşısına küçük bir pencere çıkar.
Bu pencere içindeki boşluğa bir isim yazıldığında, Workspace ortamında bu adla anılan bir yapı dosyası içine
ekstrapolasyon değerleri kaydedilir.

13.6.1.2.5. Table of fits seçenekleri

Şekil 13.32'de Table of fits penceresinde uydurulan eğriler hakkında bilgi vermek üzere yerleştirilmiş iki
adet istatistik tanımı yer almaktadır: SSE ve Adj R-square. SSE değeri en az karesel hata hesabını yapan bir
istatistiksel büyüklüktür. Bu değer sıfıra doğru yaklaştıkça, iyi bir eğri uydurma işleminin gerçekleştirildiği
düşünülebilir. Eğri uydurma işleminde diğer bir kalite ölçüsü ise Adjusted R-square katsayısıdır. Bu
değerin, iyi bir eğri uydurma işleminde 1'e yaklaşması istenir. Kullanıcının Table of fits seçeneklerini
değiştirmesi, diğer bir ifade ile istatistiksel ölçme büyüklüklerini belirlemesi de mümkündür. Bunun için şekil
13.32'de yer alan Table options.. butonuna 'tık'lanmalıdır. Bu işlem yapıldığında şekil 13.37'da gösterilen
pencere ile karşılaşılır. Bu pencerede yer alan kutucuklar işaretlendiğinde, bunların sağ tarafında yer alan
ifadeler, Table of fits içinde gözükür. Şekil 13.34'de görülen Table of Fits ayarları, şekil 13.37
yardımı ile gerçekleştirilmiştir. Şekil 13.37'de görülen istatistiksel tanımlar aşağıda kısaca tanıtılmıştır:

-SSE (The sum of squares due to error)


y i değeri ölçülen data vektörünün i. elemanını, y i eğri uydurma sonunda elde edilen data vektörünün i.
elemanını, w i ise ağırlık katsayılarını göstermek üzere;

n
SSE=  w i(y i  y i )2
i 1

eşitliği ile hesaplanır.SSE, 0'a yaklaştıkça eğri uydurma işleminin başarılı olduğu söylenebilir.

-R-square
y vektörü ile, y vektörü arasındaki korelasyonun karesine eşit bir katsayıdır. İki büyüklüğün birbirine
bölümünden elde edilir (n; y (veya y ) vektörü eleman sayısı):
n 2
 wi(y i  y)
SSR SSE
R  i 1  1 ; SST=SSR+SSE
SST n 2 SST
 wi(y i  y)
i 1

61
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
R değeri 0 ile 1 arasında değişir. R değeri 1'e yaklaştıkça eğri uydurma işleminin başarılı olduğu söylenebilir.

-Adj R-sq (Adjusted R-square)


v (değeri büyük olması istenir) rezidü serbestlik derecesi olmak üzere, Adj R-sq aşağıdaki ifade ile hesaplanır.
SSE (n  1)
Adj R-sq = 1 
SST (v  1)
Genellikle eğri uydurmada en iyi verimlilik göstergesidir. 1'e yakın olması istenir.

-RMSE (Root Mean Squared Error)


Ortalama karesel hatanın (MSE)kareköküdür.0'a yakın olması istenir.
RMSE= MSE =SSE/v

13.6.1.2.6. Eğri uydurma sonuçlarının kaydedilmesi

Şekil 13.38

Şekil 13.39 Şekil 13.40

Şekil 13.32'de Save to Workspace butonuna 'tık'lanıldığında şekil 13.38'de verilen pencere açılır. Bu
pencerede üç adet küçük kutucuk yanında üç adet ifade yer almaktadır. Örneğin en üstte yer alan Save fit
to MATLAB object named ifadesinin sol tarafında yer alan kutucuk fare yardımı ile 'tık'lanıldığında, sağ
tarafta yer alan boş dikdörtgen kutu içinde yazılı olan fittedmodel1 adlı cfit objesi, Workspace
ortamında oluşacaktır. Şekil 13.39'da Workspace ortamında yüklenen fittedmodel1 üzerine çift adet
'tık'lanıldığında en iyi eğri uydurma modeline ilişkin polinom katsayıları, Array Editor ortamında belirir.
Benzer işlem goodness1 yapısı için yapılırsa, en iyi eğriye ilişkin istatistiksel değerler, Array Editor
ortamında, şekil 13.40'da gösterildiği gibi ortaya çıkar. Output1 yapısı içinde ise kullanılan yaklaşım ile ilgili
ilave açıklamalar yer alır.

Kullanıcı şekil 13.32'de görülen eğri türlerini ileride kullanılmak üzere saklamak isteyebilir. Bunun için önce
(Curve Fitting Tool) şekil 13.35'de File menüsü içinde yer alan Save Session..komutu
'tık'lanılmalıdır. Bu işlem yapıldığında kullanıcının karşısına şekil 13.42'de verilen pencere çıkar. Kullanıcı
tarafından bir dosya adı altında (ör:egri_uydurma) tüm eğriler, Kaydet butonuna 'tık'lanılarak kaydedilir.
Bu tür dosyaların uzantısı cfit olur. Eğer MATLAB ortamından çıkılır (veya bilgisayar kapatılır) ve daha sonra
tekrar bu eğrilere ulaşılmak istenirse, şekil 13.35'de gösterilen Curve Fitting Tool penceresinde File
menüsü altında yer alan Load Session..komutuna 'tık'lanılır. Bu işlem yapıldığında şekil 13.42'ye benzer

62
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
bir pencere açılır. Burada egri_uydurma.cfit seçilir ve Aç butonuna 'tık'lanılır ise şekil 13.35'deki pencere
açılır.

Şekil 13.41 Şekil 13.42

Eğer kullanıcı 7 adet eğriden bazılarını silmek istiyor ise şekil 13.35'de Plotting..butonuna 'tık'lamalıdır. Bu
işlem yapıldığında şekil 13.43'de gösterilen pencere çıkar. Bu pencerede silinmek istenen eğrilerin isimlerinin
sol tarafındaki kutucuklar boş bırakılır ve pencerenin sol altındaki Clear..ifadesinin yanındaki kutucuk
işaretlenir, Close butonuna 'tık'lanılır. Bu işlem sonunda şekil 13.35'de görülen egri1,egri2,egri3 ve egri4
eğrileri ortadan kalkar.

Şekil 13.43 Şekil 13.44

Kullanıcı isterse yukarıda bulunan 7 adet eğriyi M dosyası (altprogram olarak) saklayabilir. Bu işlemi yapmak
için şekil 13.35'de verilen Curve Fitting Tool penceresinde File menüsü içinde yer alan Generate M-
File ifadesine 'tık'lanılır. Bu işlem sonunda şekil 13.42'ye benzer bir pencere açılır. Bu M dosyasına, uygun bir
isim verilerek (ör: egri_uygurma.m), Kaydet butonuna 'tık'lanılır.

Eğer kullanıcı, yukarıda belirtildiği şekilde kaydedilen egri_uydurma.m adlı altprogramı, bir MATLAB
dosyası olarak çalıştırmak isteyebilir. Bunun için şekil 13.44'de bir kısmı gösterilen egri_uygurma.m adlı
altprogram dosyasının ilk satırına bakılmalıdır. Şekil 13.44'de ilk satır;

function egri_uydurma(cdate,pop)

olarak verilmektedir. Bu satırda function komutundan sonra gelen 'egri_uydurma(cdate,pop)'


ifadesi, Command Window ortamında aşağıdaki;

>>egri_uydurma(cdate,pop) ('enter')
şekilde uygulanırsa, egri_uygurma.m adlı altprogram çalışır ve sonuçta şekil 13.35'de görülen eğriler elde
edilir. Yukarıda verilen satırın çalışabilmesi için cdate ve pop vektörlerinin Workspace ortamında tanımlı
olması gerekir.

13.6.1.2.7. Data değerleri içindeki gürültünün süzülmesi (smooting)

63
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Eğer verilen data değerleri gürültü içeriyor ise kullanıcının bu değerleri ortadan kaldırmak için bir süzme
algoritmasına ihtiyacı olacaktır. Eğri uydurma işlemi parametrik bir işlem olmasına rağmen süzme, parametrik
olmayan bir uydurma işlemidir. Süzme işlemi, gürültü içeren data değerlerini data vektörü içinden uzaklaştırma
işlemi olarak da yorumlanabilir. Süzme işleminde yaygın olarak kullanılan iki yaklaşım vardır: filtreleme ve
regresyon. Her iki yaklaşım da bir aralığa span (pencere) ihtiyaç duyar. Bu pencere işlem yapılan data değerleri
ile beraber yer değiştirir. Span büyüdükçe eğrideki pürüzlülük azalır fakat pürüzlüğü alınan datanın çözünürlüğü
azalır, span küçüldükçe tam ters sonuçlar elde edilir. Optimal span değeri, data değerlerine ve kullanılan süzme
yöntemine bağlıdır. Deneyerek bulmak en yaygın yaklaşımdır.

Curve fitting toolbox (eğri uydurma araç kutusu) başlıca aşağıda verilen süzme yöntemlerini kullanır.
 Moving average filtering-alçak geçiren bir filtredir, komşu noktaların ortalamasını alır.
 Lowess ve loess-Lineer en küçük kareler yöntemi ile eğri uydurur,birinci dereceden polinom (lowess) veya
ikinci dereceden polinom (loess) kullanır.
 Savitzky-Golay filtering-ilk yönteme benzer, filtre katsayılarının türevini alır ve çeşitli derecelerden
polinomları kullanır.

Kullanıcı isterse düzleştirme için cubic spline komutunu da kullanabilir.

Düzleştirme işlemini iyi açıklayabilmek için MATLAB arka planında saklı bulunan bir başka data çifti
kullanılacaktır. cftool ortamında düzleştirme (smooting) işlemi için kullanılan arayüz şekil 13.45'de
gösterilmiştir. Bu dataya ulaşmak için;

>>load enso ('enter')

komutu uygulanmalıdır. Bu işlem yapıldığında Workspace ortamında, month (ay) ve pressure (basınç)
adlı eşit boyutta iki vektör oluşur. y eksenini oluşturan pressure vektörü; aylık olarak Avusturalya'daki iki
kritik bölge arasındaki atmosferik basınç ortalamasını içerir (bu bilgi kullanılarak güney yarım küredeki rüzgar
bilgilerine ulaşılır). x eksen bilgileri ise aylar içindeki nispi zamanı gösterir. Her bir vektör 168 sayı içerir. Şekil
13.45'de Create data set butonuna 'tık'lanıldığında şekil 13.46'da gösterilen Curve Fitting Tool
penceresi açılır. Şekil 14.46'da fare ile herhagi bir nokta üzerine gelinip farenin sağ tuşuna basılır ve ortaya çıkan
pencereden Line Style/Solid komutuna 'tık'lanılır ise şekil 13.47'de gösterilen eğri değişimi elde edilir.
Şekil 13.45'de Smooth butonuna 'tık'lanıldığında ortaya çıkan pencerede Create smoothed data set
butonuna 'tık'lanıldığında şekil 13.48'de verilen pencere elde edilir. Bu pencerede Method ifadesinin sağ
tarafındaki boşluktaki ok işaretine 'tık'lanıldığında kullanıcının karşısına;

Şekil 13.45 Şekil 13.46

64
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.47 Şekil 13.48

 Moving Average
 Lowess(linear fit)
 Loess (quadratic fit)
 Savitzky-Golay
 Robust Lowess(linear fit)-sınır dışındakilere direnç gösterir
 Robust Loess (quadratic fit)-sınır dışındakilere direnç gösterir

metodları çıkar. Şekil 13.48'de Span ifadesinin sağ tarafındaki boşluğa; her bir düzleştirme hesaplamasında
kullanılacak nokta (data) sayısı yazılır. Eğer metod olarak Savitzky-Golay seçilirse Span altındaki
boşlukta Degree ifadesi belirir. Buraya polinom derecesi yazılır ve bu değerin Span değerinden az olması
istenir.

Enso adlı data dosyasına yukarıda belirtilen tüm metodlara göre ayrı ayrı düzleştirme işlemi uygulanabilir.
Bunun için şekil 13.48'den bir metod seçilmeli ve daha sonra pencerede Create smoothed data set
butonuna 'tık'lanılmalıdır. Aynı işlem diğer metodları ayrı ayrı seçerek tekrarlanırsa şekil 13.49'da gösterilen
pencere elde edilir. Bu pencere içinde yer alan smoothed data set penceresi içinde yer alan çözüm
yaklaşımlarından herhangi birine (örneğin:Moving Average) fare ile 'tık'lanılıp daha sonra View butonuna
'tık'lanılırsa şekil 13.50'de görülen View Data Set penceresi elde edilir (enso(smooth) adı altında). Eğer
şekil 13.49'da Save to workspace butonuna 'tık'lanıldığında bir pencere açılır. Bu pencere içindeki boşluğa
bir ad yazılırsa şekil 13.50'de Index penceresinde görülen data değerleri bu ad altında workspace ortamında
bir yapı dosyasında saklanır.

65
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Şekil 13.49 Şekil 13.50

Şekil 13.46'da Plotting.. butonuna 'tık'lanılır ise şekil 13.51'de görülen pencere açılır. Bu pencerede yer
alan her adın bir düzleştirme metoduna karşı geldiği bilinmektedir. Eğer bunların içinden bir tanesi seçilir ve
kutu içine 'tık'lanılır ise şekil 13.52'de verilen değişim elde edilir. Eğer kullanıcının ekranında yalnızca noktalar
var ise herhangi bir noktaya farenin sağ tuşu ile 'tık'lanıldığında açılan küçük pencerede Line Style/Solid
komutuna 'tık'lamalıdır. Yapılan işlemin sonucunu görmek için şekil 13.47 ile şekil 13.52 birbirleri ile
karşılaştırılmalıdır.

Şekil 13.51 Şekil 13.52

13.6.1.2.8. Data içindeki bazı değerlerin eliminasyonu

Yukarıda verilen month veya pressure adlı vektörlerin içinden bazı değerlerin (uygun olmadıkları için)
silinmesi gerekebilir. Silinecek data değerleri vektör içinde farklı yerlerde olabilecekleri gibi (örneğin; 1.,8. ve
10. elemanlar gibi) birbirini takip eden (bölgesel-örneğin; 18. eleman ile 35. eleman arasındaki tüm sayılar)
sırada da olabilirler. cftool ortamında her iki durum için de eliminasyon yapılabilir.

Bu işlemlerin yapılacağı ara yüze ulaşmak için Curve Fitting Tool penceresinde (şekil 13.47)
Exclude.. butonuna basılmalıdır. Bu işlem yapıldığında kullanıcının karşısına şekil 13.53'de verilen pencere
çıkar.

Şekil 13.53 Şekil 13.54

Şekil 13.53'de Select data set ifadesinin sağ tarafındaki boşlukta yer alan ok işaretine 'tık'lanılarak enso
adlı (içinde iki vektör içeren) dosya işaretlenmelidir. Böylece eliminasyon işleminin bu dosya içinde yer alan
vektörler içinde yapılacağı belirlenmiş olmaktadır. Eğer daha önce bir ad altında eliminasyon işlemi
gerçekleştirilmiş ise (şekil 13.54) bunların isimleri Existing exlusion rule penceresi içinde yer alır
(elimine1 ve elimine2 gibi). Eğer yeni bir ad altında (ör:elimine3) bir eliminasyon işlemi daha gerçekleştirilmek
isteniyor ise şekil 13.54'de gösterilen Exclusion rule name ifadesinin sağ tarafındaki boşluğa bu isim
yazılmalıdır. Eğer enso içinde X değerlerinden bazıları (tek-tek) elimine edilecek ise Check to exclude
enso alt penceresi içindeki satırların sol başındaki kutucuklara fare yardımı ile 'tık'lanılması gerekir. Şekil

66
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
13.54'de X (veya Y) eksenindeki ilk üç değer, elimine3 adı altında enso dosyasından (diğer bir ifade ile month
ve pressure vektörlerinin ilk üç elemanı bu vektörler içinden) uzaklaştırılmaktadır. Bu işlemin uygulamaya
sokulabilmesi için son olarak Create exclusion rule butonuna 'tık'lanılması gerekir. Kullanıcı isterse
elimine ettiği elemanları grafik ortamında da görüntüleyebilir. Örneğin daha önce gerçekleştirilmiş olan
eliminasyon3 adlı dosya elemanlarını grafik ortamda görmek istersek şekil 13.54'de elimine2 adlı dosya üzerine
'tık'landıktan sonra Exclude graphically butonuna 'tık'lanılmalıdır. Bu işlem yapıldığında kullanıcının
karşısına şekil 13.55'de görülen pencere çıkar. Burada 'x' işareti ile gösterilen değerler presure vektöründen
elimine edilen değerlerdir. 'o' işareti ile gösterilen değerler ise yeni presure vektörünü oluşturan değerlerdir.

Şekil 13.55 Şekil 13.56

Şekil 13.55'de Exclude All butonuna 'tık'lanıldığında buradaki tüm değerler pressure vektöründen
uzaklaştırılırken, Include All butonuna basıldığında ise elimine edilen tüm değerler geri alınır.

Şekil 13.54'de Exclude Section penceresinde ise elimine edilecek bölgeler belirlenir. Örneğin Y
vektörünün 8'e eşit ve bu değerden küçük değerleri ile Y değerlerinin 10'a eşit ve değerden büyük olduğu
bölgeler, enso içinden uzaklaştırılmak istensin. Bunun için ilk adım olarak şekil 13.56'da gösterildiği gibi
boşluklar doldurulmalıdır. Create exclusion rule butonuna 'tık'lanıldığında bu bölge elimine4 adı
altında kaydedilir. Eğer Exclude graphically butonuna 'tık'lanılırsa şekil 13.57'de gösterilen pencereye
ulaşılır. Bu pencerede sol tarafta elimine edilen bölgeler gri tonla, geri kalan (elimine edilmeyen) bölgeler ise
açık tonla işaretlenmiştir. Sağ tarafta yer alan tabloda ise gri satırlar elimine edilen değerleri, açık renkli satırlar
ise elmine edilmeyen değerleri gösterir (bu tabloda tüm değerler gözükmemektedir). Şekil 13.56'da sağ alt tarafta
yer alan Copy, View, Rename ve Delete butonları aktif değildir. Bu butonların aktif olabilmesi için
Existing exlusion rule penceresi içinde yer alan adlardan bir tanesine 'tık'lamak gerekir. Bu butonlar
kullanılarak bu pencere içinde yer alan dosyalar üzerinde kopyalama, çizdirme, isimlendirme ve silme işlemleri
yapılabilir. Eğer şekil 13.552de 'o' işaretlerinin üzerine fare ile gelinip sol tuşa basılırsa bu işaret 'x' işaretine
dönüşür (Excluded olur). Eğer farenin sol tuşu tutularak işaretler seçilir ise tuş bırakıldığında seçilen 'o'
işaretleri 'x' işaretine dönüşür.

67
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.57 Şekil 13.58

13.6.1.2.8.1. Bölgesel eliminasyon örneği

Yukarıda data eliminasyon işleminin iki türlü; tek-tek ya da bölgesel olabileceği belirtilmişti. Bilindiği gibi tüm
parametrik eşitliklerde, Curve Fitting Toolbox başlangıç katsayılarını şart koşmaktadır. Bazı tip datada
(örneğin; bir çok periyot içeren data) iyi bir başlangıç değeri seçilemez ise tatminkar bir sonuç alınamaz. Böyle
durumlarda bölgesel eliminasyon, uygun bir başlangıç değeri tespit edilme işleminde kullanıcıya yardımcı
olabilir.

Burada bölgesel eliminasyona örnek olarak gürültü içeren bir sinüs dalgasında başlangıç değer kestirimi
yapılacaktır. Aşağıdaki MATLAB satırlarında gurultu_sin adı ile içinde gürültü barındıran bir sinüzoidal
dalga üretilmektedir. Bu dalganın üç önemli parametresi (sırası ile); genlik=10, açısal frekans=16*pi ve faz
farkı=pi/4 olarak, param adlı 3 elemandan oluşan vektörde saklanmaktadır. Zaman ekseni olarak seçilen t
vektörü ; 0 ila 1 saniye arasında değişmektedir, artış değeri olarak 0.005 sn alınmaktadır. Gürültü işaretinin
üretilmesinde (her zamanki gibi) rand komutu kullanılmaktadır.

>>rand('state',0) ('enter')
>>t=[0:0.005:1.0]; ('enter')
>>param=[10 16*pi pi/4]; ('enter')
>>gurultu_sin =param(1)*(sin(param(2)*t+param(3)))+(rand(size(t))-0.5);
('enter')
Yukarıdaki satırlar uygulandığında X ekseni olarak t vektörü, Y ekseni olarak ise gurultu_sin değerleri
kullanılacaktır. Daha önce de açıklandığı gibi; cftool komutu uygulandığında açılan Curve fitting
Tool penceresinde Data.. butonu yardımı ile bu iki vektör X Data ve Y Data olarak atanırlar. Daha sonra
Curve fitting Tool penceresinde Fitting.. butonuna 'tık'lanıldığında açılan pencerede New Fit
butonuna 'tık'lanılmalıdır. Bu işlem sonunda gerekli ayarlamalar yapıldığında şekil 13.58'de verilen görüntü elde
edilir. Bu pencerede Data set ifadesinin sağ tarafındaki boşluğa (üretilen eğri sinüs formunda olduğu için)
sin1 yazılmıştır. Type of fit ifadesinin sağ tarafında ise Sum of Sin Functions seçeneği bırakılmalıdır.
Bu pencerede Fit options..tuşuna basılırsa şekil 13.59'da verilen görüntü, Apply yanındaki kutucuk
'tık'lanırsa şekil 13.60 elde edilir.

68
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.59 Şekil 13.60

Şekil 13.59'da StartPoint değerleri incelendiğinde a1 (sinüs işaretinin genlik değeri hariç ) diğerlerinin
param değerlerine yakın olmadığı görülecektir. Şimdi şu soru sorulabilir: StartPoint değerleri, param
değerlerine nasıl yaklaştırılabilir?. Bu işlem 3 adımda gerçekleştirilebilir. Bu adımlar sıra ile aşağıda
gösterilmiştir:

1- Şekil 13.60'da Exclude.. butonuna 'tık'lanılmalıdır. Bu işlem yapıldığında şekil 13.61'de gösterilen
pencere elde edilir. Bu pencerede Exclusion rule name ifadesinin sağ tarafındaki boşluğa (yalnızca 1
periyotluk data değerleri inceleneceği için) periyot1 yazılmıştır. Select data set ifadesinin sağ
tarafına ise oku kullanarak gurultu_sin vs t ifadesi getirilmelidir. Şekil 13.61'de

Şekil 13.61 Şekil 13.62


Exclude graphically butonuna 'tık'lanıldığında Select Points for Exclusion Rule
penceresi açılır. Bu pencerede farenin sol tuşu (basılı tutularak) yardımı ile 1 periyotluk bir zaman (0.125
saniye) dilimi dışında kalan bölge işaretlenir ve sol tuşu bırakılırsa şekil 13.62'de verilen pencere elde edilir.
Bu pencerede 'x' işaretli data değerleri, Y eksenini oluşturan gurultu_sin adlı vektörün dışına
çıkarılmıştır. Şekil 13.61'de Create exclusion rule butonuna 'tık'lanıldığında, şekil 13.62'de 'o'
işareti ile gösterilen data değerleri periyot1 adlı dosya içine kaydedilmiş olmaktadır.

2- Şekil 13.60'da Fitting.. butonuna 'tık'lanıldığında açılan Fitting penceresinde Copy fit komutuna
'tık'lanıldığında yeni bir Fitting penceresi ortaya çıkacaktır. Bu pencerede Fitname boşluğuna sin2,
Type of fit boşluğuna Sum of Sin Functions yazılarak, Exclusion rule boşluğuna ise ok
yardımı ile periyot1 ifadesi getirildiğinde şekil 13.63 elde edilir. Bu pencerede Apply..butonuna
'tık'lanıldığında ise şekil 13.64'de verilen pencere elde edilir. Şekil 13.64 incelendiğinde genel olarak kabul
edilebilir bir 'eğri uydurma yaklaşımı'na ulaşıldığı söylenebilir.

69
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.63 Şekil 13.64

3- Son adımda ise, 2. adımda ulaşılan a1,a2 ve a3 katsayıları kullanılarak ile 1. adımdaki işlemler tekrar
yapılacaktır (eliminasyon yok). Bunun için ilk adım olarak şekil 13.63'de Table of Fits içindeki sin1
ifadesi üzerine fare ile 'tık'lanılmalıdır. Daha sonra Fit options..tuşuna 'tık'lanılmalı ve açılan pencere
içindeki a1=10.444, a2=43.332 ve a3=3.646 katsayıları yerine 2. adımdaki a1=9.948, a2=50.08 ve
a3=0.7904 katsayıları yazılmalıdır (şekil 13.65). Yeni koşullarda şekil 13.63'de Fit options..butonuna
'tık'lanıldığında şekil 13.66'nın üst penceresi elde edilir. Bu pencerede View/Residuals/Line plot
seçenekleri kullanıldığında ise şekil 13.66 elde edilir. Yeni koşullarda Fitting penceresine ilişkin yeni
değerler ise şekil 13.67'de görülmektedir.

Şekil 13.58 ile şekil 13.67'deki istatistiksel değerler (SSE, R-square) değerleri karşılaştırıldığında önemli
bir iyileşme sağlandığı görülecektir. Yeni çalışma durumunda, şekil 13.63'deki a1=9.948, a2=50.08 ve
a3=0.7904 katsayılarının, şekil 13.67'de; a1=9.996, a2=50.28 ve a3=0.7744 değerlerine dönüştüğü de
gözden kaçmamalıdır

Şekil 13.65 Şekil 13.66

70
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.67 Şekil 13.68

Açıklama: Verilen bir data dosyası içinde yer alan vektörler içinde Inf veya NaN özellikli sayılar var ise bu
sayıları vektörler içinden uzaklaştırmak içn aşağıdaki komut satırları kullanılabilir. Örneğin a adlı bir
vektör içinde hem Inf hem de NaN özellikli sayılar olsun. Bu vektör içindeki Inf sayıları tespit
etmek için isinf komutu, Nan sayıları tespit etmek için ise isnan komutu kullanılır. Bu sayıların
bulunduğu sütun numaraları find komutu ile tespit edildikten sonra bu sayılar boş kümeye atanırlar.
Aşağıdaki komut satırları incelenmelidir.

>>a=[-1 3i -56 inf 0 pi NaN 34]; ('enter')


>>indis1=find(isinf(a)); ('enter')
>>a(indis1)=[ ]; ('enter')
>>indis2=find(isnan(a)); ('enter')
>>a(indis2)=[ ]; ('enter')
>>a
-1. 0 + 3.i -56. 0 3.1416 34.

13.6.1.2.8.2. Fit Options penceresi

Fit Options penceresi, eğri uydurmada işlemindeki yöntem ve parametrelerin tespit edilmesinde kullanılır.
Şekil 13.68'de görülen Fit Options penceresi içinde kullanılan seçenekler, şekil 13.67'de Type of fit
içinde yer alan fonksiyon ve seçeneklere bağlı olarak değişir. Örneğin, Type of fit içinde yer alan
Interpolant ve Smooting spline seçeneklerinde, Fit Options seçenekleri ortadan kalkar. Şekil
13.68'de görülen Fit Options penceresi, Type of fit olarak Exponantial seçeneğine göre
oluşturulmuştur. Bu pencerede görülen terimler aşağıda açıklanmıştır:
 Method
Eğri uydurmada kullanılan yöntemdir. Type of fit içinde seçilen eğri modeline göre, method
otomatik olarak belirlenir. Örneğin lineer modeller için LinearLeastSquares metod, nonlineer
sistemler için NomlinearLeastSquares metod kullanılır.

 Robust

71
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Robust least squares eğri uydurma metodunun tercih edilip edilmeyeceğine karar vermek için kullanılır. Bu
seçenek içinde 4 alt seçenek yer alır.
- Off
Bu seçenek default (kendiliğinden ayarlı) dır. Bu seçenek işaretli olduğunda Robust fitting işlemi yapılmaz.
-On
Robust method (bisquare weights) kullanılır.
-LAR
Least Absolute Residuals ile minimizasyon işlemi yapılarak eğri uydurulur.
-Bisquare
Minimizasyon işlemi, summed square of the residuals (bisquare weighting) yöntemi ile yapılır. Çoğu
durumda robust, eğri uydurmada en iyi seçenektir.

 Algorithm
Eğri uydurmada kullanılacak algoritma seçeneklerini sunar. 3 adet algoritma içerir:
-Trust-Region
-Levenberg-Marquardt
-Gauss-Newton
Şekil 13.68'de yer alan DiffMinChange ve DiffMaxChange seçenekleri, sonlu fark parametrelerini içerir.
DiffMinChange; sonlu fark Jacobianlar için katsayılardaki minimum değişim miktarı (default değeri 10^-8
dir), DiffMaxChange ise sonlu fark Jacobianlar için katsayılardaki maksimum değişim miktarıdır (default
değeri 0.1 dir).

Şekil 13.68'de yer alan MaxfunEvals, MaxIter,TolFun ve TolX seçenekleri ise eğri uydurmada kullanılan
yakınsama kriterlerini içerir. MaxfunEvals; maksimum sayıda model fonksiyon sayısıdır. Default değeri 600
dür. MaxIter; eğri uydurmada kullanılacak maksimum iterasyon sayısıdır. Default değeri 400 dür. TolFun
(default değeri:10^-6) ve TolX (default değeri:10^-6) ise sırası ile fonksiyon ve katsayılar için bitirme
toleransıdır.

Şekil 13.68'de yer alan (en alt pencere) seçenekler katsayı parametrelerine ilişkindir. Unknowns; uydurulan
eğriye ilişkin katsayılardır. StartPoint; katsayı başlangıç değerleridir. Default değerleri seçilen modele
bağlıdır.Lower; uydurulan eğri katsayılarının alt sınırıdır, Gaussians için 0'dan küçük olamaz. Upper;
uydurulan eğri katsayılarının üst sınırıdır.

13.6.1.2.8.3. Prediction Bounds ve Confidence Level

Şekil 13.69 Şekil 13.70

Eğri uydurmada bulunan denklem katsayıları (coefficients) belirli aralık ile birlikte verilir. Örneğin şekil
13.67'de a1 (=9.996) katsayısının 9.941(min) ile 10.05(max) arasında olduğu görülmektedir. Aynı
pencerede confidence bounds değeri olarak %95 seçildiği görülmektedir. Kullanıcı isterse
confidence bounds değerini şekil 13.69'da gösterildiği gibi Curve Fitting Tool penceresini

72
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
kullanarak da seçebilir. Şekil 13.70'de ise confidence bounds değeri olarak %50 seçilmiştir. Her iki
şekilde de noktalı çizgiler, uydurulan eğrinin alt ve üst sınırlarını göstermektedir. Her iki şekilde de görüldüğü
gibi confidence bounds değeri azaldıkça noktalı çizgiler asıl eğriye (düz çizgili) yaklaşmaktadır.
confidence bounds değeri büyüdükçe a1'in alt ve üst sınır değerleri arasındaki fark artacaktır.
confidence bounds değerinin ne anlama geldiğini açıklamak için şöyle bir örnek verilebilir: Mevcut x ve
y ekseni data değerlerini kullanarak bir eğri uydurulmuş olsun. Daha sonra (örneğin) x=5 yeni bir x değerine
karşı gelen y değeri sorulsun. Bu işlemi yapabilmek için daha önce elde edilen (uydurulan) eğri denkleminden
faydalanılacağı aşikardır. Eğer eğri denklemini elde etmeden önce confidence bounds değeri olarak
(örneğin) %95 seçilmiş ise, x=5 değerine karşı gelen y değeri, %95 olasılıkla şekil 13.69'da gösterilen iki kesik
eğri arasındaki bölge içinde kalacaktır. Eğer %50 seçilirse x=5 değerine karşı gelen y değeri %50 olasılıkla şekil
13.70'de gösterilen iki kesik eğri arasındaki bölge içinde kalacaktır. Görüldüğü gibi confidence bounds
değeri büyüdükçe (y değerinin içinde kalacağı) bant aralığı genişlemektedir (aranan y değeri daha geniş sınırlar
arasında aranmaya başlanmaktadır). Her iki şekilde de View menüsü içindeki prediction bounds
seçeneğinin işaretli olduğu unutulmamalıdır. Eğer bu seçenek işaretlenmez ise her iki şekilde yer alan kesik
çizgiler ortadan kalkar. Şekil 13.67'de Results penceresine bakarak, üstteki kesik çizgili eğrinin;
y=9.941*x^2+50.26*x+0.7633, alttaki kesik çizgili eğrinin ise y=10.05*x^2+50.3*x+0.7855
denklemi ile gösterildiği söylenebilir. Düz çizgiye (asıl eğri) ilişkin denklem ise
y=9.996*x^2+50.28*x+0.7744 eşitliği ile verilmiştir.

13.6.1.2.8.4. Residual hakkında

Residual (rezidü) vektörü, ölçüm sonucu bulunan y vektörü ile eğri uydurma sonunda elde edilen y vektörü
arasındaki farka eşittir. Residual değişimini çizmek için Curve Fitting Tool penceresinde yer alan
View/Residual menüsüne girilmelidir. Rezidü değişim eğrisi iki şekilde olabilir.

1-Örneğin, data değerleri (ölçüm değerleri) şekil 13.71'de gösterildiği gibi değişiyor ise, bu değerlere ilişkin
rezidü eğrisi şekil 13.72'de gösterildiği formda olacaktır (bu tip eğriler iyi bir eğri uydurma yapıldığına işaret
eder). Burada görüldüğü gibi rezidü eğrisinin değişimi, y=0 eğrisinin etrafında dolaşmaktadır.

Şekil 13.71

Şekil 13.72
2-Örneğin, data değerleri (ölçüm değerleri) şekil 13.73'de gösterildiği gibi değişiyor ise, bu değerlere ilişkin
rezidü eğrisi şekil 13.74'de gösterildiği formda olacaktır (bu tip eğriler kötü bir eğri uydurma yapıldığına
işaret eder). Burada görüldüğü gibi rezidü eğrisi (şekil 13.72'nin aksine), y=0 eğrisinin etrafında

73
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
dolaşmamaktadır. Böyle bir rezidü eğrisi ile karşılaşıldığında yapılacak şey; eğri modelinin, Fitting
penceresindeki Type of Fit alt penceresi içinde yer alan diğer eğri modellerinden birisi ile değiştirilmesidir.

Şekil 13.73

Şekil 13.74

13.6.1.2.8.5. Parametrik olmayan eğri uydurma

Şimdiye kadar parametrik eğri uydurma yaklaşımları tanıtıldı. Bazen kullanıcı ölçüm sonucu elde edilen data
değerleri ile uydurulan eğri arasındaki uyumun çok daha düzgün olmasını arzu edebilir. Böyle bir durumda
cftool ortamı kullanıcıya Interpolant ve Smooting Spline seçeneklerini sunar. Bu iki seçenek
Fitting penceresindeki Type of Fit alt penceresi içinde yer alır. Bu iki seçenek kullanıldığında şekil
13.75'de görüldüğü gibi, eğri denklemi (katsayıları) olmaz (Fitting penceresinin Result alt penceresinde
uydurulan eğriye ilişkin yalnız, istatistiksel katsayı değerleri bulunur). Kullanıcı bu iki modeli kullanarak eğriye
ulaştığında, eğri üzerine fare ile gelip sol tuşa basarsa, açılan küçük pencere içinde bu noktanın x ve y
değerlerini görür (şekil 13.76). Smooting Spline modelinde düzgün bir eğri uydurmak için Smooting
parameter (p) seçeneği kullanılır (örneğin, şekil 13.75'de p=0.99 alınmıştır). Interpolant seçeneği
altında kullanıcıya 4 farklı alt model sunulur: linear, nearest neighbor, cubic spline ve
shape-preserving.

74
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 13.75 Şekil 13.76

14.1.4. Üç boyutlu integrasyon

Aşağıda verilen üç boyutlu integral;

z max y max x max


q=    f ( x , y, z )dxdydz (14.8)
z min y min x min

MATLAB ortamında (Simpson veya Lobatto yöntemleri ile üç boyutlu integral alma işlemi için) triplequad
komutu ile hesaplanır.

q=triplequad(‘fonksiyon’,xmin,xmax,ymin,ymax,zmax,zmin): fonksiyon yerine


gelecek eğri denklemi üç değişkenli olan q=f(x,y,z) şeklinde olmalıdır. Dış integralin
alt sınırı zmin, üst sınırı zmax, ortadaki integralin alt sınırı; ymin, üst sınırı ise ymax
alınmalıdır. Dıştaki integralin alt sınırı xmin, üst sınırı xmax olmalıdır. dblquad
komutunu kullanmak için öncelikle f(x,y,z) eğrisi tanımlanmalıdır.

>> q=triplequad('x.^2+y.^2+z.^2',0,5,-3,2,-1,4)
q =
1875

Kullanıcı isterse yukarıdaki komut satırı içinde yer alan iki tırnak içindeki yere bir alt program ismi yazabilir.
Daha sonra bu alt program dosyası içine integre edilecek fonksiyonu yazarak da aynı işlemi yapabilir.

Problem 14.8

Şekil 14.20’de verilen taralı alanı gösteren OKB alanını hesaplayan ve her iki eğriyi aynı eksen üzerine çizdiren
MATLAB programını yazınız. (Not: Hiçbir hesaplama el ile yapılmayacak, hepsi MATLAB ortamında
gerçekleştirilecektir)

75
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

y2  x2

B y 1  0. 5 x  1
1 K

A x
-2 0 b
Çözüm Şekil 14.20

a=roots([1 -0.5 -1]) % y1 ve y2 eğrilerinin kesiştiği noktalar aranıyor


b=a(2) % B noktasının apsis değeri
OKBb_yamugu=quad('0.5*x+1’,0,b)
ObB_alti=quad('x.^2',0,b) % yarim parabolun altindaki alan
alan=OKBb_yamugu- ObB_alti % aranılan alan hesabı
x=-2:0.1:2;
y=0.5*x+1;
hold on % iki egri ayni eksen uzerine cizdiriliyor
plot(x,y)
y1=x.^2;
plot(x,y1)

Yukarıda verilen programın çalıştırılması sonunda elde edilen değerler aşağıda gösterilmiştir. Program sonunda
elde edilen her iki eğri ise şekil 14.21’de gösterilmiştir.

>>a =
-0.7808
1.2808
b =
1.2808
OKBb_yamugu =
1.6909
ObB_alti =
0.7003
alan =
0.9905
>>

76
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 14.21

Problem 14.9

Şekil 14.22'de verilen taralı alanı gösteren ABO alanını hesaplayan MATLAB programını yazınız. (Not: Hiçbir
hesaplama el ile yapılmayacak, hepsi MATLAB ortamında gerçekleştirilecektir)

y2  x2

y1  0.5x  1
1 K
B
A Şekil 14.22 x
-2 b 0
Çözüm

>>a=roots([1 -0.5 -1]) %y1 ve y2 eğrilerinin kesiştiği noktalar aranıyor


>>b=a(1) % B noktasının apsis değeri
b=
-0.78077640640442
>>BbO_alani=quad('0.5*x+1-x.^2',b,0)
>>AKO_alani=quad('0.5*x+1',-2,0) % üçgenin alanı
>>alan=AKO_alani- BbO_alani % aranılan alan hesabı
alan=
0.53029000000000
>>x=-5:0.1:5;
>>y=0.5*x+1;
>>hold on
>>plot(x,y)
>>y1=x.^2;
>>plot(x,y1)

Problem 14.10

77
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

y
y2  x2

B y1  0.5x  1
1 K

A x
-2 0 b

Şekil 14.23'de verilen taralı alanı gösteren OKBŞekil


alanını hesaplayan MATLAB programını yazınız. (Not: Hiçbir
14.23
hesaplama el ile yapılmayacak, hepsi MATLAB ortamında gerçekleştirilecektir)

Çözüm

>> a=roots([1 -0.5 -1])% y1 ve y2 eğrilerinin kesiştiği noktalar aranıyor


>> b=a(2) % B noktasının apsis değeri
>> OKBb_yamugu=quad('0.5*x+1,0,b)
>> ObB_alti=quad('x.^2',0,b) % yarim parabolun altindaki alan
>> alan=OKBb_yamugu- ObB_alti % aranılan alan hesabı
>> x=-2:0.1:2;
>> y=0.5*x+1;
>> hold on % iki egri ayni eksen uzerine cizdiriliyor
>> plot(x,y)
>> y1=x.^2;
>>plot(x,y1)

15.6. Yüksek mertebeden diferansiyel denklemlerin çözümü

n. mertebeden bir diferansiyel denklem, (değişken dönüşümü yapılarak) n adet birinci mertebeden diferansiyel
denklem sistemine dönüştürülebilir. Bu yaklaşım MATLAB ortamında çok kullanılır. n. mertebeden bir
diferansiyel denklem;

d n y( t ) d n -1 y( t ) d n - 2 y( t )
cn  c n -1  c n -2  ......  c o y( t )  f ( t )
dt n dt n -1 dt n -2
(15.15)
veya

c n y ( n ) ( t )  c n -1 y ( n -1) ( t )  c n -2 y ( n -2) ( t )  ......  c o y( t )  f ( t )


(15.16)

olarak verilsin. (15.16) eşitliği tekrar düzenlenirse;

c c c 1
y ( n ) ( t )  ( n -1 y ( n -1) ( t )  n -2 y ( n -2) ( t )  ......  o y( t ))  f (t )
cn cn cn cn

y ( n ) ( t )  a n -1 y ( n -1) ( t )  a n -2 y ( n -2) ( t )  ......  a o y( t )  k * f ( t ) (15.17)

78
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
elde edilir. Değişken dönüşümü yapılarak;
x 1 ( t )  y( t )

x 2 ( t )  y (1) ( t )
.
.
x n ( t )  y ( n -1) ( t ) (15.18)

elde edilebilir. (15.18)’de verilen eşitliklerin her iki tarafı t’ye göre türetilirse;

x 'n ( t )  y ( n ) ( t )  a n 1 y ( n -1) ( t )  a n 2 y ( n -2) ( t )  ......  a o y( t )  k * f ( t )

x 'n -1 ( t )  y ( n -1) ( t )
.
.
x 1' ( t )  y ' ( t ) (15.19)

x 1 ( t )  y( t )

elde edilir.Böylece (15.15)’de verilen n. mertebeden bir adet diferansiyel denklem (15.19)’da görüldüğü gibi
birinci mertebeden n adet diferansiyel denkleme dönüşmüştür.

Problem 15.9

y ''  y ' (1 - y 2 ) - y

a) Yukarıda verilen 2.mertebeden diferansiyel denklemi, birinci mertebeden 2 adet diferansiyel denkleme
dönüştürünüz ( y → y( t ) ).
b) Elde edilen iki adet birinci mertebeden diferansiyel denklemi [0 20] aralığında, y ' (0)  0 ve y(0)=0.25
ilk koşulları altında MATLAB ortamında çözünüz ve gerekli eğrileri çizdiriniz.

Çözüm
a) x 1  y( t ) ; x 2  y'

değişken dönüşümleri yapılır ve elde edilen eşitlikler her iki taraftan t’ye göre türetilirse;

x 1'  y ' ; x '2  y ''

elde edilir. x 1'  y ' eşitliği, x 1  y( t ) eşitliği ve x 2  y ' eşitliği y ''  y ' (1 - y 2 ) y ifadesinde
yerlerine konulursa;

x '2  x 2 (1 - x 12 ) - x 1 (1)

elde edilir. x 1'  y ' ve x 2  y ' eşitlikleri birlikte kullanılırsa;

x 1'  x 2 (2)

bulunur. Böylece y ''  y ' (1 - y 2 ) - y eşitliği, iki adet birinci mertebeden diferansiyel denkleme dönüşmüş
olmaktadır.

79
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
b)Öncelikle yukarıda verilen (1) ve (2) numaralı birinci mertebeden iki adet diferansiyel denklem bir alt program
içine sokulmalıdır. Bu amaçla kullanılacak function programının ismi gcoz3.m olsun ve MATLAB editör
ortamında yazılsın:

Şekil 15.10

function turev = gcoz3(t,x)


turev = [x(2);x(2).*(1-x(1).^2)-x(1)]; % turev=[dx(1);dx(2)]

Alt programı çağıran ana MATLAB programı ise aşağıda verilmiş, elde edilen eğriler ise şekil 15.10’da
gösterilmiştir:

[t ys]=ode23('gcoz3',0,20,[0.25 0]);
subplot(211), plot(t,ys(:,1));
title ('y nin zamanla degisimi'),xlabel('t'), grid;
subplot(212), plot(t,ys(:,2));
title ('y’nin birinci türevinin zamanla degisimi'),
xlabel('t'), grid

Problem 15.10
y '''  70 y ''  300 y '  1000 y  0
diferansiyel denklemini [0 5] aralığında y '' (0)  y ' (0)  0 , y(0)=0.05 ilk koşulları altında değişken
dönüşümünü kullanarak MATLAB ortamında sayısal çözümünü bulunuz ve çizdiriniz.

Çözüm
x 3  y ''→ x 3 (0)  y '' (0)  0 ,
x 2  y ' → x 2 ( 0)  y ' ( 0)  0 ,
x 1  y → x 1 (0)  y(0)  0 .05

durum değişkenleri yardımı ile;

x 3'  y ''' ⇒ x 3'  -70x 3 - 300x 2 - 1000x 1


x '2  y '' ⇒ x '2  x 3
x 1'  y ' ⇒ x 1'  x 2

elde edilir. Öncelikle yukarıda verilen birinci mertebeden üç adet diferansiyel denklem bir alt program içine
yazılmalıdır. Bu amaçla kullanılacak function programının ismi gcoz4.m olsun ve MATLAB editör
ortamında yazılsın:

80
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 15.11

function dx = gcoz4(t,x)
dx=[x(2);x(3);-70*x(3)-300*x(2)-1000*x(1)]; % dx=[dx(1);dx(2);dx(3)]

Yukarıda verilen alt programı çağıran ana MATLAB programı aşağıda verilmiş, elde edilen eğriler ise şekil
15.11’de gösterilmiştir:

[t ys]=ode23('gcoz4',0,5,[0.05 0 0]);
subplot(311), plot(t,ys(:,1));
title ('y nin zamanla degisimi'),grid;subplot(312), plot(t,ys(:,2)); title
('y nin birinci turevinin zamanla degisimi'), grid;
subplot(313), plot(t,ys(:,3));
title ('y nin ikinci turevinin zamanla değişimi'), xlabel('t'), grid

15.8. Doğrusal diferansiyel denklemlerin doğrusal benzetim fonksiyonları ile çözümü

Control system toolbox’ın yapısı içinde yer alan lsim, impulse, step, initial gibi
MATLAB komutları kullanılarak doğrusal diferansiyel denklemlerin çözümü yapılabilmektedir. Bu komutların
kullanılabilmesi için verilen diferansiyel denklemin ‘durum denklemi’ yada ‘transfer fonksiyonu’ biçiminde
yazılması yeterlidir. ‘Kontrol mühendisliği problemlerinin MATLAB ile çözümü’ başlığı altında yukarıda
bahsedilen MATLAB komutları daha teferruatlı olarak anlatılacaktır. Burada yalnızca lsim komutu hakkında
bilgi verilecektir. Eğer diferansiyel denklem takımı (alt indisler matris boyutlarını göstermektedir):
d
x ( t ) n*1  a n*n x ( t ) n*1  b n*m u ( t ) m*1 (15.20)
dt

y( t ) k*1  c k*n x ( t ) n*1  d k*m u ( t ) m*1 (15.21)

şekline getirilebilmiş ise lsim komutunu kullanarak x(t)-durum değişken değerlerini- ve y(t)-çıkış değerlerini-
bulmak mümkündür.

[y x] = lsim (a,b,c,d,u,t,x0)

Yukarıda verilen MATLAB komutu içinde yer alan ve (15.20) ve (15.21) eşitliklerinde kullanılan değişkenler
aşağıda tanıtılmıştır. Yukarıda verilen matris boyutlarına ilişki tanımlar aşağıda verilmiştir:

n : durum değişkenlerinin sayısı


m : giriş değişkenlerinin sayısı
k : çıkış değişkenlerinin sayısı

Yukarıda verilen matrislerin tanımları ise aşağıda verilmiştir:

81
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

y : çıkış değerleri vektörü


x : durum değişkeni vektörü
a : durum değişkeni katsayılar matrisi
b : giriş fonksiyonu katsayılar matrisi
c : durum değişkeni katsayılar matrisi
d : giriş fonksiyonu katsayılar matrisi
u : giriş fonksiyonu vektörü. Ör: u=cos(t). Bu matrisin satır sayısı ‘t’ zaman vektörü eleman sayısı kadar
olmalıdır. Bu amaçla length komutu da kullanılabilir. Bir adetten fazla giriş işareti alan sistemlerde giriş
sayısı u matrisinin sütun sayısına, length ise u matrisinin satır sayısına eşit olmalıdır. t süresi 0:Δt: t son
formunda belirlenmelidir. Örneğin u(t) matrisi 1*1 boyutunda bir adet giriş fonksiyonunu içeriyor ise her t
anı için b*u(t) işlemi ayrı ayrı gerçekleştirilir.
x0 : durum değişkenlerinin başlangıç değerlerini belirleyen sütün vektörüdür. Boyutu durum değişkenleri
sayısına eşittir. Eğer bu vektör elemanları verilmemiş ise MATLAB, x0 vektörünü sıfır olarak alır.

Eğer x0 vektörü belirtilmeksizin;

[y x] =lsim (a,b,c,d,u,t)

komutu kullanılır ise lsim komutu y(t) değişimini çizdirir. Eğer ‘x’ durum değişkenlerinin değeri araştırılmıyor
ise yukarıdaki komut ; y =lsim(a,b,c,d,u,t) şeklinde de kullanılabilir.

Problem 15.14

y '''  70 y ''  300 y '  1000y  0

diferansiyel denklemini [0 5] aralığında y '' (0)  y ' (0)  0 , y(0)=0.05 ilk koşulları altında değişken
dönüşümü ve lsim komutunu kullanarak MATLAB ortamında sayısal çözümünü bulunuz ve y(t) eğrisini çiziniz.

Çözüm

Problem 15.10’da, yukarıda verilen diferansiyel denklemin değişken dönüşümü yapılmış ve aşağıda verilen 1.
mertebeden diferansiyel denklemler elde edilmişti:

x 3'  -70 x 3 - 300 x 2 - 1000 x 1


x '2 = x 3
x 1' = x 2

çıkış → y  x 1

x 1 (0)  0.05 ; x 2 (0)  0 , x 3 (0)  0 (ilk koşullar)

Yukarıda verilen durum denklemleri matris formunda yazılırsa;

 x1   0 1 0   x1   x1 
d   
 x2   0 0 1   x 2  ; y  1 0 0  x 2  ; x (0)   0.05 0 0
dt
 x 3  - 1000 - 300 - 70  x 3   x 3 

bulunur. Yukarıdaki matris eşitliğinden elde edilen a,b,c,d matrisleri aşağıda gösterilmiştir:

82
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
 0 1 0  0 
 1   
a 0 0  ; b  0 ; c  1 0 0 ; d=[ ]

 - 1000 - 300 - 70
 0

Elde edilen durum denklemlerinin MATLAB-editör ortamında lsim komutu ile çözümünü yapan satırlar
aşağıda verilmiştir:

a=[0 1 0;0 0 1;-1000 -300 -70];b=[0; 0; 0]; c=[1 0 0];d = 0;


x0 = [0.05 0 0];
t = 0:0.1:10;
u = zeros(length(t),1);
y = lsim(a,b,c,d,u,t,x0);
plot(t,y(:,1)); % plot(t,y(t) de yazılabilirdi
title('lsim komutu ile dif.denklem cozumu'), xlabel('t'), ylabel('y(t)'),
grid;

Eğer y’nin her t anı için aldığı değerler merak edilirse, yukarıdaki programın en son satırına y yazmak
yeterlidir. Programın çalıştırılması sonunda elde edilen çizim şekil 15.13’de gösterilmiştir.

Şekil 15.13

Problem 15.15

Seri R,L,C devresi v( t )  2 220 sin 2 πft volt olan bir alternatif gerilim kaynağı tarafından beslenmektedir.
Devreden akan i(t) akımının değişimini çiziniz. i ' (0)  0 , i(0)=0 alınız.
(R=1 ohm, L=1 henry , C=1 farad, f=5*10-3 hz)

Çözüm

Seri R,L,C devresine Kirchhoff gerilim yasası uygulanır ise;

di( t ) 1
v( t )  2 220 sin(2 π5 *10 -3 t )  L  Ri( t )  ∫ i ( t )dt
dt C

elde edilir. Eşitliği integralden kurtarmak için her iki tarafın t’ye göre türevi alınır ise;

d 2 i( t ) di( t )
2 220 * 2 * π * 5 *10 -3 * cos 2 π5 *10 -3 t    i( t )
2 dt
dt

elde edilir. Yukarıdaki eşitlik daha basit olarak ifade edilirse;

9.77 cos 2π5 *10 -3 t  i ''  i '  i

83
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
elde edilir. İkinci mertebeden diferansiyel denklem değişken dönüşümü yardımı ile birinci mertebeden iki
diferansiyel denkleme dönüştürülebilir:

i'  x 2 ;
i  x 1 (çıkış fonksiyonu);

alınırsa;

i ''  x '2 ; i '  x 1' ; i  x 1

elde edilir. Yukarıda verilen diferansiyel denklem, böylece iki adet birinci mertebeden diferansiyel denkleme
dönüştürülmüş olmaktadır:

x '2   x 2 - x 1  9.77 cos 2 π5 *10 -3 t

x 1'  x 2

Bulunan denklemler durum denklemleri ve transfer fonksiyonu cinsinden yazılırsa;

d  x1   0 1   x1   0 
x     x     cos 2 π5 *10 -3 t % cos 2 π5 *10 -3 t ; giriş fonksiyonu (u(t))
dt  2  - 1 - 1  2  9.77 
x 
y  1 0  1  ; x 0   x 1 (0) x 2 ( 0)    0 0
x 2 

elde edilir. Elde edilen bu matris denklemlerinin çözüldüğü MATLAB programı aşağıda verilmiştir. Program
sonunda elde edilen akım-zaman değişimi ise şekil 15.14’de gösterilmiştir.

a=[0 1;-1 -1]; b=[0 ; 9.77]; c=[1 0]; d=0;


x0= [0 0];
% akim degisimi 0:150 saniye arasinda incelenmektedir
t = 0:0.1:150;
u = cos(2*pi*5*0.001*t);
x0 = [0 0];
y = lsim(a, b, c, d, u, t, x0);
plot(t,y);
title('lsim komutu ile RLC devresi akimi cozumu');
xlabel('t');ylabel('i(t)');grid;

Şekil 15.14
Şekil 15.14' de görüldüğü gibi i(t) akımı geçici bir değişimi takiben sürekli sinüzoidal duruma geçmektedir.

84
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

15.9. Parçalı fonksiyon durumunda diferansiyel denklemin çözümü

Bazı durumlarda diferansiyel denklem sisteminin içinde yer alan u(t) fonksiyonu parçalı olabilir. Bu durumda
u(t) fonksiyonu uygun aralıklarda tanımlanarak diferansiyel denklemin çözümü yapılmalıdır. Aşağıdaki problem
incelenmelidir:

Problem 15.16

y ' ' ( t ) + 3 y ' ( t ) + 2 y( t ) = u ( t ) ; y ' (0)  0 , y(0)=0

0, t0

u ( t )  1, 0  t 1
 0, t 1

Yukarıda verilen diferansiyel denklemin çözümünü sağlayan y(t) değişimini çizen MATLAB programını yazınız.

Çözüm

Verilen diferansiyel denklemde değişken dönüşümü yapılırsa;

y(t)= x 1 ; y ' ( t )  x 1' ( t )  x 2 ( t ) ; y '' ( t )  x '2 ( t ) ;

elde edilir. Bu eşitlikler verilen diferansiyel denklemde yerine konulursa;

x '2 ( t )  3x 2 ( t )  2 x 1 ( t )  u ( t )
x 1' ( t )  x 2 ( t )

iki adet birinci dereceden diferansiyel denklem elde edilir. İki adet diferansiyel denklem kullanılarak sisteme
ilişkin durum denklemi;

d  x 1   0 1   x 1   0  x1 
        u(t) ; cikis(t)=[1 0]   +0*u(t) % x1=y(t) çıkış değişkenidir
dt  x 2  - 2 - 3  x 2  1  x 2

olarak elde edilir. Yukarıda verilen durum denklemlerini lsim komutu yardımı ile çözen ve y(t)= x 1 ( t )
değişimini çizdiren MATLAB programı aşağıda verilmiştir:

a = [0 1;-2 -3];b = [0; 1];c = [1 0];d = 0;


x0 = [0 0]; % ilk kosullar
t = 0:0.01:10; % daha hassas cizim icin delta t =0.01 yapiliyor
u=ones(1,length(t)); % t ile u(t) nin boyutu esit yapiliyor

%parcali u(t) tanitiliyor


for h=1:length(t);
if t(h)<0;
u(1,h) = 0;[1,length(t)];
end
if 0<=t(h) & t(h)<=1; u(1,h)=1;
end
if t(h)>1, u(1,h)=0;
end
end
%parcali u(t) tanitimi sona erdi

85
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
[cikis x] = lsim(a,b,c,d,u,t,x0);
% x=[x1 x2] oldugu hatirlanmalidir
x1=x(:,1); % x1(t)= y(t) oldugu hatirlanmalidir.
x2=x(:,2); % x2(t)= y(t)nin türevi oldugu hatirlanmalidir
% Aranan çozum x1(t) degisimidir.
plot(t,x1);
title('lsim komutu ile dif.denklem cozumu');
xlabel('t');
ylabel('y(t)');
grid;

Yukarıda verilen MATLAB programının çalıştırılması durumunda elde edilen y(t)= x 1 (t) değişimi şekil 15.15’de
gösterilmiştir.

Şekil 15.15

Problem 15.19

3y ''' - 2 y ''  y  h ( t )

y '' (0)  0 ; y ' (0)  -1 ; y(0)  1 ; y=y(t); y '  dy / dt

h(t)
10
5

0 0.5 1 t (sn)

Şekil 15.18

Yukarıda verilen diferansiyel denklemi sağlayan y(t) değerlerini bulan ve y(t) değişimini çizdiren MATLAB
programını yazınız. h(t) değişimi şekil 15.18’de gösterilmiştir. (Not: Çözümde lsim komutu kullanılacaktır)

Çözüm

Verilen diferansiyel denklemde değişken dönüşümü uygulanırsa;

3y ''' - 2 y ''  y  h ( t )

y '' (0) = -1 ; y (0)  1 ;


'
y=y(t); y '  dy / dt

86
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
2 1 1
x 3'  y '''  x 3 - x 1  h ( t )
3 3 3
x '2  y ''  x 3
x 1'  y '  x 2
x1  y

elde edilir. Yukarıda verilen 1. dereceden diferansiyel denklemler lsim komutunda kullanılabilecek formda
yazılırsa;

 x1   0 1 0   x1   0 
d       1 
x2  0 0 1  x 2    0  h (t )
dt    3
 x 3  - 1 / 3 0 2 / 3  x 3  1 / 3
 x1 
y  1 0 0  x 2   0 * h ( t ) ; x(0)= 1 -1 0
 x 3 

elde edilir. Yukarıdaki ifadeleri gözeterek yazılan MATLAB programı aşağıda verilmiştir;

a=[0 1 0; 0 0 1; -1/3 0 2/3];b=[0; 0; 1/3];c=[1 0 0];d=0;


x0=[1 -1 0];
t=0:0.01:1;
% parcali h(t) tanitiliyor
uzun=length(t);
for s=1:uzun
if t(s)>=0 & t(s)<=0.5
h(1,s)= 10;
else
h(1,s)= 5;
end
end
y=lsim(a,b,c,d,h,t,x0)
plot(t,y);
title(‘lsim komutu ile diferansiyel denklem cözümü’);

Yukarıda verilen MATLAB programının çalıştırılması sonunda elde edilen çizim şekil 15.19’da gösterilmiştir.

h(t)
1

t
1 2

Şekil 15.19 Şekil 15.20

Problem 15.20

87
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
x '  3x  y  h ( t )

y ' - 3x  w  -2h ( t )

w '  3y - 2  0

diferansiyel denklem sistemini x(0)=0, y(0)=-1, w(0)=2 ilk koşulları altında t  [0: 2]
aralığında hassasiyetle çözen ve x(t), y(t) ve w(t) değişimini alt alta çizdiren MATLAB
programı yazınız. h(t) değişimi şekil 15.20’de verilmiştir.

Çözüm
x  x (1)
y  x ( 2) % ode komutunda bu gösterim tercih edilir
z  x (3)

x 1'  -3x (1) - x ( 2)  h ( t )


x '2  3x (1) - x (3) - 2h ( t )
'
x3  -3x ( 2)  2

Yukarıda verilen eşitlikler aşağıdaki program satırları ile çözülebilir:

[t w]=ode23('gcozturev',[0 2], [0 -1 2]');


subplot(3,1,1), plot(t,w(:,1)), title('x(t) cizimi')
subplot(3,1,2), plot(t,w(:,2)), title('y(t) cizimi')
subplot(3,1,3), plot(t,w(:,3)), title('z(t) cizimi')
% ode komutu geregi olarak
% w(:,1)) vektoru x=x(1) vektorune esittir
% w(:,2)) vektoru y=x(2) vektorune esittir
% w(:,3)) vektoru z=x(3) vektorune esittir

Aşağıda ise yukarıdaki ana programda kullanılan altprogram satırları verilmiştir:

function turev=gcozturev(t,x) % t vektorunu ode komutu icinden


okur
for a=1:length(t);
if t(a)<=1;
h(a)=1; % 0 ile 1 arasında gecerli olan h(t)
ifadesi
else

88
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
h(a)=-t(a)+2; % 1 ile 2 arasında gecerli h(t)
ifadesi
% (y=-x+2 denklemi)
end
turev = [-3*x(1)-2*x(2)+h(a); 3*x(1)-x(3)-2*h(a); -3*x(2)+2];
end

Yukarıda verilen MATLAB program satırlarının uygulanması ile elde edilen x(t),y(t),z(t) değişimleri şekil
15.21’de gösterilmiştir.

Şekil 15.21
Problem 15.21

Doğru gerilim kaynağından beslenen seri R,L,C devresinde kaynak gerilimi; E=2 Volt, R=40 ohm, L=0.1 Henry,
C  10 -7 Farad olarak verilmektedir. Kapasitenin t=0 anında uçları arasındaki gerilim değeri v c (0)  0
Volt, devre akımı i(0)=0 Amper olduğuna göre v c ( t ) ve i(t) değişimlerini t=[0;0.03] sn aralığında çizdiriniz.

Çözüm

Seri R,L,C devresine Kirchoff gerilim yasası uygulanırsa;


di ( t )
E  R * i( t )  L  v c (t )
dt
elde edilir. Kapasitenin tanım bağıntısı;
dv c ( t )
i( t )  C
dt
olduğuna göre yukarıda verilen iki adet diferansiyel denklem aşağıdaki formda yazılabilir;

d v c   0 1 / C  v c   0 
  
- R / L  i  E / L
u (t )
dt  i  - 1 / L
v c 
v c = y  cikis  1 0    0 * u ( t )
 i 
x vektörü için;

v 
x   c
 i 

89
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
yazılabilir. Yukarıda verilen diferansiyel denklemler aşağıdaki program satırları ile çözülüp çizdirilebilir:

E=2;R=40;L=0.1;C=10^-7;
a = [0 1/C ;-1/L -R/L];b = [0; E/L], c = [1 0]
d = 0; x0 = [0 0];t = 0:0.0001:0.01;
u = ones(1,length(t))
[cikis x] = lsim(a,b,c,d,u,t,x0)
figure(1)
plot(t,x(:,1)),xlabel('t'), ylabel('Vc(t)'), grid;
title('seri R L C devresinde kapasita uclari arasindaki...
gerilim degisimi');
figure(2)
plot(t,x(:,2)),xlabel(‘t’), ylabel(‘i(t)’), grid
title(‘seri R L C devresinde akim degisimi’),
disp([' t vc i']);
disp([t',x]) ;

Yukarıda verilen programın çalıştırılması sonunda elde edilen gerilim ve akım değerleri şekil 15.22 ve şekil
15.23’de gösterilmiştir.

Şekil 15.22 Şekil 15.23

Problem 15.22
d 3 y( t ) dy ( t )
a) y' ' '  3y'4 y  10 cos 3t ; [  y' ' ' ,  y' olarak ifade edilmiştir]
3 dt
dt
diferansiyel denklemini x 1 ( t )  y( t ) kabulü altında 3 adet 1. dereceden diferansiyel denkleme
dönüştürerek ode23 yardımı ile çözünüz ve y( t ) ve y' ' ( t ) değişimlerini subplot komutu yardımı ile
çizdiriniz. Çizimde üstte y(t) olacak altta ise y' ' ( t ) çizdirilecektir. t aralığı [0;2] olacaktır. y' ' (0)  0 ,
y' (0)  0 , y(0)=1 alınız.
b) y '''  3y '  4 y  h ( t ) ;
diferansiyel denklemini x 1 ( t )  y( t ) kabulü altında lsim komutu yardımı ile çözerek y( t ) ve y' ' ( t )
değişimlerini subplot komutu yardımı ile çizdiriniz. h(t) değişimi şekil 15.24'de verilmiştir.Çizimde üstte
y(t) olacak altta ise 2. dereceden türevin ( y' ' ( t ) ) t'ye göre türevi çizdirilecektir. t aralığı [0;2]olacaktır.
y' ' (0)  0 , y' (0)  0 , y(0)=1

h(t)

0 t (sn)
1 2

90
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Şekil 15.24

Çözüm
a) x 1 ( t )  y( t ) ; x 2 ( t )  y ' ( t ) ; x 3 ( t )  y '' ( t )
x 3' ( t )  3x 2 ( t )  4 x 1 ( t )  10 cos 3t
x '2 ( t )  x 3 ( t )
x 1' ( t )  x 2 ( t )

ana program
% ys;satırları t olan,sutunları ise sırası ile y(t),y'(t),y''(t)
% olan bir matristir.
[t, ys]=ode23('yazalt12',[0 2],[1 0 0]); % x1(0)=1,x2(0)=0,x3(0)=0
subplot(211), plot(t,ys(:,1));
title ('y nin zamanla degisimi'),grid;
subplot(212),plot(t,ys(:,3));
title ('y nin ikinci turevinin zamanla degisimi'),grid;

alt program
function dx=yazalt12(t,x)
dx=[x(2);x(3);-4*x(1)+3*x(2)-10*cos(3*t)];

Şekil 15.25

Yukarıda verilen programın çalıştırılması sonunda elde edilen eğriler şekil 15.25'de gösterilmiştir.

 x 1 ( t )   0 1 0  x 1 ( t )   0 
d 
b)  x 2 ( t )   0 0 1  x 2 ( t )   0  h ( t )
dt
 x 3 ( t )   4 3 0  x 3 ( t )   1

a=[0 1 0;0 0 1;-4 3 0];


b=[0;0;- 1];
c=[0 0 0];
d=0;
x0=[1 0 0]; % ilk kosullar
t=0:0.01:2; % daha hassas cizim icin delta t =0.01 yapiliyor
u=ones(1,length(t)); % t ile u(t) nin boyutu esit yapiliyor
% asagida parcali u(t) tanitiliyor

91
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
for h=1:length(t);
if t(h)<0; u(1,h) = 0;
end
if 0<=t(h) & t(h)<=1; u(1,h)=t(h);
end
if 1<t(h) & t(h)<=2; u(1,h)=-t(h)+2;
end
end
%parcali u(t) tanitimi sona erdi
[cikis x] = lsim(a,b,c,d,u,t,x0);
% x=[x1 x2] oldugu hatirlanmalidir
x1=x(:,1); % x1(t)= y(t) oldugu hatirlanmalidir.
x2=x(:,2); % x2(t)= y(t)nin birinci türevi oldugu hatirlanmalidir
x3=x(:,3); % x3(t)= y(t)nin ikinci türevi oldugu hatirlanmalidir
% Aranan çozum x1(t) ve x2(t) degisimidir.
subplot(211),plot(t,x1);
title('y(t) degisimi');xlabel('t');ylabel('y(t)');grid;
subplot(212),plot(t,x3); title('y(t)nin ikinci turevinin degisimi');
xlabel('t');ylabel('y''(t)');grid;

Şekil 15.26

Yukarıda verilen programın çalıştırılması sonunda elde edilen eğriler şekil 15.26'da gösterilmiştir.

Problem 15.23

a) Şekil 15.27'de verilen devrede A anahtarı t=0 anında kapatıldığına göre MATLAB kullanarak tüm akım
değişimlerini t'ye bağlı olarak bulunuz

Açıklama: 2 adet KGY, 1 adet KAY eşitliği kullanınız i1 ( t  0)  0, i 2 ( t  0)  0, i 3 ( t  0)  0 alınız.


Elde edilen eşitliklerden bazıları türev içermiyor ise bu eşitliklerin her iki tarafının bir kez t'ye göre
türevini alınız). (L1=2H,L2=3H)

92
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
L1

A i 3 (t)
i1 ( t ) i 2 (t)
R1  4
E=10 volt
L2 R2  5

Şekil 15.27

b) i1 ( t ), i 2 ( t ), i 3 ( t ) akımlarını alt alta subplot komutunu kullanarak t;[0 0.1] saniye arasında çizdiriniz.

Çözüm
di1 ( t ) di ( t )
a) E= L1  L2 2  i 2 ( t ) * R1  10 (1) KGY
dt dt
di ( t )
i 2 ( t ) * R1  L 2 2  i 3 (t) * R 2 (2) KGY
dt
i1 ( t )  i 2 ( t )  i 3 ( t )  0 (her iki tarafın türevini alarak dif.denklem üretelim) (3) KAY
di ( t ) di ( t ) di 3 ( t )
 1  2  0
dt dt dt
i1 ( t )  x ; i 2 ( t )  y ; i 3 ( t )  z alınarak (değişken dönüşümü)

>>S=dsolve('2*Dx+3*Dy+4*y=10','4*y+2*Dy-5*z=0','Dx-Dy-Dz=0','y(0)=0',..
'x(0)=0','z(0)=0') ('enter')
S =
x: [1x1 sym]
y: [1x1 sym] % sembolik gösterim
z: [1x1 sym]
>> S.x ('enter') % x=i1(t) adlı yapının içine girmek için
ans =
16*(-3*exp(1/8*(-33+769^(1/2))*t)*(-165/3076*769^(1/2)-5/4)-exp(1/8*(-
33+769^(1/2))*t)*(-165/3076*769^(1/2)-5/4)*769^(1/2)-3*exp(-
1/8*(33+769^(1/2))*t)*(165/3076*769^(1/2)-5/4)+exp(-
1/8*(33+769^(1/2))*t)*(165/3076*769^(1/2)-5/4)*769^(1/2)-90)/(-
33+769^(1/2))/(33+769^(1/2))
>> S.y ('enter') % y=i2(t) adlı yapının içine girmek için

ans =
exp(1/8*(-33+769^(1/2))*t)*(-165/3076*769^(1/2)-5/4)+exp(-
1/8*(33+769^(1/2))*t)*(165/3076*769^(1/2)-5/4)+5/2

>> S.z ('enter') % z=i3(t) adlı yapının içine girmek için


ans =
-17/20*exp(1/8*(-33+769^(1/2))*t)*(-165/3076*769^(1/2)-5/4)-17/20*exp(-
1/8*(33+769^(1/2))*t)*(165/3076*769^(1/2)-5/4)+2+1/20*exp(1/8*(-
33+769^(1/2))*t)*(-165/3076*769^(1/2)-5/4)*769^(1/2)-1/20*exp(-
1/8*(33+769^(1/2))*t)*(165/3076*769^(1/2)-5/4)*769^(1/2)

b) subplot(311),ezplot(S.x,[0,0.1]),grid,title('i1(t)')
subplot(312),ezplot(S.y,[0,0.1]),grid,title('i2(t)')

93
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
subplot(313),ezplot(S.z,[0,0.1]),grid,title('i3(t)')

Şekil 15.28

Yukarıda verilen programın çalıştırılması sonunda elde edilen eğriler şekil 15.28'de gösterilmiştir.

16.1. Harf karakterlerinin dizilişi

MATLAB sayısal temeller üzerine oturan bir program olmasına rağmen (özellikle çizimler üzerine yazılan text
türü yazılar vb. amaçlar için) ihtiyaç duyulduğu zaman kullanılmak üzere harf türü karakter dizilerine dönük bir
alt yapıya da sahiptir.

MATLAB ortamında her harf karakteri bir sayıya karşı gelir. Aşağıda verilen harflerden oluşan bir dizinin
MATLAB ortamında işgal ettiği boyutlar gösterilmiştir:

>> text = ‘Bu bir karakter dizisidir’ (‘enter’)


text =
Bu bir karakter dizisidir
>> size(text)
ans =
1 26
>> whos (‘enter’)
Name Size Bytes Class
ans 1x2 16 double array
text 1x25 50 char array
Grand total is 27 elements using 66 bytes

16.2. ASCII kodları

ASCII kodu kullanıldığında, her karakter için disk alanında iki byte (bayt) hacime ihtiyaç duyulur. ‘A’dan ‘Z’ye
kadar olan büyük harfler için kullanılan ASCII kodları 65’den 90’a kadar yer alır. Eğer ‘a’dan ‘z’ye küçük

94
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
harfler kullanılacak ise bu diziliş 97’den 122’ye kadar devam eder. Örneğin 63 sayısı ‘D’ye, 75 sayısı ‘K’ya
karşı gelirken, 101 sayısı ‘e’ye, 118 ise ‘v’ye karşı gelir. abs komutu (burada) karakter dizisine karşı gelen
ASCII komutlarını gösterir. Aşağıdaki örnek incelenmelidir:
>> text = ‘Bu bir karakter dizisidir’ (‘enter’)
text =
Bu bir karakter dizisidir
>> d = abs(text) (‘enter’)
Columns 1 through 13
66 117 32 98 105 114 32 107 97 114 97 107 116
Columns 14 through 25
101 114 32 100 105 122 105 115 105 100 105 114

Yukarıdaki örnek incelendiğinde ‘boşluk’ karakterinin 32 sayısı ile simgelendiği görülmektedir.

Eğer ASCII kodlarından tekrar harflere dönüş istenir ise char komutu kullanılmalıdır:

>> char(d) (‘enter’)


ans =
Bu bir karakter dizisidir

Eğer a’dan z’ye tüm harf karakterleri ekranda görüntülenmek istenir ise aşağıdaki program incelenmelidir:

>> harfler = abs(‘a’):abs(‘z’); (‘enter’)


>> disp (char(harfler)) (‘enter’)
abcdefghijklmnopqrstuvwxyz

Karakter dizisi içinden istenilen karakterleri seçmek mümkündür:

>> text = ‘Bu bir karakter dizisidir’; (‘enter’)


>> u = text(8:15) (‘enter’)
u =
karakter

Karakter dizileri matris formatında da yazılabilir. Burada dikkat edilmesi gereken nokta her bir satır içindeki
sütun sayılarının aynı olmasıdır:

>> w = [‘Bir satirdan daha uzun karakter’


‘dizilerinde her bir satirdaki ’
‘kolon sayisi –matrislerde ’
‘oldugu gibi- ayni olmalidir ’] (‘enter’)
w =
Bir satirdan daha uzun karakter
dizilerinde her bir satirdaki
kolon sayisi -matrislerde
oldugu gibi- ayni olmalidir
>> size(w) (‘enter’)
ans =
4 31

Yukarıda verilen örnekte 4 adet satır ve 21 adet sütun bulunmaktadır. Her bir satır yazılırken eşit sayıda kolon
içermesine dikkat edilmiştir. Harfler ve aralarındaki boşluğun toplam sayısı 31 olmadığı durumlarda (2.,3., ve 4.
satırlarda olduğu gibi) satır sonuna uygun sayıda boşluk ilave edilmiştir. Aksi halde hata komutu ile karşılaşılır.

Aşağıdaki yazılım harf ve rakam karakterlerinin birlikte kullanımına örnek olması için verilmiştir:

>> bugun = ’ Ekim’;


>> bugun = [bugun,’ 12’]
bugun =
Ekim 12

95
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

16.3. Harf - rakam dönüşümleri

Aşağıda verilen MATLAB komutları harf-rakam dönüşümü amacı ile kullanılırlar:

char(x) : x adlı bir rakamı (yada rakamlar içeren bir diziyi) ASCII kodlar yardımı ile harf
(yada harflere) çevirir. x karekteri 0 ile 65535 arasında bir değer alabilir. (Yukarıda
bir örneği verilmişti.)

int2str(x) : x matrisinin elemanlarını yuvarlar (en yakın tam sayıya atar):


>> x= [0.1 2;2.9 6.1];
>> int2str(x)
ans =
0 2
3 6

num2str(x) : x sayı değeri ile harflerin birlikte kullanımını mümkün kılan bir komuttur. Bu
komut, çizimlerde, title, xlabel, ylabel, text gibi komutların içinde
yaygın bir kullanım alanı bulur. Aşağıdaki örnek incelenmelidir:
>>tucus = 2.2774; (‘enter’)
>>xmesaf = 144.6364; (‘enter’)
>>disp([’ucus suresi:’,num2str(tucus),’s’]) (‘enter’)
ucus suresi: 2.2774 s
>>disp([’ucus mesafesi:’,num2str(xmesaf),’ft’]) (‘enter’)
ucus mesafesi : 144.6364 ft

Yukarıda disp komutu içinde yer alan isim (harf) ile rakamı birbirlerine
özdeşleştirme işlemi disp komutunun başka türlü kullanışları ile
gerçekleştirilemez.

str2num(s) : s dizilişi içinde yer alan harf+rakam dizisini sayısal bir büyüklüğe dönüştürür. Bu
diziliş (s) içinde sayı, ondalık belirten noktalama işareti, + veya – işaretleri, e üstel
sayı belirteci, kompleks sayı belirten ‘i’ harfi de olabilir:
>> str2num('-2e2+300i') (‘enter’)
ans =
-2.0000e+002 +3.0000e+002i

16.4. Harf diziliş komutları

blanks(n) : Bu komutun soluna yazılan ifade ile sağına yazılan ifade arasına n adet
boşluk bırakılır;
>>n =[‘gerilim degeri’,blanks(3),‘3 Volt’]
n =
gerilim degeri 3 Volt

deblank(s) : Boşlukları s dizisinden uzaklaştırır.

eval(s) : s dizisindeki ifadeyi MATLAB komutu olarak uygular:


>> s = '4*atan(1)';
>> eval(s)
ans =
3.1416
% asagidaki program 1’den 3’e kadar olan
% sayıları M1,M2,M3 degiskenlerine atar
>>for n=1:3; (‘enter’)
>>eval([‘M’,int2str(n),’= n’]); (‘enter’)
>>end; (‘enter’)
M1 =

96
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
1
M2 =
2
M3 =
3

findstr(s1,s2) : s1 harf dizisinin içinden s2 harf dizisini bulur:


>>s1 = ’iki kisi iki ayri eve girdi’; (‘enter’)
>>s2 = ‘iki’; (‘enter’)
>>findstr(s1,s2) (‘enter’)
ans =
1 10

Yukarıdaki program sonunda iki ifadesinin s1 dizisi içinde 1. ve 10.


sütunlarda olduğu anlaşılmaktadır.

ischar(s) : s dizisi harf karakterlerinden oluşmuş ise bu komutun sonunda 1, aksi halde
0 elde edilir.

isletter(s) : s dizisinin tüm elemanlarını tek tek tarar ve eleman harf ise 1, rakam ise 0
değeri oluşturur.

lower(s) : s dizisinin içinde büyük harf var ise bu harfi küçük harfe dönüştürür.

strcmp(s1,s2) : s1 ve s2 dizilerini karşılaştırır, s1 ile s2 ile aynı ise 1, aksi halde 0


değerini üretir.

strncmp(s1,s2,n) : s1 dizisindeki ilk n adet karakter s2 dizisi ile aynı ise 1, aksi halde 0
değerini üretir

upper(s) : s dizisinin içinde küçük harf var ise harfi büyük harfe dönüştürür.

16.5. Zaman hesaplamaları

MATLAB ortamında içinde bulunulan zaman üç farklı formatta tanımlanmıştır;

clock : Altı elemanlı bir vektör içerir. İlk eleman yıl, ikinci eleman ay, üçüncü
eleman gün,dördüncü eleman saat, beşinci eleman dakika,altıncı eleman
ise saniye gösterir.
>>clock (‘enter’)
ans =
2003 2 25 15 12 46.9

Yukarıdaki sonuca göre içinde bulunulan zaman; 2003 yılının 2.ayının


25. gününde saat 15’i 12 dakika 46.9 saniye geçmektedir.

date : Üç adet bilgiden oluşur. İlk bilgi gün, ikinci bilgi ay, üçüncü bilgi ise yıl
olmaktadır.
>> date (‘enter’)
ans =
25-Feb-2003

now : Seri numaralar şeklinde içinde bulunulan gün ve saat bilgilerini verir:
>> now (‘enter’)
ans =

97
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
7.316377469854166e+005

datestr(a,’dateform’): a ile bildirilen zaman bilgisi, dateform türlerinden bir tanesi ile
gösterilir. Aşağıda dateform parametresinin çeşitli türleri gösterilmiştir;
>> datestr(now,0) (‘enter’)
ans =
25-Feb-2003 17:57:18
>> datestr(now,1) (‘enter’)
ans =
25-Feb-2003
>> datestr(now,2) (‘enter’)
ans =
02/25/03

dateform Gün formatı Örnek


0 ’dd-mmm-yyyy HH:MM:SS’ 01-Mar-1995 15:45:17
2 ’mm/dd/yy’ 03/01/95
3 ’mmm’ Mar
4 ’m’ M
5 ’mm’ 3
6 ’mm/dd’ 03/01
7 ’dd’ 1
8 ’ddd’ Wed
9 ’d’ W
10 ’yyyy’ 1995
11 ’yy’ 95
12 ’mmmyy’ Mar95
13 ’HH:MM:SS’ 15:45:17
14 ’HH:MM:SS PM’ 3:45:17 PM
15 ’HH:MM’ 15:45
16 ’HH:MM PM’ 3:45 PM
17 ’QQ-YY’ Q1-96
18 ’QQ’ Q1

datenum(‘yıl’,ay’,’gün’): İki parantez içinde verilen tarih bilgilerini ‘seri numaralara’


dönüştürür.
>>datenum(2003,2,25,15,12,46.9) (‘enter’)
ans =
7.316376338761575e+005
[d s]=weekday(‘a’) : a ile verilen tarihin haftanın hangi günü olduğunu belirtir. Sunday
(Pazar günü)=1 ile gösterilir. Diğer günlerin numarası ise bu sırayı
takip eder, örneğin, Saturday (Cumartesi)=7 olur:
>>[d s] = weekday(‘9/09/99’) (‘enter’)
d =
5
s =
Thu

calendar(‘ay/gün/yıl’) : a ile belirtilen tarihi içeren ay’a ilişkin takvimi gösterir:


>> calendar('05/02/1992')
May 1992
S M Tu W Th F S
0 0 0 0 0 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 0 0 0 0 0 0

98
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
16.6. Zaman sayacı

MATLAB ortamında bir işlemin başlangıç ve bitiş süreleri arasındaki zaman dilimi tic ve toc komutları ile
tesbit edilebilir. tic komutu zaman sayacını çalıştırır, toc komutu ise sayacı durdurur.MATLAB editör
ortamında yazılan programın başlangıç ve bitiş süreleri arasındaki fark 0.72 saniye olduğu görülmektedir.

tic
for t=1:5000
y(t)=sin(2*pi*t/10);
end
toc
elapsed_time =
0.7200
Eğer cputime komutu ekrana yazılırsa elde edilen sayı (saniye olarak), MATLAB programının çalışmaya
başladığı zaman ile o ana kadar geçen süre arasındaki farkı belirler.

16.7. Sayısal taban dönüşümleri

Aşağıda verilen komutlar 10’luk tabandaki sayıyı diğer sayısal tabanlara dönüştürmekte kullanılır;

dec2bin(d) : 10’ tabanında verilen d sayısını 2’lik tabana çevirir. d sayısı pozitif ve 2 52
sayısından küçük olmalıdır:
>>a = dec2bin(18) (‘enter’)
a =
10010

10 sayısının iki'lik düzendeki 4 bit karşılığı aşağıdaki komut ile bulunabilir:


>>dec2bin(10,4) (‘enter’)
ans=
1010

3 sayısının iki'lik düzendeki 4 bit karşılığı aşağıdaki komut ile bulunabilir:


>>dec2bin(3,4) (‘enter’)
ans=
0011

bin2dec(d) : 2’lik tabanda verilen d sayısını 10’luk tabana çevirir.


>>a = dec2bin(18); (‘enter’)
>>bin2dec(a) (‘enter’)
ans =
18

dec2hex(d) : 10’luk tabanda verilen d sayısını hex (16) tabanına dönüştürür. d sayısı
pozitif ve 252 sayısından küçük olmalıdır:
>> b = dec2hex(30) (‘enter’)
b =
1E

hex2dec(h) : hex’ tabanında verilen d sayısını 10’luk tabana dönüştürür. d sayısı


pozitif ve 252 sayısından küçük olmalıdır:
>> b = dec2hex(30) (‘enter’)
b=
1E
>> hex2dec(b) (‘enter’)
ans=
30

dec2base(d,b) : 10’luk tabanda verilen d sayısını b tabanında diğer bir sayıya dönüştürür. d

99
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
sayısı pozitif ve 252 sayısından küçük, b tabanı ise 2 ile 32 sayıları arasında
olmalıdır.
>>c = dec2base(30,4) (‘enter’)
c =
132

base2dec(d,b) : b tabanında verilen d sayısını ‘10’ tabanında diğer bir sayıya dönüştürür. d
sayısı pozitif ve 252 sayısından küçük, b tabanı ise 2 ile 32 sayıları arasında
olmalıdır.
>> c =dec2base(30,4); (‘enter’)
>> base2dec(c,4) (‘enter’)
ans =
30

16.8. Bit işlemleri

MATLAB ortamında iki sayının lojik (sayısal) anlamda karşılaştırılması işleminde bitand, bitor, bitxor,
bitcmp, bitset, bitget ,bitshift komutlarından yararlanılır. Aşağıda bu komutların tanımları
verilmiştir; a tamsayısı 0 ile ‘bitmax=253 -1’ arasında değişir.

c= bitand(a,b) : a ve b sayılarını ikili tabana çevirerek ‘and’-ve- lojik komutu ile


karşılaştırılır. Elde edilen sayı 10’luk tabanda c’ye atanır.
>> a=4; (‘enter’)
>> b=8; (‘enter’)
>> c = bitand(a,b) (‘enter’)
ans =
0

Yukarıda verilen işlemde 410  100 2 ile 810  1000 2 ‘and’ komutu ile
karşılaştırılırsa 0100&1000 = 0000 2  010 elde edilir. Programda elde
edilen 0 değeri de bu sonuçla uyumludur.

c= bitor(a,b) : a ve b sayılarını ikili tabana çevirerek ‘or’-veya- lojik komutu ile


karşılaştırılır. Elde edilen sayı on’luk tabanda c’ye atanır.
>> a=4; (‘enter’)
>> b=8; (‘enter’)
>> c= bitor(a,b) (‘enter’)
ans =
12

Yukarıda verilen işlemde 410  100 2 ile 810  1000 2 ‘or’ komutu ile
karşılaştırılırsa 0100 | 1000 = 1100 2  1210 elde edilir. Programda elde
edilen ’12’ değeri de bu sonuçla uyumludur.

c= bitxor(a,b) : a ve b sayılarını ikili tabana çevirerek ‘xor’-özelveya- lojik komutu ile


karşılaştırılır. Elde edilen sayı 10’luk tabanda c’ye atanır.
>> a=4; (‘enter’)
>> b=6; (‘enter’)
>> bitxor(a,b) (‘enter’)
ans =
2
Yukarıda verilen işlemde 410  100 2 ile 610  110 2 ‘xor’ komutu ile
karşılaştırılırsa 100 xor 110 = 010 2  210 elde edilir. Programda elde
edilen 2 değeri de bu sonuçla uyumludur.

100
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

bitcmp(a,N) : a sayısının 2’lik tabanda ilk N adet rakamının lojik olumsuzunu


hesaplayarak elde edilen sayıyı on’luk tabanda olan c sayısına atar.
>>c = bitcmp(4,3) (‘enter’)
c =
3
bitset(a,b,v) : a sayısının 2’lik tabandaki gösterimindeki b. bit’i v yapar. v sayısı 0 ya
da 1 olabilir:
>>a=6; (‘enter’)
>>b=4; (‘enter’)
>>c=bitset(6,4,1) (‘enter’)
c=
14

Yukarıdaki işlemde a=6 sayısının ikili tabanda karşılığı 0110 olur. Bu 4


adet ‘bit’ içinden b.=4. bit olan ‘0’ değeri v=1 yapılır. Böylece 0110 olan
değer 1110 olur. Bu sayı ise 10’luk tabanda 14 sayısına eşittir.
>> bitset(6,4,0) (‘enter’)
ans =
6

bitget(a,b) : a sayısının 2’lik tabandaki gösterimindeki b bit değerini gösterir.

bitshift(a,N) : a sayısını 2^N ile çarpar (N negatif olabilir).

Yukarıda verilen komutların iç içe kullanıldığı bir örnek aşağıda gösterilmiştir:

>>dec2bin(bitor(10,3),4) (‘enter’)
ans=
1011

17.2. Bir sayının sembolik şekle dönüştürülmesi

Command Window ortamında tanımlı bir sayı, 4 farklı formatta sembolik ifadeye dönüştürülebilir:

 Sembolik kayan noktalı (floating point) gösterim:


>> a=3.2; (‘enter’)
>>sym (a,'f') (‘enter’)
ans =
'1.999999999999a'*2^(1)

 Sembolik kesirli gösterim:


>>sym (a,'f') (‘enter’)
ans =
16/5

 Sembolik eps+kesirli gösterim:


>>sym (a,'e') (‘enter’)
ans =
16/5+4*eps/5

 Sembolik anlamlı sayı gösterimi:


>>sym (a,'d') (‘enter’)
ans =
3.2000000000000001776356839400250

101
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Gösterilecek sayının içerdiği rakam sayısı (default olarak) 32 dir. Kullanıcı bu sayıyı isterse kendisi
aşağıdaki örnekte gösterildiği gibi belirleyebilir:
>>digits(5)
>>sym (a,'d') (‘enter’)
ans =
3.2000

17.9. Sembolik olarak Jacobian matrisin elde edilmesi

f ( x , y, z )  x * cos( y) * sin( 2 * z )  x ^ 2
g( x, y, z)  x ^3 * sin(2 * y)  z ^3
h ( x, y, z)  x ^3  y ^ 4  x * z

olarak verilen 3 adet lineer olmayan denklem sistemine ilişkin Jacobian matrisi sembolik araç kutusu yardımı ile
hesaplanmak istenirse (değişken olarak x,y ve z alınacaktır) aşağıdaki komut satırlar kullanılabilir.

>>syms x y z (‘enter’)
>>f=x*cos(y)*sin(2*z)+x^2; (‘enter’)
>>g=x^3*sin(2*y)+z^3; (‘enter’)
>>h=x^3-y^4+x*z; (‘enter’)
>>J=jacobian([f;g;h],[x y z]) (‘enter’)
J =
[ cos(y)*sin(2*z)+2*x, -x*sin(y)*sin(2*z), 2*x*cos(y)*cos(2*z)]
[ 3*x^2*sin(2*y), 2*x^3*cos(2*y), 3*z^2]
[ 3*x^2+z, -4*y^3, x]

Yukarıdaki matrisin determinantı hesaplanmak istenirse;

>> det(J); % sonuç çok uzun olduğu için buraya yazdırılmamıştır

yazmak yeterlidir.

17.10. Sembolik ortamda limit işlemleri

MATLAB ortamında lim x0 f ( x ) işlemi;

>>limit(f) (‘enter’)

komutu kullanılarak; lim xa f ( x ) işlemi;

>>limit(f,x,a) % veya limit(f,a) (‘enter’)

komutu kullanılarak; lim x a  f ( x ) işlemi (soldan limit);

>>limit(f,x,a,'left') (‘enter’)

komutu kullanılarak; lim x a  f ( x ) işlemi (sağdan limit);

>>limit(f,x,a,'right') (‘enter’)

102
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
komutu kullanılarak hesaplanır. Bilindiği gibi f(x) fonksiyonunun türevi f ' ( x ) ;
f (x  h)  f (x)
f ' ( x )  lim h 0
h
eşitliği ile hesaplanır. Örnek olarak f(x)=cos(x) alınırsa, f ' ( x ) =sin(x) olur. Bu sonuç sembolik araç kutusunda
limit komutu ile kontrol edilebilir:

>> syms h n x (‘enter’)


>> limit((cos(x+h)-cos(x))/h,h,0) (‘enter’)

ans =

-sin(x)
x n
Görüldüğü gibi aynı sonuç elde edilmiştir. Diğer bir örnek olarak, f(x)= (1  ) fonksiyonunun n için
n
limiti aranırsa;

>> syms n x (‘enter’)


>> limit((1+x/n)^n,n,inf) (‘enter’)
ans =
exp(x)
x
elde edilir. Örnek olarak, lim x 0  işlemi yapılsın; (soldan limit işlemi)
x
>> syms x (‘enter’)
>> limit(x/abs(x),x,0,'left') % soldan limit alınıyor (‘enter’)
ans =
-1
x
Eğer, lim x 0  işlemi yapılırsa; (sağdan limit işlemi)
x

>> limit(x/abs(x),x,0,'right') % sağdan limit alınıyor (‘enter’)


ans =
1

elde edilir. Yukarıda verilen fonksiyonun aynı noktada sağdan ve soldan limitleri farklı olduğundan iki taraflı
limitin de olmaması gerekir:

>> limit(x/abs(x),x,0) (‘enter’)


ans =
NaN

Görüldüğü gibi limit değeri (Not a Number) NaN olmakta, diğer bir ifade ile limit tanımsızdır.

Yukarıda verilen örneklerde f fonksiyonu hep limit komutu içinde tanıtıldı. İstenirse daha önce de
tanıtılabilir. Aşağdaki örnek incelenmelidir:

>> syms x (‘enter’)


>> f= x/abs(x); (‘enter’)
>> limit(f,x,0,'left') (‘enter’)
ans =
-1

17.15. Sembolik işlemlerin Laplace dönüşümüne uygulanması

s=   jw

103
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

olmak üzere,


st
 f ( t )e dt (17.1)
0

ifadesi f(t) fonksiyonunun Laplace dönüşümü olarak adlandırılır ve


st
F(s)=  f ( t )e dt (17.2)
0

şeklinde gösterilir. F(s) Laplace fonksiyonunun ters Laplace fonksiyonu ise;


1  o  j st
f (t)   F(s)e ds (17.3)
j2 o  j

ifadesi ile bulunur. Yukarıda j=  1 ,  o ; reel sayı, w için ise   w   aralığı tanımlıdır. (17.2) ve
(17.3) eşitliklerinin bir başka gösterimleri ise aşağıda verilmiştir:

F(s)=£[f(t)] - Laplace dönüşümü (17.4)

f(t)= £ 1[ F(s )] - Ters Laplace dönüşümü (17.5)

Yukarıda verilen Laplace dönüşümü için MATLAB ortamında laplace komutu, ters Laplace dönüşümü için ise
ilaplace komutu kullanılır. Aşağıda laplace komutunun çeşitli kullanımları gösterilmiştir:

laplace : Sembolik işlemlerde Laplace dönüşümünde kullanılır. Aşağıda bu komutun


çeşitli kullanılışları gösterilmiştir:

F=laplace(f) : Sembolik f(t) fonksiyonunun Laplace transformunu bulur. f fonksiyonu


(default olarak) t'ye bağlıdır. Dönüşüm sonunda (default olarak) s ile değişen
bir fonksiyon elde edilir. Diğer bir ifade ile f=f(t) fonksiyonuna laplace
komutu kullanılarak dönüşüm uygulandığında, F=F(s) elde edilir. F
fonksiyonu f fonksiyonunun Laplace dönüşümüdür:

F(s)  £{f(t)} =  f ( t )e st dt
0
(17.5a)

F=laplace(f,v) : (17.5a) eşitliğinde (default değer olan) s yerine t koyarak f fonksiyonunun


Laplace dönüşümünü bulur:

F( t )  £{f(x)} =  f ( x )e  tx dx
0
F=laplace(f,w,z): (17.5a) eşitliğinde (default değer olan) s yerine z ve (default değer olan) t
yerine w koyarak f fonksiyonunun Laplace dönüşümünü bulur:

F( z )  £{f(u)}  f ( w )e  zw dw
0

Aşağıdaki problemde bazı f(t) fonksiyonlarının Laplace dönüşümleri gösterilmiştir:

Problem 17.3

104
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

4 st
a) f(t)= t 4 olmak üzere F(s)  £{f(t)} ifadesini bulunuz. ( F(s)   t e dt =?)
0
1  1
b) g(v)= olmak üzere F( w )  £{g(v)} ifadesini bulunuz. ( F( w )   e  vt dv =?)
v 0 v

 at  tx
c) f(t)= e  at olmak üzere F( x )  £{f(t)} ifadesini bulunuz. ( F( x )   e e dt =?)
0
eşitliklerinin Laplace transformlarını bulunuz.

Çözüm

a)>> syms t (‘enter’)


>> f=t^4; (‘enter’)
>> laplace(t^4) (‘enter’)
ans =
24/s^5

b)>> syms v; (‘enter’)


>> g=1/sqrt(v); (‘enter’)
>> laplace(g) (‘enter’)
ans =
(pi/s)^(1/2)

c) >> syms a t (‘enter’)


>> f=exp(-a*t); (‘enter’)
>> laplace(g) (‘enter’)
ans =
1/(s+a)

f(t) fonksiyonunun türevinin Laplace transformu aşağıda gösterilmiştir:;

 df ( t ) 
F(s)=£   =sF(s)-f(0)
 dt 
 d 2 f (t ) 
F(s)=£  2
 = s 2 F(s)-sf(0)- f ' (0)
 dt 

ilaplace : Sembolik işlemlerde ters Laplace dönüşümünde kullanılır. Aşağıda bu


komutun çeşitli kullanılışları gösterilmiştir:

f=ilaplace(F) : Sembolik F(s) fonksiyonunun ters Laplace transformunu (f(t)) bulur. F


fonksiyonu (default olarak) s'e bağlıdır. Dönüşüm sonunda (default olarak) t
ile değişen bir f fonksiyonu elde edilir. Diğer bir ifade ile F=F(s)
fonksiyonuna ilaplace komutu kullanılarak dönüşüm uygulandığında
f=f(f) elde edilir. f fonksiyonu F fonksiyonunun ters Laplace
dönüşümüdür:
1 c  i
f ( t )  £ 1 {F(s)}=  F(s)e st ds
2i c  i
(17.5b)

f=ilaplace(F,y) : (17.5b) eşitliğinde (default değer olan) t yerine y koyarak F fonksiyonunun


ters Laplace dönüşümünü bulur:

105
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
1 c i
sy
f ( y)  £ 1 {F(y)}=  F( y)e ds
2i c  i
(17.5c)
f=ilaplace(F,y,x): (17.5b) eşitliğinde (default değer olan) t yerine x ve (default değer olan) s
yerine y koyarak F fonksiyonunun ters Laplace dönüşümünü bulur:
1 c  i
xy
f ( x )  £ 1 {F(y)}=  F( y)e dy
2i c  i
(17.5d)

Aşağıdaki problemde bazı F(s) fonksiyonlarının ters Laplace dönüşümleri gösterilmiştir:

Problem 17.4

1 1 c  i
st
a) F(s)= olmak üzere f ( t )  £ 1 {F(s)} ifadesini bulunuz. (£ 1 {F(s)}=  F(s)e ds =?)
s 2
2i c  i
1
b) F(v)= olmak üzere f ( x )  £ 1 {F(v))} ifadesini bulunuz. (£ 1 {F(v)}=
(v  a ) 2
1 c  i
xv
 F( v)e dv =?)
2i c i
1
c) F(u)= olmak üzere f ( x )  £ 1 {F(u)} ifadesini bulunuz. (£ 1 {F(u)}=
u a2
2

1 c  i
xv
 F(u )e dv =?)
2i c i
eşitliklerinin ters Laplace transformlarını bulunuz.

Çözüm

a)>> syms s (‘enter’)


>> f=1/s^2; (‘enter’)
>> ilaplace(f) (‘enter’)
ans =
t

b)>> syms v a; (‘enter’)


>> f=1/(v-a)^2; (‘enter’)
>> ilaplace(f) (‘enter’)
ans =
x*exp(a*x)

c) >> syms x u (‘enter’)


>> syms a real (‘enter’)
>> f=1/(u^2-a^2); (‘enter’)
>> simplify(ilaplace(f,x)) (‘enter’)
ans =
sinh(x*abs(a))/abs(a)

106
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Problem 17.5

2 y ''  3y '  4 y  3t  2 cos t

diferansiyel denklemini, y(0)=1 ve y ' (0)  1 ilk koşulları altında Laplace transformunu kullanarak bulunuz.

Çözüm

Öncelikle verilen eşitliğin sol tarafı Laplace transformu yardımı ile F(s) fonksiyonuna dönüştürülsün:

2s 2 Y(s)  2sy(0)  y ' (0)  3[sY(s)  y(0)]  4Y (s)  £[3t-2cost]


Y(s)[ 2s 2  3s  4]  3y(0)  2sy(0)  y ' (0)  £[3t - 2cost]

Yukarıda görülen £[3t-2cost] ifadesinin Laplace transformunun elde edilişi aşağıda gösterilmiştir:

>> syms s t (‘enter’)


>> laplace(3*t-2*cos(t)) (‘enter’)
ans =
3/s^2-2*s/(s^2+1)

Elde edilen bu sonuç yukarıdaki eşitlikte yerine konulursa;

3 2s 3 2s
Y (s)[2s 2  3s  4]    3y(0)  2sy(0)  y ' (0)    4  2s
2 2 2 2
s s 1 s s 1
 1  3 2s 
Y(s)      4  2s 
2 2 2
 2s  3s  4  s s 1 

elde edilir. Y(s) fonksiyonuna ters Laplace dönüşümü uygulanır ise;

>> syms s (‘enter’)


>> ilaplace((1/(2*s^2-3*s+4))*(3/s^2-2*s/(s^2+1)-4+2*s)) (‘enter’)

ans =

3/4*t+9/16+155/208*exp(3/4*t)*cos(1/4*23^(1/2)*t)-

1889/4784*exp(3/4*t)*23^(1/2)*sin(1/4*23^(1/2)*t)-

4/13*cos(t)+6/13*sin(t)

elde edilir. Yukarıdaki sonuç aşağıdaki şekilde de yazılabilir:

y( t )  0.75t  0.5625  0.745e 0.75t cos(1.2 t )  1.812e 0.75t * sin(1.2 t )  0.3 cos t  0.46 sin t

MATLAB ortamında Laplace dönüşümlerinin uygulandığı alanlardan bir tanesi de elektrik devre çözümleridir.
Örnek olarak verilen bir elektrik devresine ilişkin ‘s-domeni’ eşitlikleri aşağıda gösterildiği gibi olsun:

107
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
 s 2s   I1 (s)  1 / s 
 2s 1  s  I (s)   1 
  2   

Yukarıda verilen denklemde I1 (s) ve I 2 (s) akımlarının t-domenindeki karşılıkları bulunmak istenirse;

>>syms s (‘enter’)
>>A= [-s 2*s; 2*s 1-s] (‘enter’)
>>B= [1/s ;1] (‘enter’)
>>C= inv(A)*B (‘enter’)
>> ilaplace(C) (‘enter’)
ans =
[ -t+4-10/3*exp(-1/3*t)]
[ -5/3*exp(-1/3*t)+2]

elde edilir. Bu sonuçlara göre aşağıdaki akım eşitlikleri yazılabilir:

10  t / 3 5 t / 3
I1 ( t )   t  4  e ; I 2 (t )   e 2
3 3

17.16. Sembolik işlemlerin Z dönüşümüne uygulanması

Z dönüşümü, ayrık sistemlerdeki fark eşitliklerinde, Laplace dönüşümüne benzer bir rol oynar. f n
fonksiyonunun Z dönüşümü;

F( z )   f n z  n (17.6)
n 0

olarak ifade edilir. Yukarıdaki ifadenin bir diğer gösterimi;

F(z )  Z[f n ] (17.7)

olarak verilir. Ters Z dönüşümü ise F(z) eşitliğinden yola çıkarak f n fonksiyonunun bulunması
f n  Z 1 [ F( z)] (17.8)

işlemidir. MATLAB ortamında Z dönüşümünde ztrans komutu, ters Z dönüşümünde ise iztrans komutu
kullanılır.

Laplace dönüşümünde olduğu gibi Z dönüşümünün de çok önemli özellikleri vardır. Bunların içinde en önemli
iki eşitlik aşağıda verilmiştir:

k
Z[f n  k ]  z k F(z)   z k 1f i (soldan kaydırma eşitliği) (17.9)
i 0
k 1
Z[f n k ]  z k F(z)   z i f i k (sağdan kaydırma eşitliği) (17.10)
i 0

Z dönüşümü aşağıda verilen örnekte olduğu gibi fark eşitliklerinin çözümünde kullanılır:

Aşağıda ztrans komutunun çeşitli kullanılış biçimleri gösterilmiştir:

ztrans : Sembolik işlemlerde Z dönüşümünde kullanılır. Aşağıda bu komutun çeşitli


kullanılışları gösterilmiştir:

108
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
F=ztrans(f) : Sembolik f(t) fonksiyonunun Z transformunu bulur. f fonksiyonu (default
olarak) n'e bağlıdır. Dönüşüm sonunda (default olarak) z ile değişen bir
fonksiyon elde edilir. Diğer bir ifade ile f=f(n) fonksiyonuna laplace
komutu kullanılarak dönüşüm uygulandığında, F=F(z) elde edilir. F fonksiyonu
f fonksiyonunun Z dönüşümüdür:
 f (n )
F( z )   {f(n)} = 
n 0 zn
(17.10a)

F=ztrans(f,w) : (17.10a) eşitliğinde (default değer olan) z yerine w koyarak f fonksiyonunun


Laplace dönüşümünü bulur:
 f (n )
F( w )   {f(n)} = 
n 0 wn
F=ztrans(f,k,w): (17.10a) eşitliğinde (default değer olan) n yerine k ve (default değer olan) z
yerine w koyarak f fonksiyonunun Laplace dönüşümünü bulur:
 f (k )
F( w )   {f(n)} = 
n 0 wk

Aşağıdaki problemde bazı f(n) fonksiyonlarının Z dönüşümleri gösterilmiştir:

Problem 17.6

 f (n )
a) f(n)= n 4 olmak üzere F( z )  Z{f(n)} ifadesini bulunuz. ( F( z )   {f(n)} =  =?)
n 0 zn
 f (u )
b) f(u)= a u olmak üzere F( w )  Z{f(u)} ifadesini bulunuz. ( F( w )   {f(u)} =  =?)
n 0wu
 f (n )
c) f(n)=sin(a*n) olmak üzere F( z )  Z{f(n)} ifadesini bulunuz. ( F( z )   {f(n)} =  =?)
n
n 0 z
Çözüm

a) >> syms n (‘enter’)


>> f=n^4; (‘enter’)
>> y=ztrans(f) (‘enter’)
y=
z*(z^3+11*z^2+11*z+1)/(z-1)^5

b) >> syms a u (‘enter’)


>> f=a^u; (‘enter’)
>> y=ztrans(f) (‘enter’)
>>simplify(y) (‘enter’)
y=
-z/(-z+a)

c) >> syms a n (‘enter’)


>> f=sin(a*n); (‘enter’)
>> y=ztrans(f) (‘enter’)
y=
z*sin(a)/(z^2-2*z*cos(a)+1)

iztrans : Sembolik işlemlerde ters Z dönüşümünde kullanılır. Aşağıda bu komutun


çeşitli kullanılışları gösterilmiştir:

109
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
f=iztrans(F) : Sembolik F(z) fonksiyonunun ters Z transformunu bulur. F fonksiyonu
(default olarak) z'ye bağlıdır. Dönüşüm sonunda (default olarak) n ile değişen
bir fonksiyon elde edilir. Diğer bir ifade ile F=F(z) fonksiyonuna iztrans
komutu kullanılarak dönüşüm uygulandığında, f=f(n) elde edilir. f
fonksiyonu F fonksiyonunun ters Z dönüşümüdür:
1 n 1
f (n )   1 {F(z)} =  F( z ) z dz ; n=1,2,..
2i z  R
(17.10b)

f=iztrans(F,k) : (17.10b) eşitliğinde (default değer olan) n yerine k koyarak f fonksiyonunun


ters Z dönüşümünü bulur:

f=iztrans(F,k,w): (17.10b) eşitliğinde (default değer olan) n yerine k ve (default değer olan) z
yerine w koyarak F fonksiyonunun ters Z dönüşümünü bulur:

Aşağıdaki problemde bazı F(z) fonksiyonlarının ters Z dönüşümleri gösterilmiştir:

Problem 17. 7

2z
a) F( z )  olmak üzere f (n )   1 {F(z)} ifadesini bulunuz. (  1 {F(z)} =
( z  2) 2
1 n 1
 F( z ) z dz =?)
2i z  R
u ( u  1)
b) F( u )  2
olmak üzere f ( k ) =  1 {F(u)} ifadesini bulunuz.
u  2u  1
z
c) F( z )  olmak üzere f (n )   1 {F(z)} ifadesini bulunuz.
z2

Çözüm

a) >> syms z (‘enter’)


>> f=2*z/(z-2)^2; (‘enter’)
>> y=iztrans(f) (‘enter’)
y=
2^n*n

b) >> syms n (‘enter’)


>> f=n*(n+1)/(n^2+2*n+1); (‘enter’)
>> y=iztrans(f) (‘enter’)
y=
(-1)^k

c) >> syms z a (‘enter’)


>> f=z/(z-a) (‘enter’)
>> y=iztrans(f) (‘enter’)
y=
a^n

Problem 17. 8

1
6 y n  5 y n 1  y n  2  ; n0
4n
fark eşitliğini sağlayan y n ifadesini, y 1  1 ; y  2  0 ilk koşulları altında bulunuz.

110
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Çözüm

Verilen eşitliğin her iki tarafına Z dönüşümü uygulanır ise;

   
 1 
6Y(z)  s z 1 Y(z)  y 1  z  2 Y(z)  z 1 y 1  y  2  Z 
4n 

elde edilir. Eşitliğin sağ tarafındaki Z dönüşümü MATLAB yardımı ile bulunabilir:

>> syms z n (‘enter’)


>> ztrans (1/4^n) (‘enter’)
ans =
4*z/(4*z-1)

Elde edilen sonuç son eşitlikte yerine konulursa;

  
6Y(z )  s z 1 Y(z )  y 1  z  2 Y(z)  z 1 y 1  y  2   4z
4z  1

elde edilir. Eşitlikte ilk koşullar yerlerine konularak ifade düzenlenirse;

 1  4z 
Y( z)     z 1  5 
 6  5z  z  2
1
 4z  1 

elde edilir. Son eşitliğe iztrans komutu uygulanarak aranılan y n ayrık değeri bulunabilir:
>> syms z (‘enter’)
>>iztrans ((4*z/(4*z-1)-z^-1+5)/(6-5*z^-2)) (‘enter’)
ans =
1/2*(1/4)^n+5/2*(1/2)^n-2*(1/3)^n

Elde edilen sonuca göre;

n n n
51 1 11
yn     2    
22 3 24

bulunur. En başta verilen ilk koşulların bulunan ifadeyi sağlayıp sağlamadığı kontrol edilebilir.

17.17. Sembolik işlemlerin Fourier dönüşümüne uygulanması

[0 T] aralığında T periyoduyla tekrarlanan bir f(x) fonksiyonu aşağıdaki sonsuz seriyle ifade edilebilir;

a  2nx  2nx
f ( x )  0   a n cos( )   b n sin( ) (17.11)
2 n 1 T n 1 T

Periyodik bir fonksiyon periyot içinde sürekli veya parçalı sürekli olabilir, n=1,2,3,..,  olmak üzere sonsuz
sayıda cos(2 nx / T ) ve sin(2 nx / T ) fonksiyonlarının doğrusal bileşimi olarak yazılabilir. Yukarıda
verilen ifadede;

2 T
ao   f ( x )dx (17.12)
T o

111
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
2 T  2nx 
an  o f ( x ) cos dx (17.13)
T  T 
2 T  2nx 
bn  o f ( x ) sin  dx (17.14)
T  T 

eşitlikleri geçerlidir. Fourier serileri sonlu sınırları olan periyotlarda tekrarlanan fonksiyonlar içindir. Bir
fonksiyon periyodik değilse ve aynı zamanda bütün uzayda tanımlı ise Fourier serisi anlamsızdır. Bu durumlarda
Fourier serilerinin genel biçimi olarak kabul edilebilecek olan Fourier dönüşümü ele alınmalıdır. Fourier
dönüşümü Fourier serisinden türetilir. Ancak dönüşüm sonunda elde edilen artık bir serinin terim katsayıları
değil, bir fonksiyondur. Fourier dönüşümü zaman (t) uzayından frekans (w) uzayına dönüşümü sağlar. Ters
Fourier dönüşümü ise w uzayından t uzayına dönüşümü sağlar. Bu olaya teknolojiden bir örnek verilebilir: Bir
otomobil üreticisi otomobilin yolda sarsılmadan gitmesini temin etmek için amortisör olarak bilinen şok
tutucular kullanır. Araçta kullanılacak şok tutucuların özelliğini iyi tespit etmek için araçta çeşitli testler uygular.
Üretici deneme aracına taktığı amortisörleri kötü yol koşullarında test eder ve aracın titreşimini bir alet ile
kaydeder. Elde edilen kayıt çeşitli frekanslarda titreşim yapan gürültü sinyalidir. Bu sinyalin Fourier dönüşümü
alınırsa, üretici aracın hangi frekanslarda şiddetli, hangilerinde ise zayıf titreşim yaptığını görür. Amortisörü
şiddetli frekanslardaki titreşimi yutacak şekilde yeniden düzenleyerek dizayn eder.

Bütün uzayda tanımlı bir f(t) fonksiyonunun w uzayına Fourier dönüşümü;

1  jwt
F( w )   f ( t )e dt (17.15)
2

ifadesi ile verilir. (17.15) ile verilen dönüşümün tersi, yani w uzayından t uzayına geçişi veren ters Fourier
dönüşümü;

1  jwt
f (t)   F( w )e dw (17.16)
2

ifadesi ile hesaplanır. (17.15) ve (17.16) eşitlikleri;

F( w )  F{f(t)} (17.17)

f (t )  F 1 {F(w)} (17.18)

ifadeleri ile de gösterilebilir. Buraya kadar anlatılan Fourier serisi ve dönüşümü, matematik işlemlerde, çeşitli
çözümlerde analitik olarak kullanılmaktadır. Fakat bilimsel ve teknolojik uygulamalarda elde edilen ölçüm
değerleri bir fonksiyon değil, belirli bir eleman sayısı olan sayısal bir dizidir. Dolayısı ile bu tür sayısal verilerin
dönüşümlerinin de sayısal olarak yapılması gerekir. Sayısal Fourier dönüşümü (Discrete Fourier Transform-
DFT) analitik dönüşümlerin tüm özelliklerini sağlar. Eğer bir ölçüme ilişkin N adet data değeri mevcut ise
(örneğin bir elektriksel işaretin çeşitli zamanlardaki değişimi ölçülmüş ise- k=1,2,3,.... adet ölçüm sonucu
f k  f 1 , f 2 , f 3 ,... dizisi oluşturulmuş ise) bu dizinin sayısal Fourier dönüşümü Fh , Fourier seri ve Fourier
dönüşüm formüllerinden hareketle;

1 N 1  j2kh / N
Fh   fke h=0,1,2,3,.....N-1 (17.19)
N k 0

olarak tanımlanır. Ters sayısal Fourier dönüşümü de yine aynı biçimde;

N 1
f k   f h e  j2kh / N h=0,1,2,3,.....N-1 (17.20)
h 0

112
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
olur. DFT için data sayısında bir sınırlama yoktur. Mikroişlemci hızları arttıkça DFT algoritması büyük sayıdaki
data değerlerini değerlendirme açısından cazipliğini koruyabilir. Ancak düşük hızdaki işlemciler için yüksek
sayıda datayı işleme sokmak, DFT algoritması için oldukça zamana ihtiyaç duyulacağından pek tercih edilmez.
Ölçüm sayısının çok sayıda olduğu işlemlerde hızlı Fourier dönüşümü (Fast Fourier Transform-FFT) tercih
edilmelidir. FFT algoritmasının uygulanabilmesi için data sayısının 2 n olması gerekir. Bu özellik FFT’nin
DFT’ye göre bir dezavantajıdır, zira DFT de data sayısında bir kısıtlama bulunmamaktadır. Eğer FFT de data
sayısında eksiklik olursa ve datalar ‘0’ a doğru yakınsıyor ise ilk yol eksik dataları ‘0’ ile doldurmaktır. Böyle bir
durum söz konusu değil ise datalar içinden uygun görülenleri dışarı atarak data sayısını 2 n ’e çekmektir. Diğer
bir yaklaşım ise interpolasyon yaparak yeni datalar üretmektir. MATLAB ortamında Fourier yöntemine ilişkin
çeşitli komutlar bulunmaktadır. bunlardan ilki fft komutudur:

Y=fft(y): Hızlı Fourier dönüşümünde (Fast Fourier Transform) kullanılan MATLAB komutudur. y
vektörünün ayrık Fourier dönüşümünü (DFT-Discrete Fourier Transform) bulur. Bu işlem,
hızlı Fourier dönüşümü (FFT) algoritması kullanılarak gerçekleştirilir. Y değerinin,
aranılan harmonik genliklerinin k/2 katı olduğu unutulmamalıdır. fft komutu
kullanıldığında, örnekleme sayısının yarısı kadar (k/2) harmonik ve bunların genlikleri
incelenir. Örnek olarak k=16 adet örnekleme yapılmış ise bu komut kullanıldığında doğru
bileşen dahil k/2=8 adet (pozitif bileşen) harmonik ile ilgili bilgi alınır. Diğer kalan 16-
k/2=8 bileşen ise negatif bileşen değerleridir. 1. bileşen doğru akım bileşenini,
2.,3.,4.,5.,6.,7., bileşenler pozitif bileşenleri verir. 8. harmonik bileşeni ise Nyquist
frekans bileşenidir. Nyquist frekansını takip eden bileşenler ise (9-15) negatif
bileşenlerdir. 9. bileşen değeri 7. bileşenin eşleniğine (konjugesine) eşittir. 10. bileşen 6.
bileşenin, 11. bileşen 5. bileşenin, 12. bileşen 4. bileşenin, 13. bileşen 3. bileşenin, 14.
bileşen 2. bileşenin, 15. bileşen 1. bileşenin eşleniğidir (bak.şekil 17.6).

Yukarıda da bahsedildiği gibi hızlı Fourier dönüşüm uygulamalarında harmonik analizi yapılacak fonksiyonun
(y) eleman sayısı (ne), 2 n özelliğini sağlamalıdır. k adet eleman içeren bir y fonksiyonuna fft komutu
uygulandığında ancak k/2 kadar harmonik ve bunların genlikleri hakkında bilgi sahibi olunabilir (doğru bileşen
değeri bu harmonik sayısına dahildir).

Problem 17.9

Periyodu T=9.6 sn olan y(t) fonksiyonu içinden, [0;T] aralığında, eşit zaman aralıkları ile 16 adet örnek (ölçme
yöntemi ile) alınmaktadır. Elde edilen örnek (ayrık) değerler aşağıda verilmiştir.

y=[ 0 4.7163 6.5026 5.6751 3.2878 0.5738 -1.5028 -2.4723 -2.3602 -1.5293 -0.4619…
0.4301 0.9153 0.9619 0.6876 0.2770 -0.0979];

y ayrık vektörüne fft komutu kullanılarak harmonik analizini yapınız ve grafik ortamda gösteriniz.

Çözüm

Şekil 17.4'de y(t) değişimi gösterilmiştir. Şekil 17.4'de y(t) değişimi, örneklenmiş y ve t değerleri
gösterilmiştir. Zamana ilişkin başlangıç, artış ve bitiş değerleri t=0:0.6:9.6 saniye olarak verilmektedir.
Örneklenmiş y vektörünün eleman sayıları 2 n  4 =16 şartını sağlamaktadır. Şekil 17.4'e dikkatli bakıldığında y
vektörünün y o ile y n 1 arasında değerler aldığı görülecektir ( y n  y16 elemanı bulunmamaktadır-şekil
17.5). Diğer bir ifade ile örnekleme sayısı k=0,……., n-1 olmakta , k=n olmamaktadır (bak. (17.19) eşitliği ve
şekil 17.4). Yukarıda, fft komutu kullanılarak ancak k/2 sayıda harmonik hakkında bilgi sahibi olunabileceği
belirtilmişti. Bu bilgiye göre ulaşılabilecek harmonik sayısı (m); verilen y vektörü için k/2=16/2= m=8
olmaktadır.

Yatay eksen olarak t (zaman) domeninden f (frekans) domenine geçildiğinde frekans artışı;

f  1 / T  1 / 9.6  0.10416 Hz ; ( t  0.6 sn olduğu unutulmamalıdır)

olacaktır. fft komutu kullanılarak incelenebilecek en büyük harmonik frekansı (Nyquist frekansı);

113
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

f maks  (k / 2) * f  8 * 0.10416  0.83 Hz

Şekil 17.4 Şekil 17.5

olacaktır. Şekil 17.6'da işaret frekansı ile Nyquist frekansı arasındaki ilişki gösterilmiştir. Burada görüldüğü
örneğin, 3. harmonik genliği ile 14. harmonik genliği, ve 7. harmonik genliği ile 9. harmonik genliği birbirlerine
eşittir. Aynı şekilde Nyquist frekanslarının tek katları kendi aralarında ve çift katları da kendi aralarında eşit
harmonik genlik değerlerine sahiptir.

fft ( y) 7*
9*

0 f maks 2f maks 3f maks 4 5 6

3* 8* 14*
Şekil 17.6

Yukarıda, 'Y değerinin, aranılan harmonik genliklerinin k/2 katı olduğu unutulmamalıdır' ifadesi kullanıldı.
Bundan hareketle;

>>Y=fft(y)

komutu uygulandığında (aranılan gerçek harmonik genlik değerlerine ulaşmak için) Y harmonik genlik
değelerini k/2 sayısına bölmek gerekmektedir. Aşağıda verilen programda bu işlem;

>>Yss(1:nt/2)=(2/nt)*Y(1:nt/2);

satırında yapılmaktadır. Verilen programda;

>>[fss' Yss'];

satırında gerçek frekans ve gerçek harmonik genlik değerlerine ulaşılmaktadır.

Şekil 17.5'de verilen örnekleme şartlarında y vektörünün harmonik analizini yapan MATLAB programı aşağıda
gösterilmiştir.

nt=16; % örnekleme sayısı  2 n şartını sağlamalı

114
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
T=9.6; % periyod  (nt+1)*dt=T
dt=T/nt; % örnekleme aralığı  t  0.6 sn
df=1/T; % frekans artışı  f  1 / T  1 / 9.6  0.10416 Hz
fmax=(nt/2)*df; %Nyquist frekansı  f maks  ( k / 2) * f  8 * 0.10416  0.83 Hz
t=0:dt:(nt-1)*dt; %t=0:0.6:9;
f=0:df:(nt-1)*df; % f=0:0.10146:fmax=0.83
%y harmonik analizi yapılacak y(t)fonksiyonun örneklenmiş data değerleri
y=[0 4.7163 6.5026 5.6751 3.2878 0.5738 -1.5028 -2.4723 -2.3602...
-1.5293 -0.4619 0.4301 0.9153 0.9619 0.6876 0.2770 ];
Y=fft(y) % y vektörüne fft komutu uygulanıyor
figure(1) %Y (y'nin ayrık Fourier dönüşümü) zaman ekseninde gösteriliyor
subplot(221),bar(t,abs(Y)),xlabel('zaman (sn)'),ylabel('genlik(Y)');
subplot(222),bar(t,real(Y)),xlabel('zaman (sn)'),ylabel('reel(Y)');
subplot(223),bar(t,imag(Y)),xlabel('zaman (sn)'),ylabel('imajiner(Y)');
fss=0:df:(nt/2-1)*df;
Yss=zeros(1,nt/2);
Yss(1:nt/2)=(2/nt)*Y(1:nt/2);%Y degeri nt/2'ye bölünüyor(an+jbn)degerleri
[fss' Yss'] % aranılan harmonik ve gerçek genlik değerleri
%
figure(2) % gerçek harmonik genlikleri frekans domeninde gösteriliyor
subplot(221),
bar(fss,abs(Yss)); % harmonik genliginin cubuk formunda cizimi
xlabel('frekans (Hz)'),ylabel('genlik(Yss)');
subplot(222);
bar(fss, real(Yss)); % an katsayisinin cubuk formunda cizimi
xlabel('frekans (Hz)'),ylabel('reel(Yss)');
subplot(223);
bar(fss, imag(Yss)); % bn katsayisinin cubuk formunda cizimi
xlabel('frekans (Hz)'),ylabel('imajiner(Yss)');

Yukarıda verilen programın çalıştırılması sonunda Command Window ortamında elde edilen harmonik sayısı ve
gerçek genlik değerleri aşağıda gösterilmiştir:
>>
ans =
0 15.7010 % doğru akım bileşeni
0.6000 19.2996 +11.5735i % 1. harmonik nt/2 katı
1.2000 -11.2650 +13.8929i % 2. harmonik nt/2 katı
1.8000 -5.8754 + 2.3748i % 3. harmonik nt/2 katı
2.4000 -3.3826 + 0.8128i % 4. harmonik nt/2 katı
3.0000 -2.3512 + 0.3682i % 5. harmonik nt/2 katı
3.6000 -1.8616 + 0.1811i % 6. harmonik nt/2 katı
4.2000 -1.6322 + 0.0769i % 7. harmonik nt/2 katı
4.8000 -1.5642 % fmax (Nyquist) frekansındaki genlik (nt/2 katı)
5.4000 -1.6322 - 0.0769i % 7. harmonik eşleniği nt/2 katı
6.0000 -1.8616 - 0.1811i % 6. harmonik eşleniği nt/2 katı
6.6000 -2.3512 - 0.3682i % 5. harmonik eşleniği nt/2 katı
7.2000 -3.3826 - 0.8128i % 4. harmonik eşleniği nt/2 katı
7.8000 -5.8754 - 2.3748i % 3. harmonik eşleniği nt/2 katı
8.4000 -11.2650 -13.8929i % 2. harmonik eşleniği nt/2 katı
9.0000 19.2996 -11.5735i % 1. harmonik eşleniği nt/2 katı
 t değerleri
>>
ans = % gerçek genlik değerleri)
0 1.9626 % doğru akım bileşeni= y ort
0.1042 2.4124 + 1.4467i % 1. harmonik genliği
0.2083 -1.4081 + 1.7366i % 2. harmonik genliği
0.3125 -0.7344 + 0.2969i % 3. harmonik genliği
0.4167 -0.4228 + 0.1016i % 4. harmonik genliği

115
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
0.5208 -0.2939 + 0.0460i % 5. harmonik genliği
0.6250 -0.2327 + 0.0226i % 6. harmonik genliği
0.7292 -0.2040 + 0.0096i % 7. harmonik genliği
 frekans değerleri

Şekil 17.7

Şekil 17.8
Yukarıda verilen progamın çalıştırılması sonunda elde edilen t-Y(t) ve fss-Yss değişimleri şekil 17.7 ve şekil
17.8'de gösterilmiştir. Şekil 17.7 ve şekil 17.8'de Data Cursor ikonu yardımı ile bazı harmonik gnlik değerleri
şekil üzerinde gösterilmiştir. aşağıda verilen problemde ise değişim fonksiyonu verilen bir y(t) eğrisinin
harmonik analizinin yapılışı gösterilmiştir.

116
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Problem 17.10

y(t)= 0.5+2sin(2*  *3.125*t)+cos(2*  *9.25*t)


fonksiyonu ile değişen ve periyodu T=3.2 sn olan bir işaretin fft komutu yardımı ile harmonik analizi yapın.
y(t) fonksiyonundan periyod boyunca eşit zaman aralıklarında nt=64 adet örnek alınmaktadır.

Çözüm

Şekil 17.9

y(t) değişimi şekil 17.9'da görülmektedir. Verilen problemi çözen MATLAB programı aşağıda gösterilmiştir:

nt=64; T=3.2; dt=T/nt ; df=1/T; fmax=nt/(2*T);


t=0:dt:(nt-1)*dt; f=0:df:(nt-1)*df;
y= 0.5+2*sin(2*pi*3.125*t)+cos(2*pi*9.25*t);% egri denklemi
Y=fft(y);
figure(1) % y(t) egrisinin değişimi çizdiriliyor
plot(t,y)
fss=0:df:(nt/2-1)*df;
Yss=zeros(1,nt/2);
Yss(1:nt/2)=(2/nt)*Y(1:nt/2); % an+jbn degerleri
[fss' Yss']

figure(2) % y(t)nin frekans domeninde harmonik genlikleri çizdiriliyor


subplot(221),
bar(fss,abs(Yss)); xlabel('frekans (Hz)'),ylabel('genlik(Yss)');
subplot(222);bar(fss,real(Yss));xlabel('frekans(Hz)'),ylabel('reel(Yss)')
subplot(223);bar(fss,imag(Yss));xlabel('frekans(Hz)'),
ylabel('imajiner(Yss)');

Yukarıda verilen programın çalıştırılması sonunda Command Window ortamında elde edilen harmonik frekans
değerleri ve harmonik genlik değerleri aşağıda göasterilmiştir:
>>
0 1.0272 % doğru bileşen: y ort
0.3125 0.0272 - 0.0014i % 1.h
0.6250 0.0272 - 0.0028i % 2.h
0.9375 0.0272 - 0.0043i % 3.h
1.2500 0.0271 - 0.0057i % 4.h
1.5625 0.0271 - 0.0072i % 5.h

117
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
1.8750 0.0271 - 0.0087i % 6.h
2.1875 0.0270 - 0.0103i % 7.h
2.5000 0.0270 - 0.0119i % 8.h
2.8125 0.0269 - 0.0136i % 9.h
3.1250 0.0269 + 1.9846i % 10.h
3.4375 0.0268 - 0.0173i % 11.h
3.7500 0.0267 - 0.0193i % 12.h
4.0625 0.0266 - 0.0214i % 13.h
4.3750 0.0264 - 0.0237i % 14.h
4.6875 0.0263 - 0.0263i % 15.h
5.0000 0.0261 - 0.0291i % 16.h
5.3125 0.0258 - 0.0322i % 17.h
5.6250 0.0255 - 0.0357i % 18.h
5.9375 0.0251 - 0.0397i % 19.h
6.2500 0.0246 - 0.0443i % 20.h
6.5625 0.0240 - 0.0498i % 21.h
6.8750 0.0231 - 0.0564i % 22.h
7.1875 0.0219 - 0.0646i % 23.h
7.5000 0.0202 - 0.0753i % 24.h
7.8125 0.0175 - 0.0899i % 25.h
8.1250 0.0130 - 0.1115i % 26.h
8.4375 0.0046 - 0.1473i % 27.h
8.7500 -0.0159 - 0.2231i % 28.h
9.0625 -0.1107 - 0.5318i % 29.h
9.3750 0.2830 + 0.6553i % 30.h
9.6875 0.1222 + 0.1214i % 31.h

Yukarıda verilen programın çalıştırılmassı sonunda elde edilen harmonik değerleri ise şekil 17.10'da
gösterilmiştir.

Şekil 17.10

fft2 : İki boyutlu hızlı Fourier dönüşümünde kullanılır.

y = ifft(X) : X vektörünün ters ayrık Fourier dönüşümü (hızlı fourier dönüşümü


algoritmasını kullanarak) hesaplar. Eğer X bir matris ise her bir
kolonun ters ayrık fourier dönüşümünü bulur.
y = ifft(X,n) : X vektörünün n noktalı ters ayrık Fourier dönüşümü (hızlı fourier

118
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
dönüşümü algoritmasını kullanarak) hesaplar.
y = ifft(X,n,dim) : Boyut (dim) boyunca, X vektörünün n noktalı ters ayrık Fourier
y = ifft(X,[],dim) : dönüşümü (hızlı fourier dönüşümü algoritmasını kullanarak)
hesaplar.

y = ifft(..., 'symmetric'): Aktif olan boyut(dim)boyunca eşlenik simetrik X matrisinin


ters ayrık dönüşümünde kullanılır. Özellikle yuvarlama hataları
dolayısı ile tam anlamı ile eşlenik simetrik olamayan X
matrislerinde tercih edilir.

y = ifft(..., 'nonsymmetric'): Aktif olan boyut(dim)boyunca eşlenik simetrik olmayan X


matrisinin ters ayrık dönüşümünde kullanılır.

ifft2 (X) : X vektör (ya da matrisinin) iki boyutlu Ters hızlı Fourier dönüşümü bulur.

fourier : Sembolik işlemlerde Fourier dönüşümünde kullanılır. Aşağıda bu komutun


çeşitli kullanılışları gösterilmiştir:

F=fourier(f) : Sembolik f(x) fonksiyonunun Fourier transformunu bulur. f fonksiyonu


(default olarak) x'e bağlıdır. Dönüşüm sonunda (default olarak) w ile değişen
bir fonksiyon elde edilir. Diğer bir ifade ile f=f(x) fonksiyonuna fourier
komutu kullanılarak dönüşüm uygulandığında, F=F(w) elde edilir. F
fonksiyonu f fonksiyonunun fourier dönüşümüdür:

iwx
F( w )  F{f(x)} =  f ( x )e dx

(17.21)

F=fourier(f,v) : (17.21) eşitliğinde (default değer olan) w yerine v koyarak f fonksiyonunun


fourier dönüşümünü bulur:

F( v)  F{f(x)} =  f ( x )e ivx dx

F=fourier(f,u,v): (17.21) eşitliğinde (default değer olan) w yerine v ve (default değer olan) x
yerine u koyarak f fonksiyonunun fourier dönüşümünü bulur:

ivu
F( v)  F{f(u)}  f ( u )e du


Aşağıdaki problemde çeşitli fourier dönüşüm örnekleri verilmiştir:

Problem

Lineer olmayan bir yüke ilişkin ani akım ve ani gerilim değişimleri aşağıda verilmiştir. Bu yükün şebekeden
çektiği (harmonikli) toplam aktif ve toplam reaktif güç değerlerini hesaplayan bir MATLAB programı yazınız.

Çözüm

akim =[0 2.4695 4.7981 6.8567 8.5387 9.7686 10.5078 10.7580 10.5595 …
9.9877 9.1455 8.1535 7.1393 6.2254 5.5180 5.0974 5.0109 5.2680 …
5.8401 6.6627 7.6413 8.6603 9.5932 10.3144 10.7109 10.6924 10.2004 …
9.2135 7.7503 5.8684 3.6598 1.2437 -1.2437 -3.6598 -5.8684 -7.7503…
-9.2135 -10.2004 -10.6924 -10.7109 -10.3144 -9.593 -8.6603 -7.6413 -6.6627 …
-5.8401 -5.2680 -5.0109 -5.0974 -5.5180 -6.2254 -7.1393 -8.1535 -9.1455…
-9.9877 -10.5595 -10.7580 -10.5078 -9.7686 -8.5387 -6.8567 -4.798…
-2.4695 -0.0000];
gerilim =[ 53.5500 60.0747 63.6723 63.9568 60.9137 54.8064 46.1458 35.6458…
24.1611 12.6114 1.9019 -7.1572 -13.9199 -17.9614 -19.1129 -17.4759 -13.4101 …
-7.5000 -0.500 6.7331 13.3217 18.4449 21.4148 21.7404 19.1725 13.7288 …
5.6943 -4.4024 -15.833 -27.7368 -39.1877 -49.2830 -57.2183 -62.3594 -64.2974 …

119
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
-62.8848 -58.2484 -50.7779 -41.0917 -29.9819 -18.3455 -7.1043 2.8742 10.8545…
16.2951 18.8965 18.6249 15.7138 10.6410 4.0838 -3.1428 -10.1618 -16.1135 …
-20.2351 -21.9299 -20.8235 -16.7985 -10.0077 -0.8623 10.0028 21.7835 33.5767 …
44.4582 53.5650];
nt=64; T=0.02; dt=T/nt ; df=1/T; fmax=nt/(2*T)
t=0:dt:(nt-1)*dt; f=0:df:(nt-1)*df;
Y1=fft(akim);
figure(1) % i(t) egrisinin değişimi çizdiriliyor
plot(t,akim)
fss=0:df:(nt/2-1)*df;
Yss1=zeros(1,nt/2);
tss=0:dt:(nt/2-1)*dt;
Yss1(1:nt/2)=(2/nt)*Y1(1:nt/2); % an+jbn degerleri
[fss' Yss1'];
akimgenlik=abs(Yss1);
akimaci=angle(Yss1);
% gerilim hesabi basladi
Y2=fft(gerilim);
figure(2) % v(t) egrisinin değişimi çizdiriliyor
plot(t,gerilim)
fss=0:df:(nt/2-1)*df;
Yss2=zeros(1,nt/2);
tss=0:dt:(nt/2-1)*dt;
Yss2(1:nt/2)=(2/nt)*Y2(1:nt/2); % an+jbn degerleri
[fss' Yss2'];
gerilimgenlik=abs(Yss2);
gerilimaci=angle(Yss2);
toplamQ=0;
for k=1:nt/2;toplamQ=toplamQ+akimgenlik(k)*gerilimgenlik(k)*0.5*sin…
(gerilimaci(k)-akimaci(k));
end
toplamQ
toplamP=0;
for k=1:nt/2;toplamP=toplamP+akimgenlik(k)*gerilimgenlik(k)*0.5*cos…
(gerilimaci(k)-akimaci(k));
end
toplamP

Program hakkında (açıklamalar ilave et)…………………………………………

Açıklama:

Eğer işaret (örneğin i(t)) 0:T aralığında, Ts (örnekleme zamanı) aralıkla örneklenmiş ve genlik değerleri (i(t)) bir
vektör içinde,

Y=[ Y1 , Y2 , Y3 ,....., Ym ]; m=örnekleme sayısı

olarak kaydedilmiş ise ve bu örnekleme aralıklarına karşı gelen (t) zaman (ya da wt ekseni) elemanları;

t=[ t 1 , t 2 , t 3 ,...., t m ]

veya

wt=[ ( wt )1 , ( wt ) 2 , ( wt ) 3 ,...., ( wt ) m ]
ise, fourier katsayıları;

120
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
1 m
an   Yi sin(n * ( wt ) i ) ; n: incelenen harmonik sayısı
m i 1
1 m
bn   Yi cos(n * ( wt ) i )
m i 1

eşitlikleri kullanılarak hesaplanabilir (ayrık zaman analizinde). Yukarıda kullanılan t ve wt vektörleri arasında;

wt=2*pi*t/T

ilişkisi vardır.

ifourier : Sembolik işlemlerde ters Fourier dönüşümünde kullanılır. Aşağıda bu


komutun çeşitli kullanılışları gösterilmiştir:

f=ifourier(F) : Sembolik F(w) fonksiyonunun ters Fourier transformunu (f(x)) bulur. F


fonksiyonu (default olarak) w'ya bağlıdır. Dönüşüm sonunda (default olarak)
x ile değişen bir f fonksiyonu elde edilir. Diğer bir ifade ile F=F(w)
fonksiyonuna ifourier komutu kullanılarak dönüşüm uygulandığında
f=f(x) elde edilir. f fonksiyonu F fonksiyonunun ters fourier dönüşümüdür:
1 
iwx
f ( x )  F 1 {F(w)}=  F( w )e dw
2  
(17.22)

f=ifourier(F,u) : (17.22) eşitliğinde (default değer olan) x yerine u koyarak F fonksiyonunun


ters fourier dönüşümünü bulur:
1  iwu
f ( u )  F 1 {F(w)}=  F( w )e dw
2 
(17.23)
f=ifourier(F,v,u): (17.22) eşitliğinde (default değer olan) w yerine v ve (default değer olan) x
yerine u koyarak F fonksiyonunun ters fourier dönüşümünü bulur:
1  ivu
f ( u )  F 1 {F(v)}=  F( v)e dv
2  
(17.24)

Aşağıdaki problemde çeşitli ters fourier dönüşüm örnekleri verilmiştir:

Problem 17.12

ixw
a) f(w)= e w 2 /( 4*a 2 ) olmak üzere, F 1 {F(w)}=  f ( w )e dw


itx
b) g(x)= e  x olmak üzere, F 1 {G(w)}=  g ( x )e dx


itw
c) f(w)= 2e  w  1 olmak üzere, F 1 {F(w)}=  f ( w )e dw


w 2 v sin v 
ivt
d) f ( w , v)  e ; w reel bir sayı olmak üzere, F 1 {F(w)}=  f ( w , v)e dv
v 

fonksiyonlarının sembolik gösterimde ters Fourier dönüşümlerini bulunuz.

Çözüm

a) >> syms w a real; (‘enter’)


>> f =exp(-w^2/(4*a^2)); (‘enter’)

121
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
>> F =ifourier(f); (‘enter’)
>> F = simple(F) (‘enter’)
ans=
a*exp(-x^2*a^2)/pi^(1/2)

b) >> syms x; (‘enter’)


>> g = exp(-abs(x)); (‘enter’)
>> ifourier(g) (‘enter’)
ans=
1/(1+t^2)/pi

c) >> syms w; (‘enter’)


>> f =2*exp(-abs(w))-1 ; (‘enter’)
>> simple(ifourier(f,t)) (‘enter’)
ans=
-(-2+pi*Dirac(t))/(1+t^2)/pi

d) >> syms v w real; (‘enter’)


>> f = exp(-w^2*abs(v))*sin(v)/v (‘enter’)
>> ifourier(f,v,f) (‘enter’)
ans=
-1/2*(-atan((t+1)/w^2)+atan((-1+t)/w^2))/pi

17.19. MATLAB ortamında seri açılımı

MATLAB ortamında f(x) fonksiyonunun Taylor açılımı için taylor komutu kullanılır;

taylor (f) : f(x) fonksiyonunu 5. dereceden Maclaurin polinomuna göre seriye açar.

>> syms x (‘enter’)


>> taylor(cos(exp(x)) (‘enter’)
ans =
cos(1)-sin(1)*x+(-1/2*cos(1)-1/2*sin(1))*x^2-
1/2*cos(1)*x^3+(5/24*sin(1)-
1/4*cos(1))*x^4+(23/120*sin(1)-1/24*cos(1))*x^5

taylor(f,n): f(x) fonksiyonunu (n-1). dereceden Maclaurin polinomuna göre seriye açar.

>> syms x (‘enter’)


>> taylor(exp(x),4) (‘enter’)
ans =
1+x+1/2*x^2+1/6*x^3
>>pretty(ans) % görsel açılım elde etmek için (‘enter’)
2 3
1 + x + 1/2 x + 1/6 x

taylor (f, n, u) : f(x,u) fonksiyonunu ‘u’ya göre (n-1). dereceden Maclaurin polinomuna göre kadar
seriye açar.
>> syms u v (‘enter’)
>> taylor(cos(u+v),u,4) (‘enter’)
ans =
cos(v)-sin(v)*u-1/2*cos(v)*u^2+1/6*sin(v)*u^3

Aşağıdaki diğer örnekler incelenmelidir:

>> syms x (‘enter’)

122
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
>> f=1/(5+4*cos(x)); (‘enter’)
>> T=taylor(f,8) (‘enter’)
T =
1/9+2/81*x^2+5/1458*x^4+49/131220*x^6
>>pretty(T)
2 4 49 6
1/9 + 2/81 x + 5/1458 x + ------ x
131220

>> syms x (‘enter’)


>> g=exp(x*sin(x)) (‘enter’)
>> t=taylor(g,12,2); (‘enter’)

>> ezplot(t,[1,3]) (‘enter’)

Yukarıda g adlı fonksiyonun Taylor serinin ilk 12 (sıfır olmayan) elemanı x=2 civarında üretilmekte ve
çizdirilmektedir. Elde edilen eğri şekil 17.11'de gösterilmiştir.

Şekil 17.11 Şekil 17.12

17.20. Basit fonksiyonların asimtot, maksimum, minimum ve bükülme noktalarının bulunması

3x 2  6 x  1
f (x) 
x2  x 3

fonksiyonu sembolik olarak MATLAB'e tanıtılsın:

>> syms x (‘enter’)


>> pay= 3*x^2+6*x-1; (‘enter’)
>> payda= x^2+x-3; (‘enter’)
>> f=pay/payda;
>> ezplot(f) % f çizdiriliyor (‘enter’)

f fonksiyonunun değişimi şekil 17.12'de gösterilmiştir. Eğer f fonksiyonunun yatay asimtotu bulunmak
istenirse pozitif sonsuzda limiti alınmalıdır:

>> limit(f,inf) (‘enter’)


ans =

123
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
3 % 3 de yatay asimtot vardır

Eğer f fonksiyonunun dikey asimtotu bulunmak istenirse paydayı 0 yapan kökler bulunmalıdır::

>>roots=solve(payda) (‘enter’)
kokler =
-1/2+1/2*13^(1/2)
-1/2-1/2*13^(1/2)
>> kok1=double(roots(1)) % 1. kök sayıya çevriliyor (‘enter’)
kok1 =
1.3028
>> kok2=double(roots(2)) % 2. kök sayıya çevriliyor (‘enter’)
kok2 =
-2.3028
>>ezplot(f); (‘enter’)
>>hold on % f eğrisi tutulup üzerine yatay ve düşey asimtotlar çizdirilecek
% yatay asimtot çizdiriliyor
>>plot([-6 6],[3 3]) % [3 3] ile yatay y=3 eğrisi çizdiriliyor (3 yatay asimtot idi)
% düşey asimtot çizdiriliyor
>>plot(kok1*[1 1],[-4 9]) % [1 1] ile kok1 değerinde düşey asimtor çizdiriliyor )
>>plot(kok2*[1 1],[-4 9]) % [1 1] ile kok1 değerinde düşey asimtor çizdiriliyor )
>>title('yatay ve dusey asimtotlar'),hold off

Yukarıdaki program satırlarının uygulanması sonunda elde edilen eğri,yatay ve düşey asimtotlar şekil 17.13'de
gösterilmiştir (yatay eksen sınırı [-6 6], düşey eksen sınırı [-4 9] alınmıştır).

Şekil 17.13 Şekil 17.14

Şekil 17.3'e bakıldığında x=2 ile x=3 arasında bir yerde lokal maksimum, x=-4 ile x=-2 arasında da lokal
minimum olduğu görülmektedir. Maksimum ve minimum noktaları bulmak için f fonksiyonunun birinci
dereceden türevini almak gerekir:

>> f1=diff(f) (‘enter’)


f1 =
(6*x+6)/(x^2+x-3)-(3*x^2+6*x-1)/(x^2+x-3)^2*(2*x+1)

>> f1=simplify(f1) % f1 basitleştiriliyor (‘enter’)


f1 =
-(3*x^2+16*x+17)/(x^2+x-3)^2
>> pretty(f1) % kokler daha iyi görülmek isteniyor (‘enter’)
2
3 x + 16 x + 17

124
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
- -----------------
2 2
(x + x - 3)
>>krit_nokt=solve(f1) % f1 in kritik noktaları bulunuyor (‘enter’)
krit_nokt =
-8/3-1/3*13^(1/2) % lokal minimum
-8/3+1/3*13^(1/2) % lokal maksimum
>>krkok1=double(krit_nokt(1)) % lokal minimum sayıya çevriliyor (‘enter’)
krkok1 =
-3.8685
>>krkok2=double(krit_nokt(2)) % lokal maksimum sayıya çevriliyor (‘enter’)
krkok2 =
-1.4648

f fonksiyonunun bükülme noktasını bulmak için ikinci türevini sıfır yapan kökler bulunmalıdır:

>> f2=diff(diff(f)); % veya diff(f,2) komutu kullanılabilir (‘enter’)


>> bukulme_nok=solve(f2); (‘enter’)
>> bukkok=double(bukulme_nok) (‘enter’)
bukkok =
-5.2635
-1.3682 - 0.8511i
-1.3682 + 0.8511i

Yukarıda elde edilen 3 kökten 2. ve 3. kökler kompleks olduğu için (şekil 17.13'de her iki eksen de reel) bu
problemde değerlendirmeye alınmayacaktır. Yalnızca bukkok(1)ile ilgilenilecektir.Aşağıdaki komut satırları
ile maksimum,minimum ve bükülme noktaları şekil üzerinde gösterilmektedir:

>>ezplot(f) (‘enter’)
>>hold on (‘enter’)
>>plot(krkok1,double(subs(f,krkok1)),'o') (‘enter’)
>>text(-4.5,3.2,'lokal minimum') (‘enter’)
>>plot(krkok2,double(subs(f,krkok2)),'o') (‘enter’)
>>text(-2.5,2,'lokal maksimum') (‘enter’)
>>plot(bukkok(1),double(subs(f,bukkok(1))),'*') (‘enter’)
>>text(-6,2,'bukulme noktasi') (‘enter’)
>>hold off (‘enter’)

Yukarıdaki program satırlarının çalıştırılması sonunda şekil 17.14'de verilen görüntü elde edilir.

17.21. MATLAB ortamında serilerin toplanması

Sembolik ifadeler içeren matematiksel toplama işlemlerinde symsum komutu kullanılır.

symsum(f,a,b): f adlı sembolik fonksiyonun [a b] aralığında matematiksel toplamını gerçekleştirir.

5
2
 f= n işlemi MATLAB ortamında yapılsın:
1

>>syms n (‘enter’)
>>symsum(n*n,1,5) (‘enter’)
ans =
55

125
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
5 n 1
0.1
 f=  işlemi MATLAB ortamında yapılsın:
1 n  1)!
(

>>syms n (‘enter’)
>>symsum((0.1)^(n-1)/gamma(n),1,5) (‘enter’)
ans =
265241/240000
>>double(ans) (‘enter’)
ans =
1.1052

n
3
 f= k işlemi MATLAB ortamında yapılsın:
1

>> syms n k (‘enter’)


>> symsum(k^3,1,n) (‘enter’)
ans =
1/4*(n+1)^4-1/2*(n+1)^3+1/4*(n+1)^2
>> factor(ans) % sadeleştirme yapılıyor (‘enter’)
ans =
1/4*n^2*(n+1)^2
1 1
 f = 1  2  2  .... işlemi MATLAB ortamında yapılsın;
2 3
>> syms r (‘enter’)
>> symsum(1/r^2,1,inf) (‘enter’)
ans =
1/6*pi^2
>>double(ans) (‘enter’)
ans =
1.6449
 f = 1  x  x 2  .... işlemi MATLAB ortamında yapılsın: ( x  1 )
>> syms x k (‘enter’)
>> symsum(x^k,k,0,inf) (‘enter’)
ans=
-1/(x-1)

MATLAB ortamında tanımlanmış matematiksel fonksiyonlar bulunmaktadır. Bunlardan bazıları ve MATLAB


komut karşılıkları aşağıda verilmiştir:

 '  ,gamma' fonksiyonu:


1 1 1
(k )  1    ...   ...
2! 3! r!

Aşağıdaki MATLAB satırı k=  için ‘gamma’ fonksiyonunu hesaplar:

>> syms r (‘enter’)


>> symsum((1/gamma(r),1,inf) (‘enter’)
ans =
exp(1)
>> double(ans) (‘enter’)
ans =
2.7183

 ‘ J ,bessel’ fonksiyonu:

126
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
 k 2k
(1)  x 
0  J 0 (x)  
2
 
k  0 ( k! )  2 
2k  n
 (1) k  x 
n  J n (x)    
k 0 k!( n  k )! 2 
2k 
 
 ( 1) k x
J  (x)    
k 0 k!  ( k    1)!2

Aşağıdaki MATLAB satırı   0 ve k=2 için ‘bessel’ fonksiyonunu hesaplar:

>> syms r (‘enter’)


>> besseli (0, 2) (‘enter’)
ans =
2.2796

Aşağıdaki MATLAB satırı n ve k=2 için ‘bessel’ fonksiyonunu hesaplar:


>> besseli(n,2) (‘enter’)
ans =
besseli(n,2)
>> double(ans) (‘enter’)
ans =
1.5906

Aşağıdaki MATLAB satırları ‘bessel’ fonksiyonunun integralini (  J 1 ( x )dx  J 0 ( x ) ) hesaplar:

>> syms x (‘enter’)


>>int(besselj(1,x)) % veya int(besselj(1,x),x) (‘enter’)
ans =
-besselj(0,x)

Diğer bir 'bessel' integrali aşağıda verilmiştir:

>> syms z (‘enter’)


>> a=int(besselj(1,z)^2,0,1) (‘enter’)
a=
1/12*hypergeom([3/2, 3/2],[2, 5/2, 3],-1)
>> double(a) (‘enter’)
ans =
0.0717

Hatırlatma:
MATLAB ortamında U(t) birim basamak fonksiyonunu tanımlamak için Symbolic Toolbox içinde
Heaviside komutu tanımlanmıştır. Örneğin birim basamak fonksiyonu için;

1, x  x o  0
u(x  x o )  
0, x  x o  0

>>vpa(‘Heaviside(2)’) ( ‘enter’)
ans=
1.

elde edilir. Örneğin, –4 ile 8 arasında U(t) birim basamak fonksiyonunun integrali alınmak istenirse;

>int(‘Heaviside(x)’,-4,8) ( ‘enter’)
ans=

127
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
8

elde edilir. Diğer bir örnekte ise aşağıda verilen f(x) fonksiyonunun Fourier transformu bulunmak istensin. f(x)
yapısı parçalı olarak U(t) yapısına uyduğu için tüm x değerleri için f(x)=U(t)* e 2 x yazılabilir:

 2 x
e ,x 0
f (x)  

 0, x  0
>>syms x ( ‘enter’)
>>fourier(‘Heaviside(x)’*exp(-2*x)) ( ‘enter’)
ans =
1/(2+i*w)

Hatırlatma:
MATLAB ortamında ( x ) ; dirac delta (ya da impulse) fonksiyonunu tanımlamak için Symbolic Toolbox
içinde Dirac komutu tanımlanmıştır. Bilindiği gibi dirac fonksiyonu için;

( x  x o )  0 ; x  xo

 f ( x )( x  x o )dx  f ( x o )

yazılabilir. Eğer x’in tüm değerleri için f(x)=1 ise yukarıdaki integral;

 ( x  x o )dx  1


olacaktır.  ( x  x o )dx  1 integrali MATLAB ortamında yapılırsa;

>>syms x ( ‘enter’)
>>int(‘Dirac(x)’, -inf, inf ) ( ‘enter’)
ans=
1.

elde edilir. Birim basamak fonksiyonunun türevi MATLAB ortamında alınırsa;

>>diff(‘Heaviside(x)’) ( ‘enter’)
ans=
Dirac(x)

bulunur. Birim basamak fonksiyonunun Fourier transformu MATLAB ortamında şöyle yazılabilir:

>>fourier(sym(‘Heaviside(x)’)) ( ‘enter’)
ans =
pi*Dirac(w)-i/w

Hatırlatma:
MATLAB ortamında signum(x) işaret fonksiyonunu tanımlamak için Symbolic Toolbox içinde signum
komutu tanımlanmıştır. Bilindiği gibi sgn(x) fonksiyonu için;

 1, x  0


sgn( x )  0, x  0


 1, x  0

yazılabilir.
>>vpa(‘signum(4)’) ( ‘enter’)
ans=
1.

128
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
>> syms x ( ‘enter’)
>>int(‘signum(x)’ ) ( ‘enter’)
ans =
signum(x)*x
>>int(‘signum(x)’, -5, 12 ) ( ‘enter’)
ans =
7
>> syms x ( ‘enter’)
>>int(‘Heaviside(x)’,0,t ) ( ‘enter’)
Heaviside(t)*t

17.23. Fonksiyon hesap makinası

Command Window ortamında;

>> funtool ( ‘enter’)

işlemi yapıldığında kullanıcının karşısına şekil 17.17'de görülen 'fonksiyon hesap makinası' çıkar. Bu pencerede
f, g, x, a adlarında 4 adet ekran ve 28 adet buton bulunur. 4 satır halinde yerleştirilen butonların ilk satırında
kontrol butonları yer alır.Bu butonlar yardımı ile f fonksiyonuna ilişkin çeşitli dönüşümler yapılır. İkinci satırda
yer alan tuşlar kullanılarak, a sabiti ile f fonksiyonu arasında çeşitli işlemler gerçekleştirilir. Üçüncü satırda yer
alan tuşlar kullanılarak f ve g fonksiyonu arasında dönüşüm işlemleri yapılır. 'Fonksiyon hesap makinası' nın
ekran ve butonların görevleri aşağıda gösterilmiştir:

Şekil 17.17

f : f fonksiyonu (klavye yardımı ile) bu ekrana yazılır.


g : g fonksiyonu (klavye yardımı ile) bu ekrana yazılır.
x : f ve g değişimlerinin değişim aralığı (klavye yardımı ile) girilir.
a : f fonksiyonunu değiştirmek için kullanılacak sabit değer (klavye ile) buraya yazılır.
df/dx : f ekranına yazılan fonksiyonunun türevinı alır.
int f : f ekranına yazılan fonksiyonunun integralini alır (hesaplanan fonksiyonun kapalı formda
gösterimi yoksa hata verebilir).
simple f : f ekranına yazılan fonksiyonu (mümkünse) basitleştirir.
num f : f in pay fonksiyonunu gösterir.

129
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
1/f in payda fonksiyonunu
: f fonksiyonunun gösterir. yerini değiştirir
pay ve paydasının

finv : f fonksiyonunun tersini bulur (hesaplanan fonksiyonun kapalı formda gösterimi yoksa
hata verebilir).
f+a : f fonksiyonuna a sayısını ekler.
f-a : f fonksiyonundan a sayısını çıkarır.
f*a : f fonksiyonu ile a sayısını çarpar.
f/a : f fonksiyonunu a sayısına böler.
f^a : f fonksiyonunun a.kuvvetini hesaplar.
f(x+a) : f fonksiyonunda x yerine x+a koyar.
f(x*a) : f fonksiyonunda x yerine x*a koyar.
f+g : f fonksiyonu ile g fonksiyonunu toplar ve sonucu f ekranına yazar.
f-g : f fonksiyonundan g fonksiyonunu çıkarır ve sonucu f ekranına yazar.
f*g : f fonksiyonu ile g fonksiyonunu çarpar ve sonucu f ekranına yazar.
f/g : f fonksiyonunu g fonksiyonuna böler ve sonucu f ekranına yazar.
g=f : f fonksiyonunu g ekranına yazar.
swap : f fonksiyonunu g ekranına, g fonksiyonunu f ekranına yazar.
Insert : f ekranına yazılan en son fonksiyonu, fonksiyon listesinin en sonuna ilave eder
(kullanıcının f ekranına yazdığı her fonksiyon arka planda saklanır.Bundan amaç
yazılan fonksiyonların daha sonra tekrar çağrılma ihtimalidir)
Cycle : f ekranında yazılan fonksiyon ile (daha önce kullanıcı tarafından bu ekrana yazılan ve
fonksiyon listesine kaydedilen) fonksiyon listesindeki bir sonraki fonksiyonu yer
değiştirir.
Delete : Fonksiyon listesinde yer alan tüm fonksiyonları siler.
Reset : 4 adet ekran görüntüsünü default ayarlara geri getirir.
Help : funtool ile ilgili help ortamını çağırır.
Demo : Fonksiyon hesap makinasında gerçekleşen görüntüleri 4 adet ekranda kısa aralıklarla
gösterir.
Close : funtool komutu ile açılan pencereyi kapatır.

17.24. Özel fonksiyonlar listesi

MATLAB arka planında saklı bazı özel fonksiyonlar bulunmaktadır. Bu fonksiyonlara ulaşmak için;

>> mfunlist ('enter')

komutu uygulanmalıdır. Aşağıda bu fonksiyonlarla ilgili açıklamalar verilmiştir:

Fonksiyon ismi Fonksiyonun tanımı MATLAB komutu Koşullar


xt  n 1
e t
Bernoulli sayıları ve   B n (x) bernoulli(n) n0
t n!
polinomları e 1 n 0 bernoulli(n,t) 0 t  2

BesselI, BesselJ ( birinci BesselJ(v,x)


Bessel fonksiyonları dereceden Bessel fonksiyonları) BesselY(v,x) v; reel sayı
BesselK,BesselY BesselI(v,x)
( ikinci dereceden Bessel BesselK(v,x)
fonksiyonları)
( x ).( y)
Beta fonksiyonu B( x , y)  Beta(x,y)
 ( x , y)

130
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
m m!
Binom katsayıları 
n  n! ( m! n! ) Binomial(m,n)
 
( m  1)

 (n 41) (m  n  1)

Tüm eliptik Birinci,ikinci ve üçüncü dereceden EllipticK(k) a; reel sayı


integraller Legendre'nin tüm eliptik EllipticE(k)   a  
integraller EllipticPi(a,k) k; reel sayı
0  k 1
Tamamlayıcı Birinci,ikinci ve üçüncü dereceden EllipticCK(k) a; reel sayı
(complementary) tamamlayıcı modüllü, birleşik tüm EllipticCE(k)   a  
modüllü tüm eliptik eliptik integraller EllipticCPi(a,k) k; reel sayı
integraller 0  k 1
2  2
t
erfc( z)  e dt  1  erf (z)
Tamamlayıcı hata  z
fonksiyonları ve 2 2 erfc(z) n>0
erfc( 1, z)  e z
bunların iteratif  erfc(n,z)
integralleri 
erfc( n , z )   erfc(n  1, z)dt
z
2 x 2
Dawson integrali F( x )  e  x  e  t dt dawson(x)
0
Digamma d  ' (x)
fonksiyonu (x)  ln(( x ))  Psi(x)
dt ( x )
x ln(t )
Dilogaritmik integral f (x)   dt dilog(x) x>1
1 1 t
2 z
t2
Hata fonksiyonu erf (z )  e dt erf(z)
 0
Euler sayı ve (Euler sayıları için fonksiyon
polinomları 1  tn euler(n) n0
üretir)   En euler(n,z)
ch ( t ) n 0 n! t / 2

 e  zt
Ei(n, z)   dt
Eksponansiyel 1 tn Ei(n,z) n0
integraller x et Ei(x) Reel z>0
Ei(x)  PV   dt
 t
Fresnel'in sin ve cos x  2
integralleri C( x )   cos( t )dt
0 2 FresnelC(x)
x FresnelS(x)
 2
S( x )   sin( t )dt
0 2
Gamma fonksiyonu 
( z )   t z 1e  t dt
0 GAMMA(z)
Harmonik n 1
fonksiyonu h (n )     ( n  1)  γ harmonic(n) n>0
k 1 k

131
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
z sinh( t )
Shi ( z)   dt Shi(z)
Hiperbolik sin ve cos 0 t Chi(z)
integralleri z cosh( t )  1
Chi( z )    ln(z )   dt
0 t
( n i  k ) k
j

z hypergeom(n,d,x) n1,n2,.. reel
Genelleştirilmiş  i 1 (n ) sayılardır.
i
hipergeometrik F(n , d, z)   n=[n1,n2,..]
m  (d  k )
k 0 i
fonksiyonlar  k! d=[d1,d2,..] d1,d2,.. reel ve
i 1 (d i ) negatif
(j ve m; sırası ile n ve d içindeki olmayan
terim sayısıdır) sayılardır.

Legendre'nin birinci, ikinci ve 0x


Tamamlanmamış üçüncü dereceden EllipticF(x,k) a; reel sayı
eliptik integraller tamamlanmamış eliptik EllipticE(x,k)   a  
integralleri ElipticPi(x,a,k) k; reel sayı
0  k 1

Tamamlanmamış 
gamma fonksiyonu (, z )   e  t t a 1dt GAMMA(z1,z2)
z
Gamma
fonksiyonunun ln  ( z )  ln(( z )) lnGAMMA(z)
logaritması
x dt 
Logaritmik integral Li( x )  PV     Ei(ln x ) Li(x) x>1
0 ln t 
dn
 (n)(z)  (z)
dz

Poligamma  (z) : Digamma fonksiyonu


fonksiyonu Psi(n,z) n0
Kaydırılmış 
sin integrali Ssi ( z )  Si ( z)  Ssi(z)
2

MATLAB arka planında ortogonal polinomlara ilişkin hazır komutlar da yer alır. Bu tür polinomlara ulaşmak
için kullanıcının Extended Symbolic Math Toolbox 'a sahip olması gerekir. Bu araç kutusu
bilgisayarda yüklü ise;

>>maple('with','orthopoly') ('enter')

komutu kullanılarak bu fonksiyonlara ulaşılabilir. Aşağıda ortogonal polinomlara ilişkin bilgiler yer almaktadır.
Komutlar içinde yer alan (tüm koşullarda) n; negatif olmayan tam sayı, x ise reel bir sayıdır.

Polinomlar MATLAB komutu Koşullar


a, oranlı olmayan bir ifade
Gegenbauer G(n,a,x) ya da -1/2 den büyük
oranlı bir sayıdır
Hermite H(n,x)
Laguerre L(n,x)
a, oranlı olmayan bir ifade
Genelleştirilmiş L(n,a,x) ya da -1 den büyük oranlı
Laguerre bir sayıdır
Legendre P(n,x)
a ve b, oranlı olmayan bir

132
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
Jacobi P(n,a,b,x) ifade ya da -1 den büyük
oranlı sayılardır
Birinci ve ikinci
dereceden T(n,x)
Chebyshev U(n,x)

17.25. Diğer sembolik araç kutusu komutları

Aşağıda diğer bazı sembolik araç kutusu komutları ve uygulamaları gösterilmiştir:

P=poly2sym(A) : Katsayıları A vektörü ile verilen polinomo sembolik olarak yazar. Default
olarak x kullanır.
P=poly2sym(A,s) : Katsayıları A vektörü ile verilen polinomo s harfini kullanarak oluşturur.

>>A=[2 5 -3 1]; (‘enter’)


>>P=poly(A) (‘enter’)
P =
2*x^3+5*x^2-3*x+1
>>syms s; (‘enter’)
>>P=poly(A,s) (‘enter’)
P =
2*s^3+5*s^2-3*s+1

P=sym2poly(s) : S adlı sembolik polinomun katsayılarını P adlı vektöre atar.

>>syms x u v;
>>sym2poly(x^3 - 2*x - 5)
return
1 0 -2 -5

ccode(f) : f ifadesinin C programlama dili kod karşılığını yazar.

>> syms x; (‘enter’)


>> f=log(1+x); (‘enter’)
>> ccode(taylor(f)) (‘enter’)
ans=
t0 = x-x*x/2.0+x*x*x/3.0-x*x*x*x/4.0+x*x*x*x*x/5.0;

ezcontour(f) : f sembolik fonksiyonunun x=[-2  2  ] ve y=[-2  2  ] aralığında


çizer

ezcontour(f,[xmin xmax],[ymin ymax]): x ve y gibi iki değişkenli f sembolik


fonksiyonunun eş yükselti eğrilerini x=[xmin
xmax] ve y=[ymin ymax] aralığında çizer.

>> syms x y; (‘enter’)


>> f=3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) - 10*(x/5 - x.^3...
- y.^5).*exp(-x.^2-y.^2)- 1/3*exp(-(x+1).^2 - y.^2); (‘enter’)
>> ezcontour(f,[-3,3],[-3 3]) % çizim gösterilmemiştir (‘enter’)

ezmeshc(f,[xmin,xmax,ymin ymax]): x ve y gibi iki değişkenli f sembolik fonksiyonunu


ve eş yükselti eğrilerini x=[xmin xmax] ve y=[ymin
ymax] aralığında çizer.

Örnek olarak; z=f(x,y)= y/( 1  x 2  y 2 ) eğrisi , -5<x<5 ve -8<y<8 aralığında çizdirilsin:


>> syms x y; (‘enter’)
>> ezmeshc(y/(1+x^2+y^2),[-5,5,-8,8]); % çizim gösterilmemiştir (‘enter’)

133
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

ezplot3(x,y,z,[tmin,tmax]): x(t), y(t) ve z(t) f sembolik fonksiyonlarını kullanarak [tmin


tmax] aralığında 3 boyutlu parametrik eğri çizer.

Aşağıda; x=sin(t),y=cos(t) ve z=t parametrik eğrisini ,t=[0,6*pi] aralığında çizdiren komut satırı verilmiştir:

>> syms t; (‘enter’)


>> ezplot3('sin(t)','cos(t)','t',[0,6*pi]); % çizim gösterilmemiştir (‘enter’)

ezpolar(f,[a,b]): f(  ) polar sembolik fonksiyonunu [a b]= [  min  max] aralığında


çizer. Default  aralığı [0 2  ] dir. Bu aralık için [a b] yazmaya gerek
yoktur.

>> syms t; (‘enter’)


>> ezpolar(1+cos(t),[-pi pi]); % çizim gösterilmemiştir (‘enter’)

J=jordan(A): A matrisinin Jordan kanonik (normal) formunu bulur. Burada A matrisi sembolik ya
da sayısal olabilir.

[V,J]=jordan(A): Bu komut ile hem J (kanonik form) hem de benzerlik dönüşüm matrisi olan V
hesaplanır. V’nin kolonları genelleştirilmiş eigen vektörleridir. (V/A*V=J)

>>A = [1 -3 -2; -1 1 -1; 2 4 5]; (‘enter’)


>>[V,J] = jordan(A) (‘enter’)
return
A =
1 -3 -2
-1 1 -1
2 4 5
V =
-1 -1 1
0 -1 0
1 2 0
J =
3 0 0
0 2 1
0 0 2

[Y]=lambertw(x) Bu komut, Lambert’in w fonksiyonunu x için hesaplar. x sayısal olabileceği gibi


sembolik de olabilir.

Lambert’,in w sı, we w  x eşitliğini çözer. Burada w; x’in bir fonksiyonudur.

>>lambertw([0 -exp(-1); pi 1]); (‘enter’)


ans =
0 -1.0000 + 0.0000i
1.0737 0.5671
>>syms x y; (‘enter’)
>>lambertw([0 x;1 y]) (‘enter’)
return
[ 0, lambertw(x)]
[ lambertw(1), lambertw(y)]

Z=null(A) A matrisinin boş uzayını oluşturur.

>> A=[2 5 9 5;-3 1 8 -2;7 9 0 8]; (‘enter’)

134
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları
>> B=null(A) (‘enter’)
B =
-0.8171
0.1849
-0.2028
0.5070

[Pay Payda]=numden(A): A ifadesinin payını Pay’a, paydasını Payda’ya atar. A; sayı


olabileceği gibi sembolik bir ifade de olabilir.

>>A=3/5; (‘enter’)
>>[Pay Payda]=numden(sym(A)) (‘enter’)
Pay =
3
Payda =
5
>>B=x/y+y/x; (‘enter’)
>>[Pay Payda]=numden(sym(B)) (‘enter’)
Pay =
x^2+y^2
Payda =
y*x

rank(A): A matrisinin rank’ını hesaplar. A matrisi sayılardan oluşabileceği gibi sembolik ifadelerden
de oluşabilir.

>> syms x y; (‘enter’)


>> A=[x 2*x 3*y;x y 2*x;3*y 2*y 3*x]; (‘enter’)
>> rank A (‘enter’)
ans=
3

Y=zeta(w): w elemanlarında zeta fonksiyonunu hesaplar. w sayısal bir matris olabileceği gibi sembolik
bir matris de olabilir.

Zeta fonksiyonu aşağıda verilmiştir:

 1 1 1 1
   1   ...   ...
w w
k 1 kw 2 3 rw

Y=zeta(w,n): Zeta(w) fonksiyonunun n. dereceden türevini hesaplar.

>>zeta(1.5) (‘enter’)
ans =
2.6124
>>syms x y; zeta([x 2;4 x+y]) (‘enter’)
ans =
[ zeta(x), 1/6*pi^2]
[ 1/90*pi^4, zeta(x+y)]

17.26. Taylor serisi hesap makinası

Kullanıcı MATLAB Command Window ortamında;

>>taylortool (‘enter’)

komutunu uyguladığında karşısına şekil 17.18’de verilen görüntü çıkar.

135
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

Şekil 17.17

Şekil 17.17’de gösterilen Taylor serisi hesap makinesı ekranında, f(x) iadesinin sağ tarafına yazılan fonksiyonun,
N ifadesinin sağ tarafına yazılan sayı derecesinden Taylor serisine açılmış hali TN ( x ) ’in sağ tarafındaki
boşluğa yazılır. Fonksiyon x=a noktası çivarında seriye açılır. Şekil 17.17’de f ( x )  e x*sin( x ) fonksiyonu a=0
civarnda 8. dereceden Taylor serinine açılmıştır. Elde edilen fonksiyon ise TN ( x ) ifadesinin sağ tarafında
gösterilmiş ve grafik ekranında ise çizdirilmiştir. x aralığı ise [-2*  ; 2*  ] dir.

136
Uğur Arifoğlu MATLAB7.0 Simulink ve mühendislik uygulamaları

137

You might also like