【问题标题】:Define general relative search path for custom Mupad procedures定义自定义 Mupad 程序的一般相对搜索路径
【发布时间】:2015-08-03 11:33:37
【问题描述】:

假设我在路径 'C:\projectFolder\ABC\abc\' 上有一个 mupad 笔记本 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 脚本需要知道在哪里可以找到该过程。所以我可以在 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 '"']) 

【问题讨论】:

    标签: matlab mupad


    【解决方案1】:

    人们可能会认为将 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 2015-07-04
      相关资源
      最近更新 更多