gpt4 book ai didi

matlab - 为自定义 Mupad 程序定义一般相对搜索路径

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:43 24 4
gpt4 key购买 nike

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

现在我在 'C:\projectFolder\XYZ\xyz\' 有一个 Matlab 脚本 ma​​in.m,内容为:

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

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

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

最佳答案

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

除了符号表达式 (setVar) 之外,从 Matlab 到 MuPad 的变量和字符串的直接传输似乎是不可能的。如我错了请纠正我。但是,可以使用相对路径在 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);

现在 'C:\projectFolder\ABC\abc\' 中将有一个文件 parameters.txt

在 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);

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com