2010-01-01 17 views
5

Temel olarak, 10 veri dosyam var ve bu verileri işlemek için bir MATLAB işlevi yazdım. kod şu şekildedir:MATLAB'de bir dizeyi işlev argümanı olarak nasıl geçirebilirim?

function Z = fitdata(file_path) 

    A = importdata(file_path,','); 
    ... 

end 

Ben girişine (farklı dosya adları için) aynı komutu 10 kez istemiyoruz beri, bu işlem otomatik hale getirmek için başka bir senaryo yazdı. Kod şöyle görünür:

function X = automate() 

    myarray = {'file_one', 'file_two', 'file_three',......,'file_ten'}; 
    for i = 1:9 
    mypath = myarray{i}; 
    W = fitdata(mypath); 
    ... 
    end 

end 

Ama fitdata (dosya_yolu) işlevine çağrı at hata "Çok fazla giriş argüman" alıyorum.

Bunu nasıl yapmalıyım?

+0

Hata için özür dilerim. Kodum 'importdata' idi. Ama yine de hatayı alıyorum. Matlab komut satırından fitdata ('file_one', ',') yazmayı bile denedim, ancak hata devam ediyor. – ablimit

+0

Sözdiziminizle ilgili yanlış bir şey yok gibi görünüyor. Importdata() 'nın dosyanızda boğulmadığından emin misiniz? MATLAB komut satırında importdata ('my_file_1', ') 'seçeneğini deneyin. –

+0

importdata() is OK. Bir dize gibi bir dosya bildirirseniz: file_path = 'filename' ve importdata (file_path, ',') çağrısı yapar. Tek sorun, bir dizeyi bir işleve argüman olarak iletmek olduğunu düşünüyorum. – ablimit

cevap

4

DÜZENLEME: aşağıdaki öneriler bu sorunu çözmedi ve başka bir şey yayınlanmıştır koduyla yanlış olduğu orada görünmüyor çünkü, bir sonraki yukarıda verilen fitdata sürümünü emin olmak için kontrol ediyorum yana MATLAB yolunda bu adın sadece işlevidir. Yanlışlıkla başka bir işlev veya komut dosyası oluşturmuş olabilirsiniz ve fitdata.m olarak kaydetmiş olabilirsiniz ve bu, yukarıda oluşturduğunuz sürüm yerine aranıyor olabilir.


Önceki cevap:

Ben size alıyorsanız hatanın muhtemel kaynağıdır yerine IMPORT ait IMPORTDATA işlevini kullanmaktır demek düşünüyorum.

Bir ek öneri: PATH numaralı bir işlev olduğundan, path değişkenlerinizden birini belirtmemek en iyisidir. Değişken, işlev yerine (MATLAB precedence rules temel alınarak) sona erecektir, bu, bu özel durumda hala olmasını istediğiniz şey olacaktır, ancak diğer durumlarda bir karışıklık ve hata kaynağıdır.

+0

Cevabınız için teşekkür ederiz. – ablimit

İlgili konular