GAZİANTEP İSLAM BİLİM ve TEKNOLOJİ ÜNİVERSİTESİ MÜHENDİSLİK VE DOĞA BİLİMLERİ FAKÜLTESİ
ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ EEM507-KONTROL SİSTEMLERİ LABORATUVARI
MATLAB’ A GİRİŞ: MATrix LABoratory 1. Deneyin Amacı
a) MATLAB’a giriş yapmak.
b) Öğrencilerin “MATLAB Getting Started Guide.pdf” olarak adlandırılan dosyayı okumalarını ve alıştırma yapabilmelerini sağlamak.
c) Sayısal hesaplama, görselleştirme ve programlama için MATLAB ortamına aşina olmak.
2. Giriş
MATLAB, matris analizi, kontrol sistemi tasarımı ve analizi, dijital sinyal işleme, sistem tanımlama, sağlam kontrol, optimizasyon vb. için komutlarla entegre bir yazılım ortamı sağlar.
MATLAB, "MATrix LABoratory"nin kısaltmasıdır. Diğer programlama dilleri çoğunlukla sayılarla birer birer çalışırken, MATLAB öncelikle tam matrisler ve diziler üzerinde çalışacak şekilde tasarlanmıştır.
Öğrencilerin MATLAB'ı kurmaları ve aşağıdaki metinde belirtilen adımları ve komutları yazmaları şiddetle tavsiye edilir. MATLAB başlatıldığında, varsayılan masaüstü düzeni Şekil 1’
de görünmektedir.
Şekil 1: MATLAB başlangıç masaüstünün varsayılan düzeni
MATLAB'ın kullanımı son derece kolaydır. Komut satırına demo komutu yazılarak MATLAB’ ın nasıl kullanılacağına dair bilgiler elde edilebilir.
»demo
Demo yazmak karşımıza bir menü çıkmasını sağlar. Ayrıca MATLAB konularının çoğu hakkında çevrim içi yardım da mevcuttur. Yardım listesine erişmek için ise şu komut yazılmalıdır.
»help
Komut yazıldıktan sonra karşımıza şöyle bir liste çıkacaktır:
matlab\general - Genel kullanım komutları matlab\ops - İşaretler ve özel karakterler matlab\lang - Programlama dili
etc.
»help inv
Yukarıdaki komut yazıldığında ters matrislerin kullanımı hakkında bilgi sunulacaktır.
MATLAB genellikle komuta dayalı modda kullanılır; tek satırlık komutlar girildiğinde MATLAB bunları hemen işler ve sonuçları görüntüler. MATLAB ayrıca dosyalarda saklanan komut dizilerini yürütme yeteneğine de sahiptir.
3. MATLAB’ da Değişkenler, İşaretler ve Nümerik Veri Tipleri
MATLAB harfe duyarlıdır. Bu yüzden MATLAB için “a” ve “A” karakterleri birbirinden farklıdır.
» a=2
» b=5, c=1.3;
ans varsayılan çıkış değişkenidir. Tüm MATLAB değişkenleri, hangi veri türü olduğu fark etmeksizin, çok boyutlu dizidir. Örneğin b(1,1)=5 olarak saklanır. Aşağıdaki kodları yazın ve aldığınız sonuca bakın.
» a(1,1)
» a(1,2)
» a(1,0)
Bir ifade noktalı virgül (;) ile bitiyorsa, MATLAB hesaplamayı gerçekleştirir, ancak komut penceresindeki çıktıyı gizli tutar.
clear komutu değişkenleri kaldırır. who komutu ise değişkenleri listeler.
% işareti yorum satırı eklemek için kullanılır. Örneğin;
»T=0,2; % T zaman sabitimiz olsun.
Diğer programlama dillerine benzer şekilde Matlab’ da da aritmetik operatörler (+ - / \ ^ .\ . / .* .^), karşılaştırma operatörleri (< > <= >= == ~=) ve mantıksal operatörler (| & || && true false) kullanılmaktadır.
Değişken atarken özel karakterler ve mantıksal operatörler kullanılmaz.
Notasyonlar da değişkenlere benzer bir şekilde yazılır.
» x=3; y=4.5; z= 0.5e+3;
Kompleks sayılar gösterilirken i veya j harfi kullanılır.
» x=5+6i, % or » x=5+6j
4. MATLAB’ da Diziler ve Çizimler
Kosinüs fonksiyonunun bir yarım periyodu boyunca değerini hesaplayan bir örneği ele alalım. Bunu matematiksel olarak şekilde gösteririz: y =cos(x) x [0, π ]
Bu aralıkta sonsuz sayıda nokta olacağından tümünü hesaplamak imkansızdır. Bu yüzden sonlu sayıda nokta seçmeliyiz. Yani fonksiyonumuzu örneklemeliyiz. Örneğin aynı aralıktaki her 0.1 π değeri için hesaplama yapalım. Sonuç olarak seçtiğimiz x değerlerini şu şekilde gösterebiliriz: x={0, 0.1π, 0.2π, 0.3π, 0.4π, 0.5π, 0.6π, 0.7π, 0.8π, 0.9π, π}.
MATLAB'da dizi oluşturmak için sol parantez ile başlamak, istediğiniz değerleri virgül veya boşluklarla ayırarak girmek ve ardından diziyi sağ parantez ile kapatmak yeterlidir.
MATLAB'da bu vektörü oluşturmak kolaydır:
» x=[0 0.1*pi 0.2*pi 0.3*pi 0.4*pi 0.5*pi 0.6*pi 0.7*pi 0.8*pi 0.9*pi pi];
or
» x=0:0.1*pi:pi;
Bu noktalarda y fonsiyonunu hesaplamak için şu kod yazılır:
» y=cos(x)
MATLAB’ ın en kabiliyetli olduğu alanlardan biri de elimizdeki verinin grafiğini kolayca çizmesidir. Plot fonksiyonu giriş argümentlerine bağlı olarak farklı şekillerde kullanılabilmektedir.
Y bir vektör olarak ele alınırsa , plot(y) komutu; y’ nin elemanlarının dizinine karşı y dizinin yer aldığı parçalı doğrusal bir grafik üretir.
Eğer iki argument için düşünecek olursak plot(x,y) komutu ile x-y grafiğini elde ederiz.
Örnek 4.1: y= cos(x) for x [0, 2π ] fonksiyonunu 0.1π adım aralıklarıyla ele alalım. Bu fonksiyona ait grafiği çizmek için aşağıdaki gibi bir komut yazarız:
» x=0:0.1*pi:2*pi; y=cos(x); plot(x,y);
Daha sonra Şekil 2 (a)’ daki grafiği elde ederiz.
Şekil 2: y=cos(x) fonksiyonu
Komuta aşağıdaki gibi ufak eklemeler yaparak Şekil 2(b)’ de görülen eksen etiketi ve başlık eklenebilir.
» xlabel('x'), ylabel('y=cos(x)'), » title('Plot of the Cosine Function') Mevcut resme grafik eklemek içinse şu komutu kullanırız.
» hold % or » hold on
5. MATLAB’ da Vektör ve Matris
MATLAB ortamında iki boyutlu bir dizide, reel ya imajiner sayılardan oluşan bir değişkeni belirtmek için matris terimi kullanılır. Bir dizi genellikle bir vektör, matris ya da daha yüksek boyutlu sayılar örüntüsüdür. MATLAB'daki tüm diziler, herhangi bir boyut boyunca bileşen vektörlerinin hepsinin aynı uzunlukta olması bakımından dikdörtgendir.
Vektör, tek boyutlu bir dizidir. Tek bir satırda dört elemanlı bir dizi oluşturmak için elemanları virgül (,) veya boşluk ile ayırabilirsiniz.
» a = [1 2 3 4]
Bu dizi türü bir satır vektörüdür. Bu dizinin transpozu alınırsa bir sütun vektörüne dönüştürülebilir.
» a = [1 2 3 4]’ % or » b=a'
Matris, lineer cebir için sıklıkla kullanılan iki boyutlu bir dizidir. Birden fazla satıra sahip olan bir matris oluşturmak için satırlar noktalı virgül ile ayrılır.
» A = [1 2 3; 4 5 6; 7 8 10];
MATLAB’ da sayısız matris fonksiyonu bulunmaktadır. Örneğin bir matrisin determinantını bulmak için det() komutu, tersini bulmak için ise inv() komutu kullanılır.
» A=[1 2 3;4 5 6;7 8 9]; » a=det(A)
» A=[1 5 3;4 5 10;7 8 50]; » b=inv(A)
Tablo 1: MATLAB’ daki matris fonksiyonları
6. MATLAB’ da Polinomların Oluşturulması ve Hesaplanması
Birçok alanda polinom köklerinin bulunması büyük önem arz etmektedir. MATLAB bu problemin üstesinden geldiği gibi diğer polinom işlemleri içinde bazı araçları kullanımımıza sunar. MATLAB’ da bir polinom, katsayıları azalan bir satır vektörü ile temsil edilir.
Örneğin P(x)= x3-x polinomunu elde etmek için MATLAB’ a şu komut yazılmalıdır:
» Px=[1 0 -1 0]
Burada katsayısı sıfır olan terimlerin de belirtildiğine dikkat edilmelidir.
Bir polinomun köklerini bulmak için ise “roots” komutu kullanılır:
» q=roots(Px)
Köklerimiz varsa, polinomu “poly” fonksiyonunu kullanarak bulabiliriz:
Px1=poly(q)
İki polinomu; P1(x)=x4-2x3+5x+10 ve P2(x)=x+1, çarpmak için “conv” fonksiyonunu kullanırız.
» p1=[1 -2 0 5 10];
» p2=[1 1];
» p=conv(p1,p2)
İki polinomu; P1(x)=2x3+1 ve P2(x)=x2+x+2, bölmek için “deconv” fonksiyonu kullanılır.
» p1=[2 0 0 1];
» p2=[1 1 2];
» [q,r]=deconv(p1,p2)
Bir polinomun türevini almak içinse “polyder” fonksiyonu kullanılır.
» pd=polyder(p)
Örnek6.1: P(x)=x3-x polinomun x=-2’ den x=2’ ye kadar 0.1’ lik adımlarla matematiksel olarak hesaplanacağını farz edelim. Bunun için şu komutu yazmalıyız:
» Px=[1 0 -1 0] % The polynomial
» x=-2:0.1:2 % x variable starts at x=-2 and ends at 2 with 0.1 step size.
» y=polyval(Px,x)
7. MATLAB’ da M Dosyaları ve Programlama
MATLAB ifadeleri içeren M dosyaları “.m” olarak kaydedildiklerinden bu şekilde adlandırılırlar. Örneğin, inv.m adlı bir dosya, Matrix tersini hesaplayan MATLAB ifadelerini içerir.
Script M Dosyaları;
a) Bir dizi adımı otomatikleştirebilir,
b) Çalışma alanını diğer komut dosyaları ve komut satırı arayüzü ile paylaşabilir.
Script M Dosyaları, muhtemelen diğer M Dosyalarına referans olabilecek normal MATLAB ifadeleri dizisinden oluşur. Script M Dosyası kendini yinelemeli olarak çağırabilir. İkinci M Dosyası türleri, fonksiyon M Dosyaları olarak adlandırılır.
Fonksiyon M Dosyaları;
a) MATLAB dilini genişletebilir,
b) Parantez ( ) ile girdi argümanlarını kabul edebilir ve parantez [] ile çıktı argümanları döndürebilir,
c) Değişkenleri dahili çalışma alanında saklar.
function [out1, out2, ...] = funname(in1, in2, ...) bu komut in1, in2 … ‘ yi giriş olarak ele alan funname adında bir fonksiyon tanımlar ve out1, out2…’ yi çıktı olarak döndürür.
Fonksiyon M Dosyaları, kullanıcıya özel sorunları çözen yeni fonksiyonlar oluşturmak için mevcut fonksiyona yeni işlevlerin eklenmesine izin verir.
Oluşturulan M dosyası <filename>.m şeklinde kaydedilir ve geri çağırılırken <filename>
yazılır.
Not: C:\ ...\Documents \MATLAB dizinine değil, kendi dizininize kaydedilmesi gerekir.
Dizininizi aşağıdaki gibi değiştirmek ve etkinleştirmek için;
Aksi halde oluşturduğunuz dosyalar ile hali hazırdaki MATLAB dosyaları karışabilir.
Örnek 7.1: Örnek 6.1 için M File ve grafiği elde ediniz.
clear all % clear all is used to clear variables and functions from memory.
Px=[1 0 -1 0];
x=-2:0.3:2;
y=polyval(Px,x);
plot(x,y)
xlabel('x'),ylabel('y'),grid
Şekil 3: Fonksiyona ait grafik
Örnek 7.2: Aşağıdaki lineer olmayan fonksiyonu 0≤x≤1 aralığında 0.002’ lik adımlarla hesaplayınız.
Yukarıdaki lineer olmayan fonksiyonu temsil edecek bir M Dosyası oluşturalım.
function y = nonfunc1(x)
y = 1./((x-.3).^2 + 0.1) + 1./((x-.9).^2 + .04) - 6;
M Dosyasını fonksiyon adı ile birebir aynı olacak biçimde oluşturmalıyız. Burada nonfunc1.m olarak adlandıracağız. Oluşturduğunuz dosyayı aynı dizine kaydettiğinizden emin olun.
Şimdi fonksiyonumuzu yeniden yazmak zorunda kalmadan m dosyamızı çağırarak yeniden hesaplama yaptıralım.
clear all % clear all is used to clear variables and functions from memory.
x = 0:0.02:1;
y = nonfunc1(x);
plot(x,y), xlabel('x'), ylabel('y'), grid