【问题标题】:Ignore certain lines in Octave (but keep them for Matlab) [duplicate]忽略 Octave 中的某些行(但为 Matlab 保留它们)[重复]
【发布时间】:2012-12-20 21:02:47
【问题描述】:

可能重复:
How do I detect if I’m running MATLAB or Octave?

我的代码是使用 MATLAB 设计的,我仍然使用它。但是,如果我尝试使用 Octave 运行它的某些部分,则会出现错误。例如,MATLAB 代码使用 pause on,而 Octave 没有。

有没有办法检查哪个编程环境正在使用该代码?例如,

if  invoking_env == 'Matlab'
    % do this
else 
    % ok, so do this
end

我可以使用getenv('COMPUTERNAME'),但在这种情况下,计算机名称是相同的!谢谢。

【问题讨论】:

    标签: matlab octave environment getenv


    【解决方案1】:

    MATLABOctave都有版本功能。它们返回不同的值,并且 MATLAB 的版本有一些参数,这些参数在 Octave 中是不存在的。希望对您有所帮助。

    【讨论】:

    • 谢谢。我继续使用A=ver; isequal (A(1,2).Name, 'MATLAB')
    • 更好地使用strcmpi来比较字符串
    【解决方案2】:

    我认为最好的方法是有一个子函数来检查这个。下面的 sn-p 可能是对系统要求最低的那个。并且使用持久变量可以重复调用它而不会严重影响性能。

    function r = isoctave ()
      persistent x;
      if (isempty (x))
        x = exist ('OCTAVE_VERSION', 'builtin');
      end
      r = x;
    end
    

    然后您可以在条件块中轻松使用它。请参阅 Octave wiki 上的 that entry

    【讨论】:

      猜你喜欢
      • 2019-06-10
      • 2020-03-07
      • 2017-04-07
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 2016-02-27
      相关资源
      最近更新 更多