Matlab 定义自定义Mupad过程的常规相对搜索路径

Matlab 定义自定义Mupad过程的常规相对搜索路径,matlab,mupad,Matlab,Mupad,假设我在路径'C:\projectFolder\ABC\ABC\'处有一个mupad笔记本mymupadtook.mn。它调用位于'C:\DEF\GHI\的过程MyMupadProcedure.mu 现在我在'C:\projectFolder\XYZ\XYZ\'上有一个Matlab脚本main.m,内容如下: nb = mupad('C:\projectFolder\ABC\abc\myMupadNotebook.mn'); status = evaluateMuPADNotebook(nb);

假设我在路径
'C:\projectFolder\ABC\ABC\'
处有一个mupad笔记本mymupadtook.mn。它调用位于
'C:\DEF\GHI\
的过程MyMupadProcedure.mu

现在我在
'C:\projectFolder\XYZ\XYZ\'
上有一个Matlab脚本main.m,内容如下:

nb = mupad('C:\projectFolder\ABC\abc\myMupadNotebook.mn');
status = evaluateMuPADNotebook(nb);
因此,它初始化一个符号引擎并执行Mupad脚本。但是Mupad脚本需要知道在哪里可以找到该过程。因此,我可以在Mupad笔记本中使用文件->属性->启动命令定义一些启动命令(或启动脚本),如下所示:

READPATH := "C:\DEF\GHI\";
read("MyMupadProcedure.mu");

但现在我在不同的机器上工作,绝对文件夹路径不同,但相对路径相同。如何在所有机器上使用脚本

在Matlab中,我刚刚在每台机器上设置了搜索路径,它可以工作,Mupad是否有等价物


或者,如果我能将一个字符串从Matlab传递到Mupad,我只需将启动命令写在笔记本的标题中,并用Matlab函数确定相对路径,这将很有帮助。但以下几行的所有组合都不起作用:

syms X
X = 'hello'
setVar(nb,'X',X)
evalin(nb,['X := "' X '"']) 

有人可能会认为将MuPad集成到Matlab中要好得多

除了符号表达式(
setVar
)之外,从Matlab到MuPad的变量和字符串的直接传输似乎是不可能的。如果我错了,请纠正我。但是,可以使用相对路径在Matlab中写入文件,并使用相对路径在MuPad中读取文件

通过这种方式,可以将存储MuPad过程的路径写入文本文件,该文件位于执行MuPad笔记本的同一文件夹中:

%// determined with pwd, cd and string manipulation etc
MuPadNotebookPath = 'C:\projectFolder\ABC\abc\' 
MuPadProceduresPath = 'C:\DEF\GHI\';    

fid = fopen( [MuPadNotebookPath  '\parameters.txt'], 'w'); 
fprintf(fid,'%s\r\n%', strrep(MuPadProceduresPath ,'\','\\')); %'
fclose(fid);
现在在
'C:\projectFolder\ABC\ABC\'
中会有一个文件parameters.txt

在MuPad中,环境变量可用于获取parameters.txtmymupadtook.mn的目录

然后可用于从文本文件读取路径
'C:\DEF\GHI\'
。最后,可以设置参数

cfgfile := NOTEBOOKPATH . "parameters.txt":
rpath = ftextinput(cfgfile, rpath):
READPATH := rpath:
read("MyMupadProcedure.mu");
总的来说,它看起来像:

nb = mupad(MuPadNotebookPath);
fid = fopen( [MuPadNotebookPath  '\parameters.txt'], 'w'); 
fprintf(fid,'%s\r\n%', strrep(MuPadProceduresPath ,'\','\\')); %'
fclose(fid);
status = evaluateMuPADNotebook(nb);