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

时间:2013-09-27 02:15:06

标签: matlab

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

sprintf('Here we go...')

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

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

我会得到

ans =

Here we go...


i =

      1

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

4 个答案:

答案 0 :(得分:3)

  

我点击“运行”按钮

我假设你在谈论编辑器中的运行按钮。在R2012a中有一个名为“运行配置”的功能。运行配置链接到特定脚本,并包含在脚本运行之前执行的代码。似乎没有全局设置可用于所有功能。此功能似乎已在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下的编辑器中。一旦你记住了你的偏好,你就可以通过myrun通过F5运行代码。它会在重新启动时记住您的偏好。

答案 1 :(得分:2)

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

sprintf('Here we go...')

然后在doThis.m,你有

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

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

答案 2 :(得分:1)

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

%% Section 1
sprintf('Here we go...')

%% Section 2
i = 1;
i = i * i;
display(i)

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

see here for more info.

答案 3 :(得分:0)

如果您只想在一个(或几个脚本)中使用此命令,请在脚本中添加命令,或者创建包装函数/快捷方式。


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

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

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

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


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