# How can a script tell if it's running on Octave or Matlab?

4 messages
Open this post in threaded view
|

## How can a script tell if it's running on Octave or Matlab?

 I want to make a script run on both Octave and Matlab.  Mostly this involves simply using the common subset of the language, e.g., only % comments, no short circuit logical operators, etc. I do want to make a plot or two, and I think that is best done with conditional code.  So the question is, what conditional can I use to choose? One way might be to use the version, and guess that major version 4 or 5 is Matlab, major version 2 is Octave.  Along the way, I found a difference in the default behavior of the str2num function.  Will this be stable? I ran the following on Matlab and  Octave:  v=version  vn=str2num(version)  running_under_octave=length(vn)==0  va=str2num(strrep(version,'.',' '))  running_under_octave=va(1)<4 Matlab (extraneous vertical space deleted): v = 5.1.0.421 vn = 5.1000         0    0.4210 running_under_octave = 0 va = 5     1     0   421 running_under_octave = 0 Octave (somewhat less extraneous vertical space deleted): v = 2.0.13 vn = [](0x0) running_under_octave = 1 va = 2   0  13 running_under_octave = 1 Comments?  Better ideas?  I'm all ears!          - Larry Doolittle   <[hidden email]>
Open this post in threaded view
|

## How can a script tell if it's running on Octave or Matlab?

 On 25-Sep-1998, [hidden email] <[hidden email]> wrote: | I want to make a script run on both Octave and Matlab.  Mostly | this involves simply using the common subset of the language, | e.g., only % comments, no short circuit logical operators, etc. | I do want to make a plot or two, and I think that is best done | with conditional code.  So the question is, what conditional can | I use to choose? You could look look for the built-in constant __OCTAVE_VERSION__, which seems unlikely to be set in a user's Matlab startup file. I think something like   is_octave = exist ('__OCTAVE_VERSION__') ~= 0; should do the trick. If you think someone might actually define a variable with this name in their Matlab startup file, you could try an operation that will only work in Octave.  Perhaps omething like     is_octave = eval ('isstr ("Matlab chokes on double quotes");', '0'); would work (until Matlab supports double quotes, anyway).  Maybe it's best to put the test in an M-file so that you can easily change it for all your scripts if needed. jwe