Alle,
Ich versuche, Plattformeinstellungen dynamisch basierend auf Benutzereingaben festzulegen, die über eine Benutzeroberfläche gesammelt wurden.
Im Wesentlichen gibt der Benutzer an, welche Matlab-Version auf seinem Computer installiert ist, und ich verwende diese, um einen 32-Bit- und einen 64-Bit-Pfad zur Root-Variablen für Matlab auf dem Computer des Benutzers zu erstellen.Dies führt jedoch immer wieder zu einem Fehler:
Unerwartetes "\MATLAB\R2018a\". Vielleicht fehlt ein "," oder ")".
Versuch, Argumente der Funktion "MATLABROOT32" zu analysieren.
Jede Hilfe oder Beratung ist willkommen.
</CODE><CODE class=" language-jsl"></CODE></PRE><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-218535" slang="en-US">Betreff: Legen Sie die Plattformeinstellungen mithilfe einer Variablen fest</LINGO-SUB><LINGO-BODY id="lingo-body-218535" slang="en-US"><P>Das Problem, das Sie mit den Zeichenfolgen in Anführungszeichen hatten, ist einer der Gründe, warum ich normalerweise Eval (Substitute ()) oder Eval (EvalExpr ()) bevorzuge.</P>
<P> </P>
<PRE><CODE class=" language-jsl">Eval(
Substitute(
Expr(
Platform Preferences(
PathVar(
MATLABROOT32( "DV_ML32" ),
MATLABROOT( "DV_ML64" )
)
)
),
"DV_ML32", matlab_32bit_path,
"DV_ML64", matlab_64bit_path
)
);
user_matlab_ver = '2018a' ; // for example <BR />matlab_32bit_path = "C:\Program Files (x86)\MATLAB\R2018a\";
matlab_64bit_path = "C:\Program Files\MATLAB\R2018a\";
Eval( Parse( Eval Insert("\[ Platform Preferences( PathVar( MATLABROOT32( ^matlab_32bit_path^ ), MATLABROOT( ^matlab_64bit_path^ ) ) );]\" ) ) );
ConnectToMatlab = Expr(
matlab_conn = MATLAB Connect();
matlab_conn_flag = matlab_conn << Is Connected;
);
ConnectToMatlab;
Dank an @gblatz , die folgenden Werke:
Eval(
Parse(
Eval Insert(
" Platform Preferences( PathVar( MATLABROOT32( \!"^matlab_32bit_path^ \!" ), MATLABROOT( \!"^matlab_64bit_path^\!" ) ) );"
)
)
);