MATLAB: How to make an app built by AppDesigner suitable for deployment as santdalone

app designerevalinexeMATLABstandalone

I am not sure whether my question is primitive or not, but since it's my first time building a standalone application, I would like some help: I have built an app using AppDesigner in R2016b, and I would like to deploy it as a standalone .exe application. However, I have a few concerns: my app extracts data by using the evalin function, i.e. the user has to provide the data in the workspace, and provide the app with the variable name so that the data can be used by the app. If my app becomes standalone, how will MATLAB handle the evalin command? and how the user will then be able to input the data if they don't have MATLAB installed? If evalin causes problems for standalone apps, what would be a better replacement? Note: my user inputs are matrices representing datasets. Also, my app depends on Mathworks toolboxes such as the Optimization and Neural Networks toolboxes; thus how will that be accommodated in the standalone version?

Best Answer

I understand that you would like to provide matrices available in a workspace as user inputs to your standalone application. In general, compiled applications do not process dynamic content at the run time, for example, MATLAB files. Since you want a workspace variable to be available as an input to the application, one way of doing this is to save those variables in a '.mat' file as follows:
>> save filename.mat
After saving the workspace variables you could either include this "filename.mat" while creating the standalone application or take this file as an input through GUI of application which I guess you are trying to achieve. You can browse through this file using 'uigetfile' function, store path and file name and provide this full path of file to 'importdata' function to read '.mat' file as follows:
function TestInput()
[filename,pathname]=uigetfile({'*.mat'});
filename=[pathname filename];
data=importdata(filename);
end
This way you will not have to use 'evalin' function which requires current workspace.
I would suggest looking at the below documentation link which talks about refraining from using dynamic code at run time of application and alternative of 'eval'.
I hope this will help you in resolving the issue.