Distinguishing Octave from Matlab

Ben Abbott bpabbott at mac.com
Fri Feb 15 11:31:22 CST 2008


On Feb 15, 2008, at 12:04 PM, David Bateman wrote:

> Ben Abbott wrote:
>>
>> On Feb 15, 2008, at 11:31 AM, David Bateman wrote:
>>
>>> Ben Abbott wrote:
>>>>
>>>> On Feb 15, 2008, at 5:02 AM, David Bateman wrote:
>>>>
>>>>> Use Octave 3.0.0 and use the matlab syntax everywhere, in most
>>>>> cases it
>>>>> should then just work.. If there are any other differences that
>>>>> prevent
>>>>> it working then they should be reported as bugs. A function that  
>>>>> does
>>>>> what you want is
>>>>>
>>>>> function ret = isoctave ()
>>>>> persistent isoct
>>>>> if (isempty (isoct))
>>>>>   isoct = exist('OCTAVE_VERSION') ~= 0;
>>>>> end
>>>>> ret = isoct;
>>>>> end
>>>>>
>>>>> Regards
>>>>> David
>>>>
>>>> Might this be added to the core functions?
>>>>
>>>> Ben
>>>>
>>> How does that help you if we can't convince mathworks to do the  
>>> same?
>>>
>>> D.
>>
>> Good point <blushing>
>>
>> Perhaps an octave version of an existing Matlab function ("ver",
>> "version", "verLessThan", ?) could do the job?
>>
>>
>
> Under matlab R2007b I see
>
>>> a = ver('matlab')
>
> a =
>
>       Name: 'MATLAB'
>    Version: '7.5'
>    Release: '(R2007b)'
>       Date: '02-Aug-2007'
>
>>> a = ver('octave')
>
> a =
>
> 0x0 struct array with fields:
>    Name
>    Version
>    Release
>    Date
>
> The octave "ver" function doesn't take an argument. To get the
> functionality you want this way you could modify Octave's ver so  
> that it
> assumes the argument is 'octave' if it is missing and then something  
> like
>
> if (strcmpi (pack, "octave"))
>  ## Do what is already done, plus set ret if needed
> else
>  lst = pkg("list");
>  ret = [];
>  for i = 1 : length (lst)
>     if (strcmpi (pack, lst{i}.name))
>       ret = struct ("Name", lst{i}.name, "Version", lst{i}.version,
> "Release", [], "Date", lst{i}.date);
>       break;
>     endif
>  endfor
>  if (isempty (ret))
>     ## How do you create an empty structure?
>     ret = struct ("Name", [], "Version", [], "Release", [], "Date",  
> []);
>     ret(1) = [];
>   endif
> endif
>
> would get the type of behavior you want as long as someone doesn't
> create an "octave" toolbox in matlab or a "matlab" package in octave.
>
> D.

That's a good start.

I'm busy for the next several hours, but will look more closely at how  
Matlab's version works and take a shot at this later today.

Ben


More information about the Help-octave mailing list