2010-02-11 105 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 
相关问题