SORU
25 AĞUSTOS 2010, ÇARŞAMBA


MATLAB'DA dosya başına birden fazla işlevi tanımlamak mümkün mü?

EE benim lisans derecesi için okurken KAPSAMLI bir espri bir olsa bile her işlevi kendi dosyasında tanımlanmış olması gerekli.

Yüksek lisans derecesi almak için şimdi okuyorum, ve bu programı bir proje yazmam gerekiyor. Bu hala * * * * daha yeni sürümleri için bir gereklilik midir?

Eğer bir dosya içinde birden fazla işlev koymak mümkün olup olmadığını, bunun için herhangi bir kısıtlama var mı? Örneğin, dosyadaki tüm fonksiyonları dosya dışarıdan erişilebilir, dosya ile aynı ada sahip veya tek işlevi?

Not diferansiyel serbest R2007b kullanıyorum.

CEVAP
25 AĞUSTOS 2010, ÇARŞAMBA


M-dosyası (main function yani), ilk fonksiyon m-dosya adı çağrılır. Değilgerekliana fonksiyon m-dosya ile aynı ada sahip, ancak netlik içingerekir. Fonksiyon ve dosya adı farklıdosya adıana işlevi çağırmak için kullanılır.

Sonraki tüm fonksiyonları m-dosya adı local functions (veya "çağırır" eski terminoloji), sadece adı verilen ana işlevi, yerel ve diğer fonksiyonları m-dosya. Diğer fonksiyonları m-dosya onları arayabilir değil.

Buna ek olarak, aynı zamanda fonksiyonları bildirebilirsiniziçindediğer işlevler. Bu nested functions denir ve bu sadece içiçe işlev içinde çağrılabilir. Bunları da biraz çalışmak zor olsa da oldukça kullanışlıdırlar hangi içiçe fonksiyonları değişkenlere erişebilirler.

Daha fazla düşünmek için

Jonas' answer belirtildiği gibi çıktı değişkenleri olarak function handles geçen gibi normal fonksiyon ölçüm davranış yukarıda belirtilen etrafında yol vardır. Ancak, büyük olasılıkla dosyalarınızı organize etmek için çok daha iyi seçenekler var gibi hile yapmayı adeta bir alışkanlık haline getirmeyi tavsiye etmem.

Örneğin, diyelim ki bir ana işlevi var m-file dosyası A.m Yerel işlevler D, E F birlikte A. Şimdi diyelim ki siz ikiniz diğer ilgili fonksiyonları B C m-dosyaları B.m C.m, sırasıyla, sen de ister arama yapabilmek için D, E F. İşte size bazı seçenekler:

  • M-dosyaları, kendi ayrı D, E F her biri, başka bir işlevi onları aramak için izin yerleştirin. Dezavantajı bu işlevlerin kapsamı geniş ve A, B C sadece sınırlı değildir ama bu baş, bu oldukça basittir.

  • Oluşturmak defineMyFunctions m-dosyası (gibi Jonas'ın örnek) D, E F yerel işlevler ve ana işlevi, bu işlevi yalnızca döndürür işler için onları. Bu olanak sağlar tutmak D, E F aynı dosya, ama hiçbir şey yapmıyor ilişkin kapsam bu işlevler beri herhangi bir işlevi arama defineMyFunctions olabilir çağır onları. Sen de o zaman onlara ihtiyacınız işlevi etrafında olduğundan emin olmak için bağımsız değişken olarak işleme geçen hakkında endişelenmenize gerek.

  • Yerel fonksiyonlar B.m C.m kopyalayın D, E F. Bu sınırlar kapsamında, kendi kullanımı için sadece A, B C ama yapar güncelleme ve bakım kodunuzu bir kabus çünkü üç nüsha ve aynı kod farklı yerlerde.

  • private functions kullanın!Varsa A, B C aynı dizin oluşturabilirsiniz bir alt dizin adı private D, E F orada, her yanı ayrı bir m-dosyası. Bu sınırlar kapsamı böylece onların sadece adında fonksiyonları dizin hemen üstünde (yani A, B C) tutar ve onlarla birlikte aynı yere (ama yine de farklı m-dosyaları):

    myDirectory/
        A.m
        B.m
        C.m
        private/
            D.m
            E.m
            F.m
    

Tüm bu işler biraz kapsamı dışında kalan soru ve muhtemelen daha fazla detay daha çok ihtiyacın var, ama ben düşündüm de belki iyi için dokunun üzerine daha genel bir endişe organize tüm m-dosyaları. ;)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • isupportthegosselins

    isupporttheg

    6 Aralık 2009
  • megablueblaster

    megablueblas

    23 HAZİRAN 2006

İLGİLİ SORU / CEVAPLAR