想象一下,我在path 'C:\projectFolder\ABC\abc\'的路上有一个mupad笔记本电脑'C:\projectFolder\ABC\abc\'。它调用位于MyMupadProcedure.mu的过程'C:\DEF\GHI\'。
现在我有了一个Matlab脚本main.m at 'C:\projectFolder\XYZ\xyz\',它的内容如下:
nb = mupad('C:\projectFolder\ABC\abc\myMupadNotebook.mn');
status = evaluateMuPADNotebook(nb);因此,它初始化一个符号引擎并执行Mupad脚本。但是Mupad脚本需要知道在哪里可以找到这个过程。因此,我可以在带有文件->Properties->启动命令的Mupad中定义一些启动命令(或启动脚本),如下所示:
READPATH := "C:\DEF\GHI\";
read("MyMupadProcedure.mu");但是现在我在不同的机器上工作,绝对文件夹路径是不同的,但是相对路径是相同的。如何在所有机器上使用我的脚本?
在Matlab中,我只是在每台机器上设置了SearchPath,它可以工作,对Mupad来说有什么等价的东西吗?
或者,如果我可以将一个字符串从Matlab传递给Mupad,并且我只需在我的笔记本标题中编写启动命令,并使用Matlab函数确定相对路径,就会有帮助。但是,以下所有行的组合都不能工作:
syms X
X = 'hello'
setVar(nb,'X',X)
evalin(nb,['X := "' X '"']) 发布于 2015-08-03 13:59:19
可以认为MuPad与Matlab的集成要好得多。
除了符号表达式( MuPad )之外,从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);现在,在parameters.txt中将有一个文件'C:\projectFolder\ABC\abc\'。
在parameters.txt和myMupadNotebook.mn.中,环境变量 NOTEBOOKPATH可以用于获取目录。
然后可以使用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);https://stackoverflow.com/questions/31786164
复制相似问题