-

Matlab’da Cell Array(Hücre Dizileri)

Cell Array‘in türkçesi “Hücre Dizisi”  demektir.Dizi oluştururken dizinin içine aynı tipten veriler atardık.Cell Arraylerde alışılmışın dışında tek tip veri yazmak zorunda değiliz, birbirinden farklı veri tiplerini içeren bir dizi oluşturabilme imkanı sağlar.Kullanımı şu şekildedir:

ca={4,[1 2 3;4 5 6],’derya’,’c’}  %   gördüğünüz gibi oluşturduğum dizide integer,matrix,string veri tiplerini bir arada kullandım.

matlab ekranına yukarda yazdığım kodu yazarsanız şöyle bir çıktı alırsınız:

ca =

[4]    [2x3 double]    ‘derya’    ‘c’

Diğer dizilerde olduğu gibi cell arraylerde istediğiniz elemana ulaşabilmeniz mümkündür,şu şekilde ulaşabilirsiniz:
ca{2}
Şöyle bir çıktısı olacaktır:
ans =
     1     2     3
     4     5     6
Eleman olan matrixin tek elemanına da ulşamak mümkündür:
ca{2}(2,2)
ans =
     5

Hatta cell arraye eleman olarak başka bir cell array yazmak da mümkündür:

bigca={ 2,’derya’,ca,[1 2 3;3 4 5] }

bigca’den ca deki  elemanlara da ulaşabilmek mümkündür,ca deki matrixdeki herhangi bir elemana ulaşmak istersek:

bigca{3}{2}(2,2)

ans =

5

Bir de “cellplot”  denen bir konut vardır bu da dizinizin şekilsel gösterimini verir,bizim oluşturduğumuz ca ve bigca in nasıl gözüktüğüne bir bakalım:

cellplot(ca)

cellplot(bigca)

Num2cell”  adındaki komut da normal olarak yazılmış ifadeleri(matrix ya da integer tipinde veriler olabilir) cell arraylere çevirir,kullanımı şu şekildedir:

num2cell([1 2 3;4 5 6])

ans =

[1]    [2]    [3]
[4]    [5]    [6]

Cell array oluşmuş oldu.

DERYA GÜNDÜZ

Matlab’da Fonksiyonlar

Matlab’da kendimizin oluşturduğu fonksiyonları bir m-file’a kaydedip o şekilde kullanmak çoğu açıdan daha fonksiyoneldir.Bu m-file‘ı oluşturuken dikkat edilmesi gereken birkaç önemli nokta var,bunları maddeleyerek anlatmak istiyorum:

  • m-file’ı fonksiyona verdiğiniz ismi ile kaydetmelisiniz,örneğin fonksiyonun ismi “f” is “f.m”  şeklinde kaydetmelisiniz,
  • kod yazmaya “function” ile başlamalısınız, örneğin;

function y=f(x)
y=x+3

  • m-file içinde tanımladığınız tipler oranın içinde geçerlidir yani localdir,başka yerden ulaşmazsınız,
  • kaç tane input ve output kullanmak istediğinizi siz belirlersiniz,

function [x,y]=fon(a,b,c)                  %    burda fon fonksiyonu için 2 output ve 3 input vardır

       x=a+b+c
       y=30-x
command window’da fonksiyonu kullanırken de(birden fazla input ve outputu olanlar için)
            x=fon(1,2,3)             %  x=6
           ya da
           [x,y]=fon(1,2,3)      % x=6 ve y=-24 sonucunu alırsınız
  • kendi oluşturduğunuz fonksiyonda yazdığınız yorum satırlarını “help fon” dediğinizde görüntüleyebilirsiniz,fonksiyonunuzu daha da fonksiyonel hale getirmiş olursunuz,fakat burda yazdığınız ilk blok help dediğiniz kısımda görünür,
  • nargin(number of input arguments) fonksiyonda kaç tane input kullanıldığını geri döner,çeşitli kontroller de yapılabilir.

function x=fon(a,b,c)
if nargin==3
x=a+b+c
else
disp(‘yazılan argumenler yetersiz’)
end
gibi bir örnek verilebilir.

  • nargout(number of output arguments),kaç tane output kullanıldığı bilgisini geri döner,
  • kullanılacak olan input ve output sayısını  varargout,varargin kullanarak tam  olarak belirtmesek de olur,

function varargout=fon(varargin)                %şeklinde tanımlama yapılır ve isteğe göre kontroller yapılabilir

DERYA GÜNDÜZ

Matlab’da overlapping olayı

Matlab’da çizim yaparken,aynı grafik üstünde birden fazla fonksiyonu çizmek zorunda olduğumuz zamanlarda  verilen x ve çıkan y değerlerine göre grafikteki  görüntüsünde zaman zaman istenmeyen durumlar ortaya çıkabiliyor,örneğin bekleneden daha farklı bir grafik çıkabiliyor karşımıza.Bunun nedeni overlapping olabilir,yani grafiklerin üstüste binmesi  ve  de net görüntülenememesi olayı:Bunu bir örnekle anlatmak daha açıklayıcı olacak sanıyorum,

X=[0 ,2π]
Y1=ex
Y2=e2x

veriliyor ve bu iki fonksiyonu aynı grafik üzerinde çizmemiz isteniyor.
ilk yazacağımız  matlab kodu şöyle olacaktır:

X=0:0.1:2*pi
Y1=exp(X)
Y2=exp(2*X)
plot(X,Y1,’g+’,X,Y2)
bu koddan da çıkacak şekli şöyle olacaktır:
        Gördüğünüz gibi iki grafiği net görüntüleyemedik,işte bu overlapping dediğim olaydır,yani iki grafik üst üste biniyor ve ben ikisini net olarak göremiyorum.
peki neden overlapping oldu?
cevap,x değerlerinin aynı olması.X değerleri aynı veya yakın olduğu zaman iki grafik net olarak görüntülenemez.
Bunu engellemenin yolu da axis komutunu kullanmaktır.Axis komutu grafik üzerinde ölçeklendirme yapar(bir bölgeyi zoomlamış gibi oluyor şuanki durumda).
Kullanımı:axis([xmin xmax ymin ymax])
xmin=0
xmax=2π
ymax=0        çıkan matrixlerden görülebileceği üzre
ymin=492     çıkan matrix değerlerinden en büyüğü yazılır
kodun son hali:
X=0:0.1:2*pi
Y1=exp(X)
Y2=exp(2*X)
plot(X,Y1,’g+’,X,Y2,’bo’)
axis([0 2*pi 0 492])
olmuş oldu,çıkan şekil şöyle olacaktır:

DERYA GÜNDÜZ