2011-08-31 22 views
14

Tôi đang viết mã MATLAB để xuất bản sau này. Bằng cách xuất bản, tôi có nghĩa là công cụ MATLAB publish được tích hợp sẵn cho phép lập trình viên tạo báo cáo đầy đủ được tạo từ mã MATLAB của họ. Có một tùy chọn để bao gồm mã với báo cáo này, từng phần, trước các kết quả của mã này. Có cách nào để nói với MATLAB để bao gồm một số mã này trong báo cáo nhưng không phải tất cả? Tôi biết có khá nhiều thẻ mã đánh dấu, nhưng tôi không thể tìm thấy bất cứ điều gì về chủ đề này.Có cách nào có chọn lọc bao gồm mã khi xuất bản trong Matlab không?

Edit: Chỉ cần làm rõ, tôi muốn tất cả kết quả được công bố, nhưng chỉ một số của mã này. Vì vậy, chỉ cần xóa mã này không phải là một tùy chọn.

Chúc mừng! =)

Trả lời

2

Ẩn mã của bạn mà bạn không muốn mọi người thấy trong tập lệnh. Ví dụ, trong ví dụ "sine_wave" trên trang tài liệu publish, tôi đã thêm một dòng duy nhất:

junk 

Dưới đây là nội dung của tin rác:

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

Bây giờ chạy kịch bản chính của bạn, và công bố kết quả có "rác" trong danh sách, nhưng nội dung của rác không được bao gồm, và bạn nhận được phiên bản tốt đẹp của một làn sóng sin, thay vì một trong những crappy bao gồm trong ví dụ của họ.

+0

Tôi đoán đây là hack gọn gàng nhất có thể. – Phonon

+0

Đáng buồn thay, nó xuất hiện. :( – John

+0

Tại sao đáng buồn? Indirection là một công cụ lập trình tuyệt vời trong nhiều trường hợp. –

1

Cách duy nhất tôi biết để làm điều này là xóa mã mà bạn không muốn xuất hiện trong đầu ra. Nếu bạn chỉ muốn hiển thị mã chứ không phải đầu ra, thì bạn chỉ có thể đặt thuộc tính evalCode thành false trong cuộc gọi đến publish.

Nếu bạn muốn mã được đánh giá, và đầu ra được xuất bản là tốt, thì nó chỉ phức tạp hơn một chút. Bạn có thể tự thực hiện các phần của tập lệnh mà bạn không muốn xuất bản, sau đó xuất bản mã mà bạn quan tâm (bằng cách đặt nó vào tệp riêng của nó là .m). Nó không quan trọng nếu mã được xuất bản phụ thuộc vào bất kỳ biến nào được khởi tạo trong mã bị bỏ qua, vì các biến đó được thêm vào vùng làm việc của bạn khi bạn thực thi thủ công các đoạn mã bị bỏ qua.

Edit:

Vì bạn đã làm rõ câu hỏi của bạn để nói rằng bạn đang quan tâm đến việc xuất bản một số mã, nhưng tất cả các đầu ra, tôi sẽ nghĩ rằng đặt cược tốt nhất của bạn là chỉ cần sửa đổi tập lệnh "tạm thời" (có chứa bộ mã một phần mà bạn muốn xuất bản) để bao gồm bất kỳ cuộc gọi chức năng nào mà bạn muốn xuất hiện trong đầu ra fprintf, disp, v.v.

Đó là một chút hack-ish, nhưng như tôi đã nói, tôi không biết bất kỳ cách nào để có được loại chi tiết tốt với "chú thích" hoặc sử dụng lệnh publish.

Hy vọng điều đó sẽ hữu ích!

0

tôi thay đổi biểu hiện Matlab trong các tùy chọn xuất bản để

myFunction('PUBLISHING'); 

Và những dòng đầu tiên của mã chức năng để kiểm tra đầu vào, vì vậy tôi có thể sửa đổi mã của tôi chỉ làm những việc nhất định khi xuất bản, thường hiển thị số liệu, v.v., nhưng không phải trong quá trình hoạt động bình thường. Hoặc ngược lại :)

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

Đây là một kịch bản mẫu mà bạn có thể lưu và publish sẽ minh họa một cách giải quyết khác. Trước tiên, bạn phải thiết lập các Include code option để false, mà dừng lại tất cả đang được đánh giá xuất hiện, nhưng bạn vẫn có thể hiển thị mã sử dụng một 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! 

Và đây là kết quả được công bố:

enter image description here

Các vấn đề liên quan