2011-11-16 52 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

有沒有辦法在MATLAB中定義新的運算符,因爲像this one這樣的幾個線程暗示。但是,如果你想過載現有的運營商爲你自己,這裏的MATLAB的documentation page,但我相信你已經看到它。

+0

我以爲這可能是真的 - 只是希望有人有一個聰明的黑客可能實現它。 Oh well :( –

+1

沒有給出的鏈接現在正在工作.....需要更新嗎? – hyprfrcb

2

如何使用operator?它用於定義新的用戶定義的運算符符號或刪除它們。

operator(symb, f, T, prio)定義了T類型的新運營商符號symb,優先級爲prio。函數f使用new運算符來計算表達式。

鑑於運算符號「++」,也就是說,與評價函數f,以下表達式是由解析器建立,這取決於操作者的類型:

前綴:輸入++ X導致f(x)。

Postfix:在f(x)中輸入x ++結果。

Binary:輸入x ++ y ++ z導致f(f(x,y),z)。

Nary:輸入x ++ y ++ z結果爲f(x,y,z))。

在上面鏈接的matlab文檔中可以看到更多信息。

+0

+1這個很好的解決方案。可惜它的唯一可用的最新Matlab版本... – Shai

+2

這將是完美的,如果運營商是核心MATLAB的一部分,但它是符號工具箱的一部分。 –