假设我在路径'C:\projectFolder\ABC\abc\'处有一个mupad笔记本myMupadNotebook.mn它调用位于'C:\DEF\GHI\'的过程MyMupadProcedure.mu。
现在我有一个Matlab脚本main.m at'C:\projectFolder\XYZ\xyz\',内容如下:

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过程的路径写入一个textfile—位于同一文件夹中,在该文件夹中执行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中,环境变量NOTEBOOKPATH可用于获取parameters.txt和myMupadNotebook.mn的目录。
ftextinput可用于从文本文件读取路径'C:\DEF\GHI\'最后可以设置READPATH
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);

关于matlab - 为自定义Mupad程序定义一般相对搜索路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31786164/

10-09 21:38