MATLAB kullanıyorsanız arrayfun, cellfun, spfun ve structfun  fonksiyonlarından haberdar olmak işinizi rahatlatabilir. Bu fonksiyonlar en genel anlamda konuşacak olursak, kullandığınız verideki elemanlar üstünde hızlıca işlem yapıp sonuçları yine bir listede oluşturmanızı sağlar. Hemen taze kullandığım bir örnek vereyim:

klasor= '../veri/yuzler/';
dosyaAdlari= arrayfun(@(x) x.name, dir([klasor '*.jpg']), 'UniformOutput', false);

Üstteki örnekte, ilgili klasördeki 'jpg' uzantılı dosya adlarını dosyaAdlari değişkeninde topluyorum. Bu değişken cell yapısında. dir fonksiyonu her elemanı struct yapısında olan bir dizi döndürüyor. Her eleman, name isimli alanında dosya adını taşıyor. @ ile başlayan kısım bir fonksiyon tutucu. @(x) x.name anonim fonksiyonu, içine aldığı elemanın name alanını döndürüyor.

Bu işi yapmanın birçok yolu olabilir, hatta daha kısası ve sadesi mümkündür ama bu yöntem hoşuma gitti.

Bir örneği de dokümantasyondakinden esinlenerek vereyim:

s.a1 = 'Ocak';
s.a2 = 'Şubat';
s.a3 = 'Mart'; 
s.a4 = 'Nisan';
s.a5 = 'Mayıs';
s.a6 = 'Haziran';
s.a7 = 'Temmuz';
s.a8 = 'Ağustos';
s.a9 = 'Eylül';
s.a10 = 'Ekim';
s.a11 = 'Kasım';
s.a12 = 'Aralık';


aylarinHarfSayisi = structfun(@numel, s)
kisaAyAdlari = structfun(@(x) ( x(1:3) ), s, 'UniformOutput', false)

UniformOutput parametresi önemli. Eğer doğru olarak verirseniz, sonuçların skaler olacağını varsayıyor ve dönecek verinin bir skaler dizilimi oluyor. Örneğin aylarinHarfSayisi değişkeni skaler değerlerden oluşan bir dizilim. Fakat kisaAyAdlari bir cell dizilimi.

Dizilerin üstünde gezinecek for döngüleri yazmaktansa bu birebir mapping yöntemi çok daha güzel bir yöntem.