2012-05-28 30 views
5

Tôi có một chức năng chụp ảnh dưới dạng đối số và tạo ra một nhãn và một số điểm. Thỉnh thoảng tôi muốn thử nghiệm nhanh chóng một mảng hình ảnh (ô), và cách thuận tiện nhất mà tôi biết để làm điều này là sử dụng arrayfun. Điều này làm việc tốt cho việc nhận các nhãn mà hàm của tôi tạo ra, nhưng tôi thực sự muốn đầu ra là một danh sách các ô [label score].Làm thế nào tôi có thể nắm bắt nhiều giá trị trả lại trong một cuộc gọi đến mảng MATLAB?

Tôi có thể viết một hàm bao quanh hàm của tôi để chụp cả hai giá trị và trả về dưới dạng ma trận ô, sau đó gọi hàm bao trong arrayfun, nhưng có vẻ như đây là một thành ngữ đủ thông dụng. với nhiều giá trị trả lại thuận tiện hơn. Lanhung? (Có lẽ một chức năng tiện tiêu chuẩn đã tồn tại mà có thể làm được điều này Sắp xếp giống như trái ngược với deal ...?)

+0

Ông có thể prov ide một số giả mã chứng minh chính xác hành vi bạn đang hy vọng? – tmpearce

Trả lời

9

Bạn có thể lấy đầu ra của bạn là hai ma trận bằng cách sử dụng built-in cú pháp:

[A, B, ...] = arrayfun(fun, S, ...); 

Ví dụ:

function [y,z]=foo(x) 
    y= x*x; 
    z = x + 10; 
end 

Và sau đó chạy các chức năng:

[A,B] = arrayfun(@foo, magic(5)) 
Các vấn đề liên quan