[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: octave to matlab conversion
From: |
Tom Holroyd |
Subject: |
Re: octave to matlab conversion |
Date: |
Sat, 8 Oct 2005 11:35:39 -0400 (EDT) |
From a quick look at the SciPy level of Numerical Python, I would say
Matlab (Octave) is generally more concise syntactically. For example,
instead of
x=0:0.1:1;
as in Matlab, one seems to have to type
x = arange(0,1,0.1)
in SciPy.
More verbose, yes, and possibly more readable.
Personally, I might use arange(10) * .1 instead.
It also appears that the ':' operator is not generally available in
matrix/vector expressions,
Sure it is. It's called the slice operator.
x = arange(10) * .1
x[3:6]
array([ 0.3, 0.4, 0.5])
and matrix transposition with ' has no counterpart, etc.
What's wrong with transpose(x)?
In summary, one is really just working in Python with some
objects defined to bring linear-algebra sorts of things to a
higher level. There is no real math-syntax support on the
level of Matlab at all.
But that's exactly the point. Python is a very powerful, general
purpose, high-level language. You can add complex types such as
matrices. Base Python already has hashed arrays, real string
types, functional programming constructs, etc. You gain all the
math stuff, and you can continue to write highly complex, yet
still readable apps with fully operational classes and objects.
For matrices, I find it humorous that they are most easily entered
using Matlab syntax embedded in function arguments, such as
A = mat('[1 2 3; 4 5 6; 7 8 9]')
b = mat('[10 11 12]')
Normally you'd say something like
array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
The mat() function is just a crutch.
Then, to solve "A x = b", one says
x = linalg.solve(A,b)
instead of "x = A\b".
You can of course do "from linalg import solve" and then say
"x = solve(A, b)". Is that less readable than "x = A\b"?
I don't see being in a "real programming environment" as an
issue ...
I do.
I think the true measure of the quality of a language is how
intuitive, easy to learn, and expressive it is. Another great
language is Perl (Pathologically Eclectic Report Language).
Wow, I never expected to see those two sentences next to each
other. :-)
Matlab and Perl are the only languages I know in which sizable
programs have a good chance of working on the first try.
Being able to write programs that work on the first try is a
skill, which mainly involves being careful and knowing the target
language. "Working" doesn't just mean "no syntax errors" either.
Being able to read, maintain, and modify sizeable programs, on
the other hand, is greatly aided by a language with a clean
design that isn't cluttered with gratuitous syntax.
That's what makes a great language, in my opinion: minimized
software development time, and maximum readability.
Software maintenance can often take far more time, in the long
run. I value simplicity and ease of modification.
Dr. Tom Holroyd
"A man of genius makes no mistakes. His errors are volitional and
are the portals of discovery." -- James Joyce
-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.
Octave's home on the web: http://www.octave.org
How to fund new projects: http://www.octave.org/funding.html
Subscription information: http://www.octave.org/archive.html
-------------------------------------------------------------
- octave to matlab conversion, (continued)
- octave to matlab conversion, John W. Eaton, 2005/10/06
- Re: octave to matlab conversion, Paul Kienzle, 2005/10/06
- Re: octave to matlab conversion, Zdenek Hurak, 2005/10/07
- Re: octave to matlab conversion, Ben Barrowes, 2005/10/07
- Message not available
- Re: octave to matlab conversion, Tom Holroyd, 2005/10/07
- Re: octave to matlab conversion, Julius Smith, 2005/10/08
- Re: octave to matlab conversion,
Tom Holroyd <=
- Re: octave to matlab conversion, Julius Smith, 2005/10/08
- Re: octave to matlab conversion, Mike Miller, 2005/10/08
- Re: octave to matlab conversion, Andy Adler, 2005/10/09