2011-11-16 2 views
8

MATLAB에서 추가 삽입 연산자를 정의하는 방법이 있습니까?MATLAB에서 추가 삽입 연산자 정의

특히, 저는 두 중위 사업자 -><->을 정의하고 싶습니다 (이 기호가 이상적 일 것이다, 그러나 그것은 하나의 문자가 필요한 경우가 될 수있다) 같은 방식으로 기능을 impliesiff를 호출, 그 & 전화 and+plus입니다.

function z = implies(x, y) 
    z = ~x|y; 

function z = iff(x, y) 
    z = x&y | ~x&~y; 

내가 필요한 경우 logical 과부하 드리겠습니다.

답변

5

this one과 같은 몇 가지 스레드가 제안하는 것처럼 MATLAB에서 새로운 연산자를 정의 할 방법이 없습니다. 그러나 과부하 기존 운영자가 클래스 인 경우, 여기에 MATLAB의 documentation page이 있지만, 이미 본 적이있을 것입니다.

+0

아마도 나는 그것이 사실 일 것이라고 생각했습니다. 누군가가 그것을 달성 할 수있는 영리한 해킹을하기를 바랬습니다. 오 잘 ~ : ( –

+1

주어진 링크 중 현재 아무 것도 작동하지 않습니다 ..... 업데이트가 필요합니까? – hyprfrcb

2

operator을 사용하면 어떨까요? 새로운 사용자 정의 연산자 심볼을 정의하거나 삭제하는 데 사용됩니다.

operator(symb, f, T, prio)은 우선 prioT 유형의 새 연산자 기호 symb을 정의합니다. f 함수는 new 연산자를 사용하여 표현식을 계산합니다.

접두사 : 입력 ++ X 기능 f, 다음과 같은 표현은, 파서에 의해 만들어진 연산자의 종류에 따라 있습니다를 평가하여, 말, "++"연산자 기호 감안할 때

결과는 f (x)이다.

접미사 : 입력 x ++ 결과는 f (x)입니다.

바이너리 : 입력 x ++ y ++ z 결과는 f (f (x, y), z)가됩니다.

Nary : 입력 x ++ y ++ z 결과는 f (x, y, z)입니다.

위의 링크에서 matlab의 설명서를 참조하십시오.

+0

+1 좋은 솔루션입니다. 최근 Matlab 버전에서만 사용 가능합니다 ... – Shai

+2

'연산자'가 맞으면 완벽 할 것입니다. 핵심 MATLAB의 일부이지만 Symbolic Toolbox의 일부입니다. –

관련 문제