help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Octave/Matlab compatibility


From: John W. Eaton
Subject: Re: Octave/Matlab compatibility
Date: Thu, 20 Nov 1997 13:51:15 -0600

On 20-Nov-1997, Richard J. Shaw <address@hidden> wrote:

| Under Octave the behaviour is as follows :-
| 
| octave:1> fred = [[], "hello"]
| fred =
| 
|   104  101  108  108  111
| 
| whereas under Matlab, fred becomes the string "hello".
| 
| It should be possible to fix this problem (on a one-off basis) by
| replacing use of [] with '' :-
| 
| octave:2> fred = ['', "hello"]
| fred = hello
| 
| which would be compatible with Matlab usage (single not double quotes!).

(I don't think it should matter to Octave whether you use single or
double quotes.)

I have known about this `problem' for quite some time.  I'll consider
trying to fix it now, even at the risk of adding another preference
variable.  In this case, I don't think another `mode' will hurt too
much, because it shouldn't be too hard to write code that will work
correctly no matter what the setting of the new variable is -- no one
should be writing new code for Octave that creates strings from a
combination of numbers and strings as in the expression above unless
they also use setstr() or some equivalent.

Currently, we have implicit_str_to_num_ok to handle things like

  [u,s,v] = svd ('foo')

in a way that is compatible with Matlab.

Back when Octave didn't support character matrices/string vectors, I
also used implicit_str_to_num_ok to decide whether

   [102, 111, 111, 'bar']

would result in an error or the vector [102, 111, 111, 98, 97, 114].
Now that Octave can handle character matrices/string vectors, I
suppose I could add implicit_num_to_str_ok to handle this case in a
Matlab-compatible way.  Setting the variable to 1 would cause the above
expression to return 'foobar', and for things like [[], "hello"] to
return "hello" (with or without a warning, depending on the value of
empty_list_elements_ok).  Is that a reasonable solution?  It will mean
that the above expression will not produce a numeric result, but I
think that's unlikely to break much (if any) existing code.

Comments?

Thanks,

jwe



reply via email to

[Prev in Thread] Current Thread [Next in Thread]