2010-01-01 19 views
5

Básicamente, tengo 10 archivos de datos y escribí una función MATLAB para procesar estos datos. El código es así:¿Cómo paso una cadena como argumento de función en MATLAB?

function Z = fitdata(file_path) 

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

end 

Ya que no quiero entrada de los mismos comandos 10 veces (por diferentes nombres de archivo), escribí otro script para automatizar este proceso. El código es el siguiente:

function X = automate() 

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

end 

Pero estoy consiguiendo el error "Demasiados argumentos de entrada" en la llamada a la función fitdata (ruta_archivo).

¿Cómo debo hacer esto?

+0

Disculpe por el error. era 'importdata' en mi código. Pero sigo recibiendo el error. Incluso traté de escribir fitdata ('file_one', ',') desde la línea de comandos de Matlab, pero el error persiste. – ablimit

+0

No parece haber nada abiertamente incorrecto con su sintaxis. ¿Estás seguro de que 'importdata()' no se está ahogando en tu archivo? Pruebe 'importdata ('my_file_1', ',')' en la línea de comando de MATLAB. –

+0

importdata() es correcto. Si declaro una cadena como: file_path = 'filename' y llamo a importdata (file_path, ',') entonces funciona. Creo que el único problema es cómo pasar una cadena como argumento a una función. – ablimit

Respuesta

4

EDIT: Desde las sugerencias figuran a continuación no resuelven el problema, y ​​puesto que no parece ser otra cosa mal con el código que envió, Me próxima comprobar para asegurarse de que la versión de fitdata dado anteriormente es la única función de ese nombre en la ruta MATLAB. Es posible que haya creado inadvertidamente otra función o secuencia de comandos y la haya guardado como fitdata.m, y puede recibir un llamado en lugar de la versión que creó anteriormente.


respuesta anterior:

Creo que te refieres a utilizar la función IMPORTDATA en lugar de IMPORT, que es la fuente probable del error que está recibiendo.

Un consejo adicional: es mejor no nombrar una de sus variables path, ya que ya existe una función PATH. La variable se utilizará en lugar de la función (basada en MATLAB precedence rules), que seguirá siendo lo que desea que ocurra en este caso específico, pero es una fuente de confusión y error en otros casos.

+0

Gracias por su respuesta. – ablimit

Cuestiones relacionadas