Distinguishing Octave from Matlab

Ben Abbott bpabbott at mac.com
Fri Feb 15 22:33:59 CST 2008


On Feb 15, 2008, at 12:31 PM, Ben Abbott wrote:

>
> 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

Ok, I've attached a diff respecting mercurial version, as well as the  
complete m-file.

Distinguishing between Matlab and Octave may be done as,

	v = ver;
	if (strcmpi(v(1).Name,'matlab')
	  % Matlab code here
	elseif (strcmpi(v(1).Name,'octave')
	  % Octave code here
	end

Ben

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www.cae.wisc.edu/pipermail/help-octave/attachments/20080215/2773f2df/attachment-0002.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ver.diff
Type: application/octet-stream
Size: 3751 bytes
Desc: not available
Url : https://www.cae.wisc.edu/pipermail/help-octave/attachments/20080215/2773f2df/attachment-0002.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ver.m
Type: application/octet-stream
Size: 3605 bytes
Desc: not available
Url : https://www.cae.wisc.edu/pipermail/help-octave/attachments/20080215/2773f2df/attachment-0003.obj 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www.cae.wisc.edu/pipermail/help-octave/attachments/20080215/2773f2df/attachment-0003.html 


More information about the Help-octave mailing list