我需要编写在Octave和MATLAB中运行的代码。问题是它需要做一些图形用户界面的东西,MATLAB和八度处理完全不同。如何检测我是否运行MATLAB或八度?
有没有一种方法可以检测出我是否运行MATLAB或Octave,以便调用正确的函数?
我需要编写在Octave和MATLAB中运行的代码。问题是它需要做一些图形用户界面的东西,MATLAB和八度处理完全不同。如何检测我是否运行MATLAB或八度?
有没有一种方法可以检测出我是否运行MATLAB或Octave,以便调用正确的函数?
在Matlab中:
>> exist octave_config_info
ans =
0
在八度:
octave:3> exist octave_config_info
ans = 5
你可以使用下面的测试,从MATLAB区分八度:
isOctave = exist('OCTAVE_VERSION', 'builtin') ~= 0;
良好的通话,但它会在一个功能得到更好的封装。 – 2010-02-12 09:35:45
感谢@BenoîtLegat的编辑 – Amro 2014-05-12 17:00:51
我会使用,例如, 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的
另一种可能性是使用许可证功能。
官方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
这是存在的(“octave_config_info”)在,如果是为Octave语句在语法上的挑战(比如我)...... – 2012-07-14 19:42:23