如何检测运行MATLAB或Octave?

我需要编写在Octave和MATLAB上运行的代码。 问题是,它需要做一些GUI的东西,MATLAB和八度处理完全不同。

有没有一种方法,我可以检测,如果我正在运行MATLAB或八度,为了调用正确的function?

您可以使用以下testing来区分八度与MATLAB:

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

官方的octave.org网站上也有一个提示 。 他们提出以下build议:

 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 

在Matlab中:

 >> exist octave_config_info ans = 0 

在八度:

 octave:3> exist octave_config_info ans = 5 

我会使用,例如,ver命令,这会产生:

在MATLAB中:


MATLAB版本7.7.0.471(R2008b)操作系统:Linux 2.6.31-20-generic#57-Ubuntu SMP Mon Feb 8 09:05:19 UTC 2010 i686 Java VM版本:Java 1.6.0_04与Sun Microsystems Inc. Java HotSpot (TM)客户端VM混合模式


在八度:


GNU Octave版本3.0.5 GNU Octave许可证:GNU通用公共许可证操作系统:Linux 2.6.31-20-generic#57-Ubuntu SMP Mon Feb 8 09:05:19 UTC 2010 i686


另一种可能性是使用许可证function。