2011-08-31 8 views
14

Daha sonra yayınlamak için MATLAB kodunu yazıyorum. Yayımlayarak, programcının MATLAB kodlarından üretilen tam bir rapor yapmasını sağlayan yerleşik MATLAB publish aracını kastediyorum. Kodu bu raporda, bu kodun sonuçlarından önce bölüm bölümlerine dahil etme seçeneği vardır. MATLAB'a bu kodun bazılarını rapora dahil etmesini söyleyebilmenin bir yolu var mı? Bildiğim kadarıyla birkaç işaretleme kodu etiketi olduğunu biliyorum, ancak bu konuda hiçbir şey bulamadım.Matlab'da yayınlarken kod dahil olmak üzere seçici bir yol var mı?

Düzenleme: Tıpkı tüm sonuçların açıklanmasını istiyoruz netleştirmek, ancak kod sadece bazı için. Yani bu kodu kaldırmak sadece bir seçenek değildir.

Şerefe! =)

cevap

2

Bir komut dosyasında insanların görmesini istemediğiniz kodunuzu gizleyin. İşte

junk 

önemsiz içerik verilmiştir::

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

Şimdi ana komut dosyasını çalıştırın ve yayınlanmış Örneğin, publish dokümantasyon sayfasından "sine_wave" örneğinde, ben tek bir satır eklendi Sonuçta listede "önemsiz" bulunur, ancak önemsiz içeriğin içeriği dahil edilmez ve örneklerinde bulunan kötü bir durum yerine sinüs dalgasının güzel halini alırsınız.

+0

Sanırım bu en temiz saldırıdır. – Phonon

+0

Ne yazık ki, öyle görünüyor. :( – John

+0

neden üzücü? Dolaylı bir programcı aracının çoğu durumda harika bir programcının aracıdır. –

1

Bunu yapmak için bildiğim tek şey, çıktıda görünmesini istemediğiniz kodu kaldırmaktır. Sadece kodu görüntülemek istiyorsanız ve çıkışı değil, o zaman publishpublish aramanıza false için evalCode özelliğini ayarlayabilirsiniz.

Kodun değerlendirilmesini ve çıktıların da yayınlanmasını istiyorsanız, biraz daha karmaşıktır. Komut dosyasının yayınlamak istemediğiniz bölümlerini el ile yürütebilir, ardından ilgilendiğiniz kodu yayınlayabilirsiniz (kendi .m dosyasına koyarak). Yayımlanan kod, atlanan kod parçalarını manuel olarak çalıştırdığınızda çalışma alanınıza eklendiğinden, yayınlanan kodun atlanan kodda başlatılan değişkenlere bağlı olup olmaması önemli değildir.

Düzenleme:

Eğer kod bazı yayın ilgilendiğinizi belirtmek sorunuzu açıklık ettiğinizden dolayı

ancak çıkış tüm, en iyi bahis sadece değiştirmektir düşünürdüm "geçici" komut dosyası (yayınlamak istediğiniz kısmi kod kümesini içeren), herhangi bir fprintf, disp, vb. dahil etmek için çıktıda görünmesini istediğiniz işlev çağrıları.

Bu biraz hack-ish, ama dediğim gibi, "ek açıklamalar" veya publish komutunu kullanarak bu tür bir ince taneciklik elde etmenin herhangi bir yolunun farkında değilim.

Bu yardımcı olur umarım!

0

Ben

myFunction('PUBLISHING'); 

yayınlama seçeneklerinde Matlab ifadesini değiştirmek Ve fonksiyon kodunun ilk satırları bu giriş için kontrol etmek, bu yüzden yayınlarken sadece genellikle, belli şeyleri yapmak benim kodunda değişiklik yapabilirsiniz rakamları göstermek vb.ama normal çalışma sırasında değil. Ya da tam tersi :)

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

İşte bir geçici çözümü gösterilecektir örnek Kaydedebileceğiniz senaryo ve publish bu. Önce ayarlamak zorunda Include code option görünmesini tüm değerlendirdi kod durur, ama yine de bir syntax highlighted code sample kullanarak kodunu görüntüleyebilirsiniz false için:

%% 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! 

Ve burada yayınlanan çıktı verilmiştir:

enter image description here

İlgili konular