title: How to run .exe programs passing variables from Matlab workspace?
body: <p>I 'm working on a Matlab project that requires large data processing and some parts of the code need to run faster than Matlab functions. For this purpose I need to call an .exe inside other scripts passing variables from the workspace. In order to understand how I could solve that a created a small addition program.</p>
  
  <p>I have the following code</p>
  
  <pre><code>function test(a,b)
  if ischar(a)
    a2=str2num(a);
  else
    a2=a;
  end
  if ischar(b)
    b2=str2num(b);
  else
    b2=b;
  end
  res=a2+b2;
  disp(res)
  </code></pre>
  
  <p>and I used the deployment tool in order to make it executable.
  If I run the test.exe through matlab with !test.exe 5 3 it  works,
  If I create two variables a=5 and b=3 and try !test.exe a b it doesn't work.</p>
  
  <p>I know that I can pass the variables to a .txt or .dat file and then close and re opened
  again through the program (the variables that I need to use are dynamic) but I don't believe that its more efficient than running mfile loading variables from workspace.</p>
  
  <p>I also searched about the use varargin,nargin etc. but these commands don't have the use of argc[], argv[] of C. Something like that it could solve my issues.</p>
  
  <p>Then I search for mex files and write the following code:</p>
  
  <pre><code>#include "mex.h"
  
  void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
  {
     mxArray *mexGetVariable(const char *workspace, const char *varname);
  
     const mxArray *mex_a;
     const mxArray *mex_b;
  
     //http://www.mathworks.com/help/techdoc/apiref/mexgetvariable.html
     if ((mex_a = mexGetVariable("a", "global"))==NULL)
     {
          mexErrMsgTxt("Variable 'a' not in workspace.");
     }
     else if ((mex_b = mexGetVariable("b", "global"))==NULL)
     {
          mexErrMsgTxt("Variable 'b' not in workspace.");
     }
     else
     {
          mexEvalString("!test.exe mex_a mex_b"); 
     }
  } 
  </code></pre>
  
  <p>(I have also passed variable a=5 b=3) But nothing worked as I have a prompt saying
  Variable a not in the workspace.</p>
  
  <p>Can anyone provide me a code solution on how can I make .exe programs reading variables from matlab workspace without opening .txt or .dat files?</p>
  
  <p>Thank you in advance for your kindness in reading my topic. </p>