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?
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
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
Đó 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. –