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 comentarios

José-Luis
José-Luis el 24 de Jun. de 2014
Editada: José-Luis el 24 de Jun. de 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 el 24 de Jun. de 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 el 24 de Jun. de 2014
ahh realise those pwd and fullfile were links to help files. (Question still stands though).

Iniciar sesión para comentar.

 Respuesta aceptada

José-Luis
José-Luis el 24 de Jun. de 2014
Maybe something like this:
filename = fullfile('/path/to/files','MASTER.csv');
fid = fopen(filename)

3 comentarios

harry
harry el 24 de Jun. de 2014
cheers, yeh used your suggestion of;
direc = pwd; filename = fullfile(direc,'MASTER.csv');
will publish result
José-Luis
José-Luis el 24 de Jun. de 2014
Editada: José-Luis el 24 de Jun. de 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 el 24 de Jun. de 2014
yep thats a good'un

Iniciar sesión para comentar.

Más respuestas (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

Categorías

Más información sobre MATLAB Compiler en Centro de ayuda y File Exchange.

Productos

Preguntada:

el 24 de Jun. de 2014

Comentada:

el 24 de Jun. de 2014

Community Treasure Hunt

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

Start Hunting!

Translated by