3

想象一下,我在路径上有一个 mupad-notebook myMupadNotebook.mn'C:\projectFolder\ABC\abc\'。它调用位于的过程MyMupadProcedure.mu'C:\DEF\GHI\'

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

nb = mupad('C:\projectFolder\ABC\abc\myMupadNotebook.mn');
status = evaluateMuPADNotebook(nb);

因此它初始化一个符号引擎并执行 Mupad 脚本。但是 Mupad 脚本需要知道在哪里可以找到该过程。所以我可以在 Mupad Notebook 中使用File->Properties->Start-up commands定义一些启动命令(或启动脚本),如下所示:

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 '"']) 
4

1 回答 1

3

可以认为将 MuPad 集成到 Matlab 中要好得多。

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

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

%// 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\'

在 MuPad 中,环境变量 NOTEBOOKPATH可用于获取parameters.txtmyMupadNotebook.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);
于 2015-08-03T13:59:19.153 回答