我需要编写应该在Octave和MATLAB上运行良好的代码。问题是它需要做一些GUI的东西,MATLAB和Octave处理完全不同。
有没有办法可以检测我是否正在运行MATLAB或Octave,以便调用正确的函数?
答案 0 :(得分:39)
您可以使用以下测试来区分Octave和MATLAB:
isOctave = exist('OCTAVE_VERSION', 'builtin') ~= 0;
答案 1 :(得分:24)
官方octave.org网站上的wiki中还有一个hint。 他们提出以下建议:
编辑:并非所有版本的Matlab都支持“#”作为评论,因此我将示例更改为使用'%'代替。它适用于Matlab R2018(Linux)和Octave 4.2.2
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
答案 2 :(得分: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混合模式
在Octave:
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
另一种可能性是使用许可证功能。
答案 3 :(得分:4)
在Matlab中:
>> exist octave_config_info
ans =
0
在Octave:
octave:3> exist octave_config_info
ans = 5