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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

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

3 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Titus Edelhofer
Titus Edelhofer am 24 Jun. 2014
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

Kategorien

Mehr zu MATLAB Compiler finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 24 Jun. 2014

Kommentiert:

am 24 Jun. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by