2017-06-22 2 views
0

J'ai terminé un long code Matlab, qui fonctionne parfaitement dans Matlab. Maintenant, j'essaie de compiler l'application, pour l'utiliser comme un fichier .exe sur d'autres ordinateurs.Problèmes lors de la compilation de la fonction uigetfile et des données d'import || Matlab

code correspondant:

[FileName,PathName] = uigetfile('*.CSV','Select the data file'); 
delimiterIn = ','; 
headerlinesIn = 11; 
A = importdata(FileName,delimiterIn,headerlinesIn); % A becomes a 1x1 struct containing data, textdata and colheaders 

le code importe un fichier .CSV. Le uigetfile fonctionne très bien, comme j'ai utilisé [FileName,PathName]. Mais à la ligne 4 A = importdata(FileName,delimiterIn,headerlinesIn); le code cesse de fonctionner et je reçois le message d'erreur suivant:

Impossible d'ouvrir le fichier.

erreur dans => ligne name_of_my_program.m 4

Toute idée comment résoudre ce problème? Je ne peux pas changer beaucoup dans le code, car les varibales A.data et A.headliners sont beaucoup utilisées dans le code.

Ai-je utilisé la fonction importdata incorrect? Est-ce que la fonction importdata ne fonctionne pas avec les applications compilées?


csvread istead de importdata fonctionne, mais comme mentionné ci-dessus, je suis à la recherche d'une solution, était je ne suis pas besoin de changer toutes les variables dans mon code long. Ainsi, la sortie a être un 1x1 struct contenant A.data, A.textdata et A.colheaders


J'utilise Matlab R2017a et le compilateur appliaction au sein

Répondre

2

Le applicarion compilé est probablement pas en cours d'exécution dans le même dossier que votre entrée fichier, vous devez donc mettre à jour votre code pour générer le nom de fichier chemin complet en utilisant fullfile:

[FileName,PathName] = uigetfile('*.CSV','Select the data file'); 
delimiterIn = ','; 
headerlinesIn = 11; 
if FileName == 0; return; end 
Filename = fullfile (PathName, FileName); 
A = importdata(Filename,delimiterIn,headerlinesIn); % A becomes a 1x1 struct containing data, textdata and colheaders 
+0

si vous changez 'F ilename = fullfile (Chemin, NomFichier); 'Filename = fullfile (PathName, FileName);' (grande lettre N dans PathName) c'est parfait! Merci beaucoup –

+0

Fait! :) N'a pas repéré la capitale N ... :) – matlabgui