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