2012-01-05 7 views
6

콜론 ":"을 함수의 인수로 사용할 수 있는지 알고 싶습니다. 그런matlab에 함수의 인수로 콜론을 전달하십시오

예시 :

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

또한 함수의 인수로서 중요한 작업을 단부을 통과 할 수 있고, 또한 1 단부, 3 : 최종 5 등 ... 나는 그것이 가능하다고 의심하지만 확신하고 싶습니다.

또한 함수의 인수로 "1 : end"를 전달할 때 이상한 오류가 발생하지만 오류가 발생하지 않지만 함수 내부에는 다른 인수가 할당되지 않은 인수가 할당되지 않습니다. 어떤 일이 일어나는 지 누군가 아십니까?

+1

실제로이 작업을 수행해야하는지 잘 모르겠습니다. 무엇을 성취하려고하는지 조금 더 말해주세요. 당신은 확실히 콜론을 문자열''x == "로 넘길 수 있습니다 :"... ", ** end **는 [size] (http://www.mathworks.co.uk/help/techdoc)를 사용하여 찾을 수 있습니다. /ref/size.html) 그리고 숫자로 전달되었습니다. – oleksii

+0

예, 문자열로 전달하면 좋은 해결 방법이 될 것입니다. 좋은 생각입니다. – Oli

+3

그것은 과부하 연산자'()'에 대한 호출에서 일어납니다.'x (:)'를 호출하면':'는 subsref 또는 subsasgn에'': ''문자열로옵니다. 그래서 그것은 합리적으로 보인다. '=='대신'ischar (x) && isequal (x,': ')'를 사용하십시오. '=='는 크기의 차이에 오류를 던져 오 탐지 (false positives)를 일으키고,'=='는 함축적 인 타입 변환을하므로'58 == ':''는 참입니다. –

답변

6

당신은 당신의 자신의 클래스를 모두 대체 할 수 있습니다 :

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 

기능에 관해서는, 나는 그런 기능이 들어 본 적이.

0

아니요, 콜론을 인수로 전달할 수 없습니다 (의미가 없음).

+1

가능하다면 나는 그것이 원하는 감각을 줄 수 있었다. 그것은 "인자 연산자"를 오버로딩하는 것입니다. – Oli

관련 문제