5

每次尝试运行脚本时,有什么方法可以让 MATLAB 运行一定的代码块?例如,我希望 MATLAB 运行

sprintf('Here we go...')

只要我点击运行按钮,然后继续执行我的脚本,所以如果我的脚本是

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

我会得到

ans =

Here we go...


i =

      1

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

4

4 回答 4

3

一旦我按下运行按钮

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

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

您可以创建一个名为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 runtype下myrun。一旦你这样做,它会记住你的偏好,然后你可以通过myrunwith运行你的代码F5。它会在重新启动时记住您的偏好。

于 2013-09-27T16:54:38.130 回答
2

做到这一点的方法是有一个preamble.mand doThis.m。在preamble.m你有这个:

sprintf('Here we go...')

然后在doThis.m,你会有

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

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

于 2013-09-27T02:50:49.400 回答
1

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

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

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

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

请参阅此处了解更多信息。

于 2013-09-27T02:45:31.530 回答
0

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


如果您希望在没有输入的情况下对许多脚本进行此操作,则可以创建一个通用包装器:

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

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

然后你可以先调用你的显示命令,然后evalmyWrapper. 请注意,如果您的函数调用是多行的或包含引号,这会变得很麻烦。


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

于 2013-09-27T10:32:03.240 回答