2011-08-31 29 views
14

我正在寫MATLAB代碼以便稍後發佈。通過發佈,我的意思是內置MATLAB publish工具,它允許程序員從他們的MATLAB代碼生成完整的報告。在此代碼的結果之前,有一個選項可以將代碼與此報告一起包括在內。有沒有辦法告訴MATLAB在報告中包含一些這樣的代碼,但不是全部?我知道有相當多的標記代碼標記,但我無法找到關於此主題的任何內容。有沒有在Matlab中發佈時選擇性包含代碼的方法?

編輯:只是爲了澄清,我想所有發榜,但只有一些代碼。因此,簡單地刪除這些代碼不是一種選擇。

乾杯! =)

回答

2

隱藏您不希望人們在腳本中看到的代碼。例如,在從publish文檔頁面中的「sine_wave」的例子,我加了一行:

junk 

這裏的垃圾內容:

figure() 
plot(0:0.01:6,sin(0:0.01:6)) 

現在運行主腳本,並公佈結果在列表中有「垃圾」,但垃圾的內容不包括在內,你可以得到正弦波的漂亮版本,而不是他們示例中包含的蹩腳版本。

+0

我想這是最可能的黑客入侵。 – Phonon

+0

不幸的是,它似乎。 :( – John

+0

爲什麼可悲?間接是一個偉大的程序員的工具在很多情況下。 –

1

我知道這樣做的唯一方法是刪除不希望出現在輸出中的代碼。如果您只想顯示代碼而不顯示輸出,則可以在撥打publish時將evalCode屬性設置爲false

如果您確實希望代碼被評估,並且要發佈輸出,那麼它稍微複雜一些。您可以手動執行您不想發佈的腳本部分,然後發佈您關心的代碼(將其放入其自己的.m文件中)。發佈的代碼是否依賴於在省略代碼中初始化的變量應該沒有關係,因爲當您手動執行省略的代碼片段時,這些變量將添加到工作區中。

編輯:

既然你已經澄清你的問題指出,你有興趣出版的一些代碼,但所有的輸出,我認爲最好的辦法是隻修改「臨時」腳本(其中包含您希望發佈的部分代碼集),以包括您希望在輸出中出現的任何fprintf,disp等函數調用。

這有點不好意思,但就像我說的,我不知道有什麼辦法可以通過「註釋」或使用publish命令獲得這種細粒度。

希望有幫助!

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 
0

下面是一個示例腳本,您可以保存和publish,來說明一個解決辦法。你首先要設置Include code optionfalse,停靠所有評估代碼出現,但你仍然可以使用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! 

而這裏的出版輸出:

enter image description here

相關問題