2010-02-11 99 views
38

我需要編寫在Octave和MATLAB中運行的代碼。問題是它需要做一些圖形用戶界面的東西,MATLAB和八度處理完全不同。如何檢測我是否運行MATLAB或八度?

有沒有一種方法可以檢測出我是否運行MATLAB或Octave,以便調用正確的函數?

回答

4

在Matlab中:

>> exist octave_config_info 
ans = 
    0 

在八度:

octave:3> exist octave_config_info 
ans = 5 
+0

這是存在的(「octave_config_info」)在,如果是爲Octave語句在語法上的挑戰(比如我)...... – 2012-07-14 19:42:23

34

你可以使用下面的測試,從MATLAB區分八度:

isOctave = exist('OCTAVE_VERSION', 'builtin') ~= 0; 
+0

良好的通話,但它會在一個功能得到更好的封裝。 – 2010-02-12 09:35:45

+0

感謝@BenoîtLegat的編輯 – Amro 2014-05-12 17:00:51

5

我會使用,例如, ver命令,其產生:

在MATLAB:


MATLAB版本7.7.0.471(R2008b) 操作系統:Linux 2.6.31-20-通用#57 Ubuntu的SMP週一2月8日9時05分19秒UTC 2010 i686的 Java虛擬機版本:1.6.0_04的Java與Sun Microsystems公司的Java熱點(TM)客戶端虛擬機混合模式


在八度:


GNU倍頻版本3.0.5 GNU八音許可:GNU通用公共許可證 操作系統:Linux 2.6.31-20-通用#57 Ubuntu的SMP週一2月8日9時05分19秒UTC 2010 i686的


另一種可能性是使用許可證功能。

20

官方octave.org網站上還有一個hint的wiki。他們提出以下建議:

function foo 
    ## fancy code that works in both 
    if (is_octave) 
    ## use octave super_powers 
    else 
    ## do it matlab way 
    end 
    ## fancy code that works in both 
end 

## subfunction that checks if we are in octave 
function r = is_octave() 
    persistent x; 
    if (isempty (x)) 
    x = exist ('OCTAVE_VERSION', 'builtin'); 
    end 
    r = x; 
end 
相關問題