MATLAB'de bir dosyanın içinde birden çok fonksiyon kullanımı
MATLAB'de son zamanlarda öğrendiğim güzel bir hilecik var: bir dosyanın içine birden çok fonksiyon yazarak fonksiyon tutamaçlarını (handle) döndürme. Hemen örnekte gösterelim:
function f = fonksiyonlar() f.f1 = @fonksiyon1; f.f2 = @fonksiyon2; end function y = fonksiyon1(x) y = x^2; end function z = fonksiyon2() z = 5; end
Bu dosyayı fonksiyonlar.m
olarak kaydedelim. fonksiyonlar
ana fonksiyon. Artık içindeki fonksiyonlara şu şekilde ulaşabiliriz:
>> f.f1(2) ans = 4 >> f.f2() ans = 5
1 yorum
Begendim ben bunu. Cunku Matlab'da buyuk bir proje yapinca ve her ufak tefek fonksiyon icin bir dosya yaratinca ortalik copluge donuyor. Ben bu coplukten kurtulmak icin bu tarz irili ufakli dosyalari ".private" klasorune koyuyorum. Matlab uzerinde calistigi klasorun icindeki ".private" klasorunu otomatik olarak o anki path'e ekliyor, dolasiyisyla bu kucuk fonksiyonlar direk cagriliyor ve ayak altinda durmuyorlar. Ikinci yontemim de, bu kucuk fonsiyonlari yine klasorlere ayirmak ve onlari addpath ile eklemek. Nedense pek sevemedim bunu da.
Bu hilenin bir dezavantaji var. Icteki fonksiyonlari dokumante edemeyeceksin, boylece yukaridaki ornekte komut satirina "help fonksiyon1" yazamayacaksin. Ayrica M2HTML gibi guzel dokumantasyon programlari fonksiyon1 ve fonksiyon2'yi gormeyecek, sadece fonksiyonlar'i gorecek.
Keske matlab'in kendi kutuphane kafasi olsa da, boyle hile hurdayla halletmesek isleri.