TEMEL BİLGİSAYAR BİLİMLERİ Gr. 1

advertisement
TEMEL BİLGİSAYAR
BİLİMLERİ
Gr. 1
Yrd. Doç. Dr. Ahmet SERBES
GEÇEN DERSTE
DERSĠN ĠŞLEYĠŞĠ
AMAÇ
KAPSAM
ARA YÜZ
DOSYA OLUŞTURMA
KĠŞĠSELLEŞTĠRME
MATLAB TEMELLERĠ
YARIM VE KĠŞĠSELLEŞTĠRME
BETĠK OLUŞTURMA – disp( )









2
Temel Bilgisayar Bilimleri Gr1
27.09.2011
BU DERSTE
Değişken oluşturma




Skaler
Diziler, vektörler
Matrisler
Aritmetik işlemler
Bazı fonksiyonların kullanımı
Operatörler
Ġlk değer verme
Ġndeksleme
Örnekler






3
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Değişken Türleri
MATLAB zayıf tip bir dildir


Değişkenleri başlatmak gerekmez! (Örn. C, C++, C# gibi
dillerde double var = 3.84;)
MATLAB bir çok değişken tipini destekler. Bunlardan en
çok kullanılanları:



>>3.84  64 bit double
>>‘a’  16 bit char
Karşılaşacağımız bir çok değişken double veya char
cinsinden sayıların dizisi, vektörü veya matrisi olacak!
Diğer sayı tipleri de desteklenmektedir: komplex,
sembolik, 16 veya 8-bit tamsayılar, …vs.


4
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Değişkenleri İsimlendirmek
Bir değişken oluşturmak için değişkene bir isim verilir,



>> var = 3.14
>> string = ‘hello world’
Değişken isimleri




Birinci karakter mutlaka HARF olmalıdır! Ġlk karakter sayı olamaz!
Ġlk karakterden sonra sayı, harf, _ ve bunların kombinasyonları
Büyük küçük harfe duyarlı: var ile Var birbirinden farklı
Gömülü değişkenler var. Bunları kullanmak tavsiye edilmez!!






i ve j birim sanal sayıyı göstermektedir.
pi değişkeni 3.1515926…
ans en son atanan değişkeni gösterir (hesap makinesi gibi)
Inf ve –Inf pozitif ve negatif sonsuz sayılarıdır.
NaN  ‘Not a Number’
TÜRKÇE karakterler yok!


5
ç, ğ, ı, ö, ş, ü, Ç, Ğ, Ġ, Ö, Ş, Ü kullanmayacağız.
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Skalerler – Komut Satırı İşlemleri
Bir değişkene değer atamak için:


>> a = 10

Çalışma alanında görülür!
Bir değişken diğer bir değişkenin ve sayıların fonksiyonu
olabilir:


>> c = 1.3*45-2*a

a değişkenine ilk değer atanmış olmalı
Çıkışı tekrar görmek istemiyorsak:


6
>> d = 13/3;
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Diziler (Arrays)

Diğer programlama dillerinde olduğu gibi, MATLAB’de
diziler önemli bir parçayı oluşturmaktadır.

Ġki tip dizi var:
1.
2.
Elemanları kompleks ya da double olan matris
Objelerden oluşan hücre dizileri
MATLAB programlama dilinin gücü dizi, vektör ve
matrislerle çalışmanın çok kolay olmasından gelmektedir!!

7
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Satır Vektörleri – Diziler
Satır vektörü: virgül veya boşluk ile ayrılmış, köşeli
parantezler içinde bulunan sayılar!



>> satir = [1 2 5.4 -6.6]
>> satir = [1, 2, 5.4, -6.6];

Komut satırında:

Çalışma alanında:
8
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Sütun Vektörleri – Diziler
Sütun (column) vektörü: köşeli parantez içinde ve noktalı
virgülle ayrılmış değerler dizisi


>> sutun = [4; 2; 7; 4]

Komut satırı:

Çalışma Alanı:
9
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Boyut ve Uzunluk

Bir satır vektörüyle sütun vektörü arasındaki farkı




Çalışma alanına bakarak
Komut satırında o değişkenin ismini yazarak
size( ) fonksiyonunu kullanarak
Herhangi bir dizinin uzunluğunu bulmak için ise
10
Temel Bilgisayar Bilimleri Gr1
27.09.2011
MATRİSLER


Matrisler diziler gibidir.
Eleman eleman oluşturulabilirler


>> a = [1 2; 3 4]
Dizileri birleştirerek de oluşturulabilirler (boyut önemli!)







>> a = [1 2];
>> b = [3 4];
>> c = [5; 6];
>> d = [a; b];
>> e = [d c];
>> f = [ [e e]; [a b a];
>> str = [‘Merhaba, bu ders’ ‘TBB2011’];

11
stringler karakter vektörleridir!
Temel Bilgisayar Bilimleri Gr1
27.09.2011
save/clear/load

Değişkenleri bir dosyaya kaydetmek için save komutunu
kullanabiliriz

>> save MyFile a b




Çalışma alanındaki değişkenleri kaldırmak (silmek) için

>> clear a b


çalışma alanına bakın. a ve b değişkenleri gitti!
Kaydedilmiş değişkenleri geri çağırmak için:

>> load MyFile


a ve b değişkenlerini MyFile.mat isimli dosyaya kaydeder.
MyFile.mat dosyası bulunduğunuz dizine kaydedilir
Ġlk açılıştaki bulunulan dizin \MATLAB dizinidir.
çalışma alanına bakın! a ve b değişkenleri geri geldi!
Bütün değişkenleri kaydetmek ve geri çağırmak için, örn

12
>>save myenv; clear all; load myenv;
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Örnek: Değişkenler

Şimdiki tarih ve saati alıp kaydedelim






13
start diye bir değişken oluştalım
clock() fonksiyonunu kullanalım
start değişkeninin boyutu nedir? Satır ya da sütun vektörü mü?
start değişkeni ne içeriyor? help clock yazıp clock() fonksiyonunun ne işe
yaradığını öğrenelim
start değişkenini bir string’e çevirelim. datestr() fonksiyonunu kullanarak
startString isimli yeni bir değişken oluşturalım
start ve startString değişkenlerini startTime isimli bir .mat dosyasına
kaydedelim
>>help clock
>>start = clock;
>>size(start)
>>help datestr
>>startString = datestr(start);
>>save startTime start startString;
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Temel Skaler İşlemler

Aritmetik işlemler (+, -, *, /)





Üstel (^)




>> 4^2
>> (3 + 4*i)^2
>> (7 + 3*j)^(2+i)
Çarpma işlemi parantezler ile yapılamaz!


>> 7/45
>> (1+1)*(2+1)
>> 1 / 0
>> 0 / 0
>>3(1+0.7)  hata verir
Komut satırını temizlemek için

14
>>clc
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Hazır Fonksiyonlar

MATLAB’de kendi fonksiyonlarımızı yazabiliriz. Bununla
birlikte oldukça fazla miktarda hazır fonksiyon vardır!

Fonksiyonlar parantez içinde çağrılır. Böylece
parametreler çağırılabilir:






15
>> sqrt(2)
>> log(4), log10(0.7)
>> cos(pi/4), atan(-.8)
>> exp(3+i)
>> round(1.2), floor(5.49), ceil(2.001)
>> angle(i); abs(3+4*i)
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Örnek: Skalerler

Bir betik oluşturalım (geçen derste öğrenmiştik).





Öğrenme katsayınız 1.3 gün olsun. Önce 1.3 günde kaç saniye
varsa bunu tau isimli değişkene atayalım.
Bu ders 14 hafta sürmektedir. 14 haftada 4’er saatteki saniye
sayısı dersBitisi değişkeni olsun.
Aşağıdaki denklem de sizin MATLAB öğrenmenizin zaman
içerisindeki fonksiyonu olsun
dersBitisi sonunda ne kadar matlab öğrenmiş olacağız? Bu da
dersSonuBilgisi değişkeni olsun. (exp( ) fonksiyonu!)
dersSonuBilgisi değişkenini kullanarak aşağıdaki yazıyı komut
satırına yazdıralım:


16
Ders sonunda %X kadar MATLAB bileceğim.
Ġpucu: Bir sayıyı string’e çevirmek için num2str() fonksiyonu kullanılabilir.
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Transpoze

Transpoze operatörü bir satır vektörünü sütuna, sütun
vektörünü ise satır vektörüne çevirir:




>> a = [1 2 3 4+2*i]
>> transpose(a)
>> a’
>> a.’

‘ operatörü vektörlerin Hermityan-transpozesini verir.
Yani bütün kompleks sayıları konjügesini de alır!

Vektörler gerçel sayılardan oluşuyorsa .’ ile ‘ aynı sonucu
verir!
17
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Toplama ve Çıkarma

Toplama ve çıkarma işlemler eleman-eleman yapılır.
Boyutlar tutmalıdır (biri skaler değilse)

Satır ve sütun vektörleri toplanamaz!
Transpoze işlemi boyutları uyumlu hale getirebilir.




>> c = satir + sutun’
>> c = satir’ + sutun
Bir vektörün elemanlarını toplamak ya da çarpmak için:


18
>> s = sum(satir);
>> s = prod(satir);
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Eleman-Eleman İşlemler

Skalerler üzerinde çalışan hemen bütün fonksiyonlar
diziler üzerinde de çalışır:


>> t = [1 2 3];
>> f = exp(t); denktir f = [exp(1) exp(2) exp(3)];

Fonksiyonların diziler üzerinde nasıl bir işlem yaptığını
görmek için help dosyasına bakılabilir.

Vektörlerde çarpma ve bölme işlemleri iki modda
yapılabilir


19
Eleman-eleman
Standart
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Eleman-Eleman İşlemler

Eleman-eleman işlem yapmak için nokta kullanılır: . (.*, ./,
.^). Her iki tarafın da boyutları uymalıdır.



>> a = [1 2 3]; b = [4; 2; 1];
>> a.*b, a./b, a.^b  hepsi hatalı
>> a.*b’, a./b’, (a’).^b, a.^(b’)  hepsi doğru
HATA
herhangi bir boyut olabilir
20
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Standart İşlemler


Çarpma işlemi standart ya da eleman-eleman olabilir.
Standart çarpma işlemi (*) lineer cebirde öğretilen matris
ve/veya vektör çarpım işlemidir.



Ġki matrisin çarpılabilir olması için boyutları (𝑁1 × 𝑁2 )×(𝑁2 ×
𝑁3 ) olmalıdır.
Standart ^ işlemi sadece kare matrislerde yapılabilir.
Sağ ve sol bölme işlemleri (/ \) tersiyle çarpmakla aynıdır.

Öneri: Sadece tersiyle çarpın. Örn: C = B*A^(-1)
üstel almak için kare olmalı
21
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Otomatik İlk Değer Vermek

Birlerden, sıfırlardan ya da rasgele sayılardan oluşan, ilk
değer verme işlemi için:

>> o = ones(1, 10);


>> z = zeros(42, 1);


5x5’lik rasgele sayılardan oluşan kare matris ([0 1] arasında düzgün
dağılımlı)
>> n = nan(4, 6);

22
42x1’lik bir sütun vektörü
>> r = rand(5, 5);


1x10’luk bir dizi (satır vektörü)
4x6’lık NaN’lardan oluşan bir matris. Ġlk değer verilmemiş
değişkenden oluşmaktadır.
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Otomatik İlk Değer Vermek

Lineer olarak hizalanmış satır dizisi oluşturmak için:

>> a = linspace(1, 10, 4);


>> b = linspace(10, 1, 4);


10 ile 1 arasında lineer azalan 1x4’lük dizi. b = [10 7 4 1]
İki nokta üst üste (:) operatörü de kullanılabilir.

>> c = 1:2:10



1’den 10’a kadar arasında ikişer-ikişer artan dizi. c = [1 3 5 7 9]
En çok kullanılan operatörlerden biri.
>> d = 1:10


1 ile 10 arasında (10 dahil) lineer olarak artan 1x4’lük dizi. a = [1 4 7 10]
Eğer artış miktarı belirtilmemişse birer-birer artar. d = [1 2 3 … 10]
Logaritmik olarak hizalanmış satır vektörü üretmek için

23
>> help logspace
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Öğrenme Eğrisini Çıkarmak

Bir önceki örnekte 0’dan dersBitisi’ne kadar olan zaman
aralığından 10000 parça örnek alın.

Bu zaman değerlerinin her biri için öğrenme denklemini
kullanarak ne kadar öğrendiğinizi hesaplayın. Öğrenme
denklemi:
24
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Dizi İndeksleme

MATLAB’de dizilerin indeksi 0’dan değil 1’den başlar.
a(n)  a dizisinin n. elemanı.

Ġndeks parametresi bir vektör olabilir! Örneğin:

25
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Matris İndeksleme

Matrisler iki şekilde indekslenebilirler.


Tek parametreli
Ġki parametreli

Matris indeksi tek parametre veya iki parametre olabilir

Matrisin indeksini alt matris olarak da tanımlayabiliriz! Örnek:



26
>> a = rand(5)
>> a(1:3, 2:5)
>>a([1 3 5], [1 4]);
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Matris İndeksleme

Bir matrisin satır veya sütun(lar)ını alabiliriz.



>> d = c(1, :);  d = [12 5];
>> e = c(:, 2);  e = [5; 13];
Matrisin satır veya sütunlarını değiştirebiliriz.

27
>> c(2, :) = [3 6];  c = [12 5; 3 6];
Temel Bilgisayar Bilimleri Gr1
27.09.2011
İleri İndeksleme

vec isimli bir dizimiz olsun:


>> vec = [5 3 1 9 7];
vec dizisindeki en büyük ve en küçük sayıları ve bunların
indekslerini bulabiliriz:

[minDeger minIndeks] = min(vec);


max() fonksiyonu da aynı şekilde çalışır
find fonksiyonu bir vektörde istediğimiz değerin olduğu
indeksi bulmamızı sağlar

28
ind = find(vec == 9);
Temel Bilgisayar Bilimleri Gr1
27.09.2011
Download