首页 文章

在MATLAB中运行“前导码”代码

提问于
浏览
5

有没有办法让MATLAB每次尝试运行脚本时运行一定数量的代码?例如,我想要MATLAB运行

sprintf('Here we go...')

一旦我点击Run按钮然后继续执行我的脚本,所以如果我的脚本是

i = 1;
i = i * i;
display(i)

我会的

ans =

Here we go...


i =

      1

附:如果声誉较高的人请更正我的问题 Headers 以便更好地反映内容,我将不胜感激 .

4 回答

  • 1

    只要我点击“运行”按钮

    我假设你正在谈论编辑器中的运行按钮 . 在R2012a中有一个名为"Run Configuration"的功能 . 运行配置链接到特定脚本,并包含在脚本运行之前执行的代码 . 似乎没有全局设置可用于所有功能 . 此功能似乎已在R2012b中以静默方式删除 .

    R2013b中,您可以选择运行不同的脚本 . 大概你可以破解editor以获取当前文件并使用自定义运行脚本来运行前导码然后运行当前编辑器文件 . 这似乎是很多工作,没有多少回报...

    你可以创建一个名为 myrun.m 的文件

    desktop = com.mathworks.mde.desk.MLDesktop.getInstance;
    jEditor = desktop.getGroupContainer('Editor').getTopLevelAncestor;
    title = jEditor.getTitle;
    currentFilename = char(title.replaceFirst('Editor - ',''));
    fprintf('Here we go...');
    run(currentFilename);
    

    这在 run Run: type code to run 类型 myrun 下的编辑器中 . 一旦你记住你的偏好,你可以通过 myrunF5 运行代码 . 它将记住重启后的首选项 .

  • 2

    这样做的方法是拥有 preamble.mdoThis.m . 在 preamble.m 你有这个:

    sprintf('Here we go...')
    

    然后在 doThis.m ,你有

    preamble
    i = 1;
    i = i * i;
    display(i)
    

    使这项工作的唯一技巧是将它们放在路径上或同一目录中 .

  • 3

    不确定我是否得到你想要的,但你可以将你的m文件分成代码段 . 例如:

    %% Section 1
    sprintf('Here we go...')
    
    %% Section 2
    i = 1;
    i = i * i;
    display(i)
    

    %% 是一个分节符 . 将光标放在相关部分中,然后在“编辑器”选项卡上的“运行”部分中,单击“运行部分” . (或按Ctrl Enter)

    see here for more info.

  • 0

    如果您只希望将其用于一个(或几个脚本),请在脚本中添加命令,或者创建包装函数/快捷方式 .


    如果您希望在没有输入的情况下使用此脚本,则可以创建通用包装器:

    假设您想运行 myFun(a,b,c) 之类的东西,然后创建一个可以像这样调用的包装器:

    myWrapper('myFun(a,b,c)')

    然后,您可以先调用display命令,然后在 myWrapper 的输入上使用 eval . 请注意,如果您的函数调用是多行或包含引号,这会变得很麻烦 .


    如果这些解决方案无法帮助您,您可能需要问问自己为什么要尝试这样做以及是否有更好的解决方案来解决潜在问题 .

相关问题