2011-08-31 5 views
14

Piszę kod MATLAB, aby opublikować go później. Publikując, mam na myśli wbudowane narzędzie MATLAB publish, które pozwala programiście zrobić pełny raport wygenerowany z ich kodu MATLAB. Istnieje możliwość dołączenia kodu do tego raportu, sekcja po sekcji, poprzedzająca wyniki tego kodu. Czy istnieje sposób na powiedzenie programowi MATLAB, aby w raporcie uwzględnił niektóre z tych kodów, ale nie wszystkie? Wiem, że istnieje sporo tagów kodu znaczników, ale nie udało mi się znaleźć niczego na ten temat.Czy istnieje sposób selektywnego włączania kodu podczas publikowania w programie Matlab?

Edit: Właśnie w celu wyjaśnienia, chcę wszystkie wyniki mają zostać opublikowane, ale tylko niektóre kodu. Po prostu usunięcie tego kodu nie jest opcją.

Pozdrawiam! =)

Odpowiedz

2

Ukryj swój kod, którego nie chcesz, aby ludzie widzieli w skrypcie. Na przykład, w „sine_wave” przykład ze strony dokumentacji publish, dodałem jedną linię:

junk 

Oto treść śmieci:

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

Teraz uruchomić główny scenariusz i opublikowanej wynik zawiera "śmieć" w wykazie, ale zawartość śmieci nie jest uwzględniona, a otrzymasz ładną wersję fali sinusoidalnej, zamiast zgniłej, która znajduje się w ich przykładzie.

+0

Sądzę, że to najmilszy z możliwych hackerów. – Phonon

+0

Niestety, tak się wydaje. :( – John

+0

dlaczego smutno? Indirection jest doskonałym narzędziem programisty w wielu okolicznościach –

1

Jedyny sposób, w jaki to zrobię, to usunięcie kodu, którego nie chcesz wyświetlać na wyjściu. Jeśli chcesz wyświetlić kod, a nie dane wyjściowe, możesz ustawić właściwość evalCode na false w swoim połączeniu na publish.

Jeśli chcesz, aby kod był oceniany, a wyniki mają być publikowane, to jest to nieco bardziej skomplikowane. Możesz ręcznie wykonać części skryptu, których nie chcesz publikować, a następnie opublikować odpowiedni kod (umieszczając go w swoim własnym pliku .m). Nie powinno mieć znaczenia, czy opublikowany kod zależy od zmiennych zainicjowanych w pominiętym kodzie, ponieważ zmienne te zostały dodane do obszaru roboczego po ręcznym wykonaniu pominiętych fragmentów kodu.

Edit:

Ponieważ pan wyjaśnić swoje pytanie stwierdzić, że jesteś zainteresowany publikacją niektóre kodu, ale wszystkie wyjścia, to myślę, że najlepiej jest po prostu zmodyfikować skrypt "tymczasowy" (który zawiera częściowy zestaw kodu, który chcesz opublikować), aby zawrzeć wszystkie wywołania funkcji, które chcesz mieć na wyjściu.

To trochę hack-owski, ale jak już powiedziałem, nie jestem świadomy żadnego sposobu na uzyskanie tego rodzaju drobnej ziarnistości za pomocą "adnotacji" lub użycia polecenia publish.

Nadzieję, że pomaga!

0

zmienić ekspresję Matlab w opcjach wydawniczych do

myFunction('PUBLISHING'); 

I pierwsze linie kodu funkcji w celu sprawdzenia tego wejścia, więc mogę zmodyfikować moje kod, aby tylko zrobić pewne rzeczy podczas publikowania, zwykle wyświetlanie figurek itp, ale nie podczas normalnej pracy. Albo odwrotnie :)

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

Oto przykładowy skrypt, który można zapisać i publish które ilustrują jeden obejścia. Najpierw trzeba ustawić Include code option do false, który zatrzymuje wszystkie oceniany kod pojawianiu się, ale nadal można wyświetlać kod używając 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! 

i tu jest opublikowany wyjściowa:

enter image description here

Powiązane problemy