2013-01-07 47 views
5

Tôi có chức năng ngắn sử dụng textscan để đọc dữ liệu vào một biến.Ngắt kết quả chức năng

Vấn đề của tôi là tôi luôn có được điều này:

>>function('function.txt') 

    ans = 

     {10x1 cell} {10x1 cell} {10x1 cell} [10x1 double] 

Có cách nào để ngăn chặn điều này, ngoài việc bổ sung thêm một dấu hai chấm bán đến cuối dòng tôi sử dụng để gọi hàm? Tôi muốn có thể ngăn chặn nó mà không cần thêm dấu chấm phẩy. Tôi không muốn hiển thị bất cứ điều gì cả khi chạy chức năng này, tôi chỉ muốn tải tập tin của tôi.

+0

Rất tiếc, mis- Đọc câu hỏi. Đang xóa câu trả lời của tôi. –

+4

Đã đọc lại câu hỏi ngay bây giờ :-) Những gì bạn muốn có thể được thực hiện bằng cách sử dụng 'evalc' (tôi nghĩ). Xem [suppress-output] (http://stackoverflow.com/questions/9518146/suppress-output) và [suppressing-a-functions-command-window-output] (http://stackoverflow.com/questions/3029636/ suppressing-a-functions-command-window-output) cho gần trùng lặp của câu hỏi này (Tôi đang gắn cờ này như là một bản sao có thể). –

Trả lời

5

Bạn có thể chặn đầu ra bằng cách loại bỏ các đối số đầu ra (hoặc trả về giá trị) của hàm. HOẶC Hãy thử sử dụng Variable Number of Outputs, xem Support Variable Number of Outputs

function varargout = foo 
    nOutputs = nargout; 
    varargout = cell(1,nOutputs); 
    for k = 1:nOutputs; 
     varargout{k} = k; 
    end 
end 

Bạn gõ >>foo và nhận được gì. Bạn nhập >>a=foo và nhận >>a=1. Bạn nhập >>[a,b]=foo và nhận >>a=1 >>b=2.

Do đó, bạn có thể chặn đầu ra bằng cách KHÔNG cung cấp bất kỳ đối số đầu ra nào.

1

Bạn có thể thử sử dụng chức năng diary. Nó chuyển hướng tất cả đầu vào và đầu ra từ dấu nhắc lệnh đến một tệp bạn chọn. Nếu bạn chỉ bật tính năng này trong một chức năng cụ thể, không cần nhập vào. Tôi thừa nhận nó là một chút của một giải pháp vụng về như nhật ký on/off nhà nước là toàn cầu để MATLAB, nhưng nó có thể là ok trong trường hợp của bạn.

đọc thêm về nó ở đây: Diary matlab help

4

Cách đơn giản nhất để tránh việc sản lượng in ra là không gán tham số đầu ra đầu tiên nếu không có đối số đầu ra đã được yêu cầu:

function [aOut,b,c] = doSomething 

%# create a,b,c normally 
a = 1; 
b = 4; 
c = 3; 

%# only assign aOut if any output is requested 
if nargout > 0 
    aOut = a; 
end 
Các vấn đề liên quan