50

Octave と MATLAB で同じようにうまく動作するコードを書く必要があります。問題は、MATLAB と Octave がまったく異なる方法で処理するいくつかの GUI 処理を行う必要があることです。

正しい関数を呼び出すために、MATLAB または Octave を実行しているかどうかを検出できる方法はありますか?

4

4 に答える 4

49

次のテストを使用して、Octave と MATLAB を区別できます。

isOctave = exist('OCTAVE_VERSION', 'builtin') ~= 0;
于 2010-02-11T18:24:31.947 に答える
24

公式 octave.org Web サイトの wiki にもヒントがあります。彼らは次のことを提案しています。

編集: 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
于 2012-03-23T11:24:07.687 に答える
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 with Sun Microsystems Inc. Java HotSpot (TM) クライアント VM 混合モード


オクターブで:


GNU Octave バージョン 3.0.5 GNU Octave ライセンス: GNU General Public License オペレーティング システム: Linux 2.6.31-20-generic #57-Ubuntu SMP Mon Feb 8 09:05:19 UTC 2010 i686


もう 1 つの可能性は、ライセンス機能を使用することです。

于 2010-02-11T19:53:04.040 に答える
4

マトラブでは:

>> exist octave_config_info
ans =
     0

オクターブで:

octave:3> exist octave_config_info
ans =  5
于 2010-02-11T18:19:18.573 に答える