假设我在路径'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/