Standalone (compiled) program reading external files

Hi,
I currently have a program running in Matlab that uses 'textscan' to read several .csv files located in the same directory as the main program and use the data it obtains from them.
When I export this as a standalone program using the Matlab Compiler I have to include these files within the "shell" of the application. Is there a way getting a compiled program to read files stored within its directory (as the "pre compiled" version did) such that when they are updated with new data the program uses this updated data?
(This is necessary as my end users need access to these csv files but do not have Matlab).
Thanks in advance.

4 commentaires

José-Luis
José-Luis le 24 Juin 2014
Modifié(e) : José-Luis le 24 Juin 2014
I am not sure I totally understand the problem, but isn't this something that could be solved by passing the absolute path of the files to textscan()?
doc pwd
doc fullfile
harry
harry le 24 Juin 2014
Thanks for the swift reply.
That does sound logical.
Basically when you use deploytool to compile the program it asks you to add any data or function files to the "shared resources and helper files". I want to have a standalone program that doesn't include any of my data files within this section and can read them separately as my original code does when run it in Matlab. Does that make more sense?
The textscan section of my code is below;
filename = 'MASTER.csv'; fid = fopen(filename); T = textscan(fid, '%s%s%s%s%s%f%f%f%f%f%f','Delimiter',',','headerlines',1,'TreatAsEmpty', '#DIV/0!'); fclose(fid);
How would you suggest I alter it if you still think that solution would work?
Cheers
filename = 'MASTER.csv';
fid = fopen(filename);
T = textscan(fid, '%s%s%s%s%s%f%f%f%f%f%f','Delimiter',',','headerlines',1,'TreatAsEmpty', '#DIV/0!');
fclose(fid);
harry
harry le 24 Juin 2014
ahh realise those pwd and fullfile were links to help files. (Question still stands though).

Connectez-vous pour commenter.

 Réponse acceptée

Maybe something like this:
filename = fullfile('/path/to/files','MASTER.csv');
fid = fopen(filename)

3 commentaires

harry
harry le 24 Juin 2014
cheers, yeh used your suggestion of;
direc = pwd; filename = fullfile(direc,'MASTER.csv');
will publish result
José-Luis
José-Luis le 24 Juin 2014
Modifié(e) : José-Luis le 24 Juin 2014
Please accept the answer that best solves your problem.
direc = pwd
is redundant. You could do:
filename = fullfile(pwd,'MASTER.csv');
But even then, I don't really follow. If the files are in the working directory, you shouldn't need give the full path.
harry
harry le 24 Juin 2014
yep thats a good'un

Connectez-vous pour commenter.

Plus de réponses (1)

Hi,
I'm not sure I fully understood the question. If you don't add the MASTER.csv during compilation, and have a call to fopen, then fopen will look in the current folder (which is the folder where the executable is). So if you have in one folder both the .csv and the yourprogram.exe, then everything should be fine ...?
If not, add a line
p = pwd
to find out, "where" you are when running the compiled application.
Titus

Catégories

En savoir plus sur MATLAB Compiler dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by