Comment puis-je passer une chaîne de caractères comme un argument de fonction dans MATLAB?
En gros, j'ai 10 fichiers de données et j'ai écrit une fonction MATLAB pour le traitement de ces données.
Le code ressemble à ceci:
function Z = fitdata(file_path)
A = importdata(file_path,',');
...
end
Car je ne veux pas d'entrée de la commande de même 10 fois (pour les noms de fichier différent), j'ai écrit un autre script pour automatiser ce traitement. Le code ressemble à ceci:
function X = automate()
myarray = {'file_one', 'file_two', 'file_three',......,'file_ten'};
for i = 1:9
mypath = myarray{i};
W = fitdata(mypath);
...
end
end
Mais j'obtiens le message d'erreur "Trop d'arguments d'entrée" à l'appel de la fitdata(chemin_fichier) de la fonction.
Comment dois-je faire cela?
Désolé pour l'erreur. elle a été 'importdata' im mon code. Mais je suis encore en train de l'erreur. J'ai même essayé de type fitdata('file_one',',') à partir de Matlab en ligne de commande, mais l'erreur persistes.
Il ne semble pas être quelque chose de manifestement mal avec votre syntaxe. Êtes-vous sûr que
importdata() est OK. Si je déclare une chaîne de caractères comme : chemin_fichier ='nom de fichier' et appeler importdata(chemin_fichier,','), alors il fonctionne. Je pense que le seul problème est de savoir comment passer une chaîne de caractères comme argument d'une fonction.
Il ne semble pas être quelque chose de manifestement mal avec votre syntaxe. Êtes-vous sûr que
importdata()
n'est pas de s'étouffer avec votre fichier? Essayez importdata('my_file_1', ',')
sur la ligne de commande MATLAB.importdata() est OK. Si je déclare une chaîne de caractères comme : chemin_fichier ='nom de fichier' et appeler importdata(chemin_fichier,','), alors il fonctionne. Je pense que le seul problème est de savoir comment passer une chaîne de caractères comme argument d'une fonction.
OriginalL'auteur ablimit | 2010-01-01
Vous devez vous connecter pour publier un commentaire.
EDIT: Depuis les suggestions ci-dessous ne permettent pas de résoudre le problème, et depuis il ne semble pas y avoir autre chose de mal avec le code que vous avez posté, je voudrais prochaine assurez-vous que la version de
fitdata
donné ci-dessus est le seulement fonction de ce nom sur le MATLAB chemin. Vous pouvez, par inadvertance, a créé une autre fonction ou un script et enregistré commefitdata.m
, et c'est peut-être appelée à la place de la version que vous avez créé ci-dessus.Réponse précédente:
Je pense que tu veux dire utiliser le IMPORTDATA fonction au lieu de L'IMPORTATION, qui est la source probable de l'erreur que vous obtenez.
Un autre conseil: il est préférable de ne pas le nom de l'un de vos variables
path
, car il existe déjà une fonction CHEMIN. La variable qui sera utilisée à la place de la fonction (basé sur le MATLAB les règles de priorité), ce qui sera toujours ce que vous voulez arriver dans ce cas précis, mais est une source de confusion et d'erreur dans les autres cas.OriginalL'auteur gnovice