Creating a standalone application with dynamic data objects

2 views (last 30 days)
I have an application that processes input using data models that are in .mat files. I've added the models to the build using the -a flag; however, I'd like to let the user specify the models to use when they run the application. Ideally something like
./my_app data/folder/1 data/folder/2
where the inputs are the paths to the .mat files that get loaded using load(). Is it possible to specify the .mat files after the application has been compiled and distrubted, or does the Matlab Compiler require that the .mat files be added prior to compilation?

Answers (1)

Walter Roberson
Walter Roberson on 17 Mar 2014
The compiler does not require that the .mat files be added prior to compilation. However, if you use
load(filename)
instead of
result = load(filename)
then you may run into problems with variables that are to be loaded into the workspace. It is best to not "poof" new variables into place using load() or evalin() or assignin() or eval()
  4 Comments
Sean
Sean on 17 Mar 2014
I get the following warning
Warning: Variable 'var' originally saved as a 'Object type' cannot be instantiated as an object and will be read in as a uint32.
And then fieldnames fails, as it's called on a uint32.
After doing some research, it seems like the classdef needs to be included in the compilation either using the %#function pragma, or somehow including the classdef (not sure I have this) in the compilation. However, this is what I want to avoid--I'd like people to be able to run the app with their own models.
Walter Roberson
Walter Roberson on 17 Mar 2014
Are you trying to import objects from the .mat file where you do not care what the actual objects are as long as they have some particular set of methods that your exe applies to them? If so then I do not know if it is possible to support that.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!