R (http://cran.r-project.org) might be an alternative, specially if
you do a lot of statistics and graphics. (R is probably the most
widely used language/system in statistical research).


R.

On 16 Nov 2006 13:09:03 -0800, sturlamolden <[EMAIL PROTECTED]> wrote:
> Boris wrote:
> > Hi, is there any alternative software for Matlab? Although Matlab is
> > powerful & popular among mathematical & engineering guys, it still
> > costs too much & not publicly open. So I wonder if there's similar
> > software/lang that is open & with comparable functionality, at least
> > for numerical aspect. Thanks!
>
> I have used Matlab for years, and has recently changed to Python. In
> addition one needs NumPy and Matplotlib, and perhaps SciPy. Other
> useful packages are PyGTK for GUI, PyGame for multimedia, PyOpenGL for
> 3D graphics, Mpi4Py for parallel computation, etc. You will find python
> packages for nearly any conceivable task. Unlike Matlab, Python is a
> general purpose programming language, and a distant cousin of Lisp. The
> Python language is fare more expressive and productive than Matlab, yet
> even more easy to use.
>
> The NumPy package is the core requirement for numerical work in Python.
> It is quite different form Matlab, but I think it is more powerful.
> Particularly, arrays are passed by reference (not by value), and
> indexing creates view matrices.
>
> To compare Matlab with NumPy we can e.g. use the D4 discrete wavelet
> transform. I have here coded it in Matlab and Python/NumPy using Tim
> Swelden's lifting scheme.
>
> First the Matlab version (D4_Transform.m):
>
> function x = D4_Transform(x)
>    % D4 Wavelet transform in Matlab
>    % (C) Sturla Molden
>    C1 =  1.7320508075688772;
>    C2 =  0.4330127018922193;
>    C3 = -0.066987298107780702;
>    C4 =  0.51763809020504137;
>    C5 =  1.9318516525781364;
>    s1 = zeros(ceil(size(x)/2));
>    d1 = zeros(ceil(size(x)/2));
>    d2 = zeros(ceil(size(x)/2));
>    odd = x(2:2:end);
>    even = x(1:2:end-1);
>    d1(:) = odd - C2*even;
>    s1(1) = even(1) + C2*d1(1) + C3*d1(end);
>    s1(2:end) = even(2:end) + C2*d1(2:end) + C3*d1(1:end-1);
>    d2(1) = d1(1) + s1(end);
>    d2(2:end) = d1(2:end) + s1(1:end-1);
>    x(1:2:end-1) = C4*s1;
>    x(2:2:end) = C5*d2;
>    if (length(x) >2)
>       x(1:2:end-1) = D4_Transform(x(1:2:end-1));
>    end
>
>
> Then the Python version (D4.py):
>
> import numpy
> import time
>
> def D4_Transform(x, s1=None, d1=None, d2=None):
>    """
>    D4 Wavelet transform in NumPy
>    (C) Sturla Molden
>    """
>    C1 = 1.7320508075688772
>    C2 = 0.4330127018922193
>    C3 = -0.066987298107780702
>    C4 = 0.51763809020504137
>    C5 = 1.9318516525781364
>    if d1 == None:
>       d1 = numpy.zeros(x.size/2)
>       s1 = numpy.zeros(x.size/2)
>       d2 = numpy.zeros(x.size/2)
>    odd = x[1::2]
>    even = x[:-1:2]
>    d1[:] = odd[:] - C1*even[:]
>    s1[0] = even[0] + C2*d1[0] + C3*d1[-1]
>    s1[1:] = even[1:] + C2*d1[1:] + C3*d1[:-1]
>    d2[0] = d1[0] + s1[-1]
>    d2[1:] = d1[1:] + s1[:-1]
>    even[:] = C4 * s1[:]
>    odd[:] = C5 * d2[:]
>    if x.size > 2:
>
> D4_Transform(even,s1[0:even.size/2],d1[0:even.size/2],d2[0:even.size/2])
>
> if __name__ == "__main__":
>    x = numpy.random.rand(2**23)
>    t0 = time.clock()
>    D4_Transform(x)
>    t = time.clock()
>    print "Elapsed time is %.6f seconds" % (t-t0)
>
>
> Now let's do benchmark on my laptop (1.73 GHz Pentium M, 0.99 GB RAM).
> I have stopped paying for Matlab maintenance (for reasons that will be
> obvious), so I only have R14 Service Pack 2 for comparison.
>
> First we try Matlab (R14 Service Pack 2):
>
> >> x = rand(2^23,1);
> >> tic; D4_Transform(x); toc
> Elapsed time is 27.145438 seconds.
>
>
> Then we Python 2.4.4 with NumPy 1.0:
>
> C:\develop\python\D4>python D4.py
> Elapsed time is 3.364887 seconds
>
> That is quite astonishing.
>
> If anyone wonders why I think Travis Oliphant and the NumPy team should
> be knighted, then this is the answer. The Mathworks' product only
> achieved 100% * 3/27 = 11% the speed of Python/NumPy, and is infinitely
> more expensive.
>
> Does anyone wonder why I am not paying for Matlab maintenance anymore?
>
> Sorry Mathworks, I have used your product for years, but you cannot
> compete with NumPy.
>
>
> Cheers,
> Sturla Molden
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>


-- 
Ramon Diaz-Uriarte
Statistical Computing Team
Structural Biology and Biocomputing Programme
Spanish National Cancer Centre (CNIO)
http://ligarto.org/rdiaz
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to