2012-01-05 25 views
6

Tôi muốn biết liệu có thể sử dụng một đối số dấu hai chấm ":" làm đối số hay không.chuyển một dấu hai chấm làm đối số của hàm trong MATLAB

Something như thế:

function y=func(x) 
    if x is a colon 
    do this 
    else 
    do that 
    end 

Cũng là nó có thể vượt qua các công việc quan trọng cuối như là đối số của một hàm, và cũng 1: cuối, 3: end-5, vv ... Tôi nghi ngờ nó có thể, nhưng tôi muốn chắc chắn.

Ngoài ra, tôi gặp lỗi lạ khi tôi chuyển "1: end" làm đối số của hàm, nó không tạo lỗi, nhưng bên trong hàm, không có đối số nào được gán (thậm chí không có đối số khác). Có ai biết chuyện gì xảy ra không?

+1

Tôi không chắc chắn bạn thực sự cần phải làm điều này. Nói thêm một chút về những gì bạn đang cố gắng đạt được. Bạn chắc chắn có thể vượt qua dấu hai chấm như một chuỗi 'if x ==": "...', ** kết thúc ** có thể được tìm thấy bằng cách sử dụng [size] (http://www.mathworks.co.uk/help/techdoc /ref/size.html) và được chuyển thành một số. – oleksii

+0

Có, chuyển nó như một chuỗi sẽ là một giải pháp tốt đẹp .... Ý tưởng tốt. – Oli

+3

Đó là những gì xảy ra bên trong các cuộc gọi đến toán tử quá tải '()': nếu bạn gọi 'x (:)', ':' đến trong subsref hoặc subsasgn như chuỗi '': ''. Vì vậy, nó có vẻ hợp lý. Sử dụng 'ischar (x) && isequal (x, ':')' thay vì '==' mặc dù. '==' sẽ ném lỗi về sự khác biệt về kích thước và tạo ra các kết quả sai: '==' thực hiện chuyển đổi kiểu ngầm, vì vậy '58 == ':'' là đúng. –

Trả lời

6

Bạn có thể ghi đè lên cho cả lớp học của riêng bạn:

classdef MyClass 

properties(Access=public) 
    data 
end 

methods 
    function out = end(A,k,n) 
     disp(A); 
     disp(k); 
     disp(n); 
     out = []; 
    end 

    function B = subsref(A,S)    
     disp(S); 
     B = []; 
    end 
end 
end 

Đối với chức năng, tôi không bao giờ nghe nói về một chức năng như vậy.

0

Không, không thể vượt qua dấu hai chấm làm đối số (nó không có ý nghĩa gì).

+1

Tôi có thể cho nó ý nghĩa mà tôi muốn, nếu có thể. Nó sẽ là một loại quá tải của "toán tử đối số". – Oli

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