Sat 11 Jun 2011 04:18:53 AM UTC, original submission:
I have just ported 50 000 lines of Matlab code to be compabile with Octave. This is a list of all of the issues I have encountered. I have also encountered minor problems with the Octave language itself which I will post in a separate bug.
Congratulation on this project. It took me one week to convert all my code but it did run in the end.
A. Delorme
1) Dimention missing
P = rand(2,2);
Pori = mean(P, 3);
crashes if P is only 2 dim (works fine under Matlab)
2) parsing of &&
Matlab treats "&" as "&&" (ignore additional inputs) but Octave does not
3) int2str([]) crashes under Matlab
4) spline: requires at least 3 points udder Octave but not Matlab
5) legendre(2, [0.5 0.5; 0.5 0.5]); % works in Matlab but not in Octave
6) order of variable important for load command
TMPVAR = load(filename, '-mat'); does not work under Octave (but Matlab ok)
TMPVAR = load('-mat', filename); works
7) parsing of cell array (THIS IS A MAJOR ONE AS IT IS QUITE COMMON TO DECLARE MATRICES IN THIS WAY IN MATLAB)
{ 'test' { 'on' 'off' } } %does not work under octave
{ 'test' { 'on'; 'off' } } %does work
8) use of nargin
if (~nargin) return; end; % crashes under Octave
9) min requires numerical input in Octave but not in Matlab
min(char(1)); % crashes under Octave
10) ismember does not convert logical value to numerical values when necessary
ismember([0 1], [0 1]); % OK
ismember(2 < 3, [0 1]); % crashes (Matlab OK)
11) std() function cannot process empty entry
std([]) % crashes
12) tmp = strvcat; % return '' under Matlab and crashes under Octave
13) recycle() function missing. A dummy function could be made
14) fopen crashes when only one parameter is given
[IN, message] = fopen(filename); % works under Matlab
15) strread function is very poorly implemented and has multiple issues including returning different results (and incorrect ones as well) compared to Matlab
str = '[Common Infos]';
strread(str, '[%s', 'delimiter', ']')
ans =
'Common Infos'
(crashes under Octave)
[a,b,c] = strread('1,,2', '%s%s%s', 'delimiter', ',')
(does not return the same result under Octave; under Matlab, the second element of the cell array is empty (as it should be) whereas under Octave the third one is empty)
16) lower() on numbers return the identity in Matlab but not in Octave. That's an important lack of compatibility.
lower([90 100])
17) fread - 'bit24' not recognized under Octave
18) gridadata does not perform automatic transposition of arrays
[Xi,Yi,Zi] = griddata(rand(1,10),rand(1,10),rand(1,10)',rand(1,100)',rand(1,100));
% this works under Matlab but crashes nuder Octave
19) strmatch cannot process cell array under Octave
strmatch({ 'a' }, { 'a' 'b' 'c' }, 'exact')
% this works under Matlab but crashes nuder Octave
20) compatibility of the corrcoef function
corrcoef(rand(5,1), rand(5,1))
return 1x1 matrix Octave (2x2 Matlab with 1 in the diagonal)
corrcoef(rand(1,1,10), rand(1,1,10))
% crashes under Octave but work in Matlab
|