我正在编写MATLAB代码以便稍后发布。通过发布,我的意思是内置的MATLAB publish
工具,它允许程序员根据他们的MATLAB代码生成完整的报告。可以选择在此代码的结果之前逐节包含此报告的代码。有没有办法告诉MATLAB在报告中包含一些代码但不是全部?我知道有很多标记代码标记,但我无法找到关于此主题的任何内容。
修改:为了澄清,我希望发布所有结果,但只能部分代码。因此,简单地删除此代码不是一种选择。
干杯! =)
答案 0 :(得分:4)
隐藏您不希望别人在脚本中看到的代码。例如,在publish
文档页面的“sine_wave”示例中,我添加了一行:
junk
这是垃圾的内容:
figure()
plot(0:0.01:6,sin(0:0.01:6))
现在运行你的主脚本,发布的结果在列表中有“垃圾”,但是垃圾的内容不包括在内,你得到了正弦波的漂亮版本,而不是他们示例中包含的糟糕版本
答案 1 :(得分:1)
我知道这样做的唯一方法是删除您不希望出现在输出中的代码。如果您只想显示代码而不是输出,那么您可以在调用evalCode
时将false
属性设置为publish
。
如果您确实希望评估代码,并且还要发布输出,那么它就会稍微复杂一些。您可以手动执行您不想发布的脚本部分,然后发布您关心的代码(通过将其放在自己的.m
文件中)。如果发布的代码依赖于在省略的代码中初始化的任何变量,则无关紧要,因为当您手动执行省略的代码片段时,这些变量已添加到工作区中。
修改强>
既然你已经澄清了你的问题,说你有兴趣发布一些代码,但是所有输出,我认为最好的办法是修改“临时”脚本(包含您希望发布的部分代码集,以包含您希望在输出中显示的任何fprintf
,disp
等函数调用。
这有点像hack-ish,但就像我说的那样,我不知道有什么方法可以通过“注释”或使用publish
命令获得那种精细的粒度。
希望有所帮助!
答案 2 :(得分:1)
这是您可以保存的示例脚本,publish将说明一种解决方法。您首先必须将Include code option设置为false
,这会阻止所有评估的代码出现,但您仍然可以使用syntax highlighted code sample显示代码:
%% Controlling what code gets published
% Here's how you can do it...
%% Showing results without code
% If you set the
% <https://www.mathworks.com/help/matlab/matlab_prog/specifying-output-preferences-for-publishing.html#bthbe__-3
% *Include code* option> to |false|, you will see the plot but not the code
% that made it:
surf(peaks); % I'm John Cena!
%% But what if you want some of the code to show?
% The *Include code* setting affects the whole document, so all evaluated
% code will be hidden. If you want some code to show, you can use
% <https://www.mathworks.com/help/matlab/matlab_prog/marking-up-matlab-comments-for-publishing.html#bs_uwzr
% syntax highlighted sample code>. This does mean you have to have duplicate
% sections of code (one is evaluated, one is displayed), but it's the best
% option thus far:
%%
%
% surf(peaks);
%
surf(peaks); % You can't see me, but you see the above!
以下是公布的输出:
答案 3 :(得分:0)
我将发布选项中的Matlab表达式更改为
myFunction('PUBLISHING');
功能代码的第一行检查输入,所以我可以修改我的代码只在发布时做某些事情,通常显示数字等,但在正常操作期间不能。反之亦然:)
function [outputs] = myFunction(input1, input2)
isPublishing = (nargin == 1) && strcmp(input1, 'PUBLISHING');
if (nargin == 0) || isPublishing
% Set up default values
input1 = 'Hello';
input2 = 'World';
end
...
end