2011-08-31 13 views
14

Sto scrivendo il codice MATLAB per pubblicarlo in seguito. Pubblicando, intendo lo strumento MATLAB publish integrato che consente al programmatore di creare un rapporto completo generato dal codice MATLAB. C'è un'opzione per includere il codice con questo rapporto, sezione per sezione, che precede i risultati di questo codice. C'è un modo per dire a MATLAB di includere parte di questo codice nel report ma non tutto? So che ci sono alcuni tag di codice di markup, ma non sono riuscito a trovare nulla su questo argomento.Esiste un modo per includere in modo selettivo il codice durante la pubblicazione in Matlab?

Edit: Giusto per chiarire, voglio tutti risultati da pubblicare, ma solo alcuni del codice. Quindi, la semplice rimozione di questo codice non è un'opzione.

Cheers! =)

risposta

2

Nascondere il codice che non si desidera che le persone vedano in uno script. Ad esempio, nell'esempio "sine_wave" dalla pagina di documentazione publish, ho aggiunto una sola riga:

junk 

Ecco il contenuto di spazzatura:

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

Ora eseguire lo script principale, e l'ha pubblicato il risultato ha "spazzatura" nell'elenco, ma il contenuto della spazzatura non è incluso, e si ottiene la bella versione di un'onda sinusoidale, anziché quella schifosa inclusa nel loro esempio.

+0

Immagino che questo sia il miglior trucco possibile. – Phonon

+0

Purtroppo, così sembra. :( – John

+0

perché purtroppo? Indirection è un ottimo strumento per programmatori in molte circostanze. –

1

L'unico modo per farlo è rimuovere il codice che non si desidera visualizzare nell'output. Se si desidera solo visualizzare il codice e non l'output, è sufficiente impostare la proprietà evalCode su false nella chiamata a publish.

Se si desidera che il codice venga valutato e anche l'output sia pubblicato, è leggermente più complicato. Puoi eseguire manualmente le parti dello script che non vuoi pubblicare, quindi pubblicare il codice che ti interessa (inserendolo nel suo file .m). Non dovrebbe importare se il codice pubblicato dipende da qualsiasi variabile inizializzata nel codice omesso, poiché quelle variabili sono state aggiunte al tuo spazio di lavoro quando hai eseguito manualmente i frammenti di codice omessi.

Edit:

Dal momento che hai chiarito la tua domanda di affermare che si è interessato a pubblicare una parte del codice, ma tutto l'output, penserei che la soluzione migliore è quello di modificare solo lo script "temporaneo" (che contiene l'insieme parziale di codice che si desidera pubblicare) per includere qualsiasi fprintf, disp, ecc. chiamate di funzione che si desidera siano visualizzate nell'output.

È un po 'hack-ish, ma come ho detto, non sono a conoscenza di alcun modo per ottenere quel tipo di granularità fine con "annotazioni" o utilizzando il comando publish.

Spero che questo aiuti!

0

posso cambiare l'espressione Matlab nelle opzioni di pubblicazione per

myFunction('PUBLISHING'); 

E le prime righe del codice funzione per verificare la presenza di tale ingresso, in modo da posso modificare il mio codice solo a fare certe cose durante la pubblicazione, di solito visualizzazione di figure ecc., ma non durante il normale funzionamento. O viceversa :)

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

Ecco uno script di esempio che è possibile salvare e publish che illustrerà una soluzione. Dovete prima impostare il Include code option a false, che ferma tutti codice valutato di apparire, ma è ancora possibile visualizzare il codice utilizzando un 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! 

Ed ecco l'output pubblicato:

enter image description here

Problemi correlati