[SciPy-User] convertin from octave/ matlab to scipy
eat
e.antero.tammi at gmail.com
Thu Feb 18 16:58:00 EST 2010
Hi,
I'll just have started to study and learn the python/ scipy.
I have written some inhouse (exploratory) data analysis
octave/ matlab toolboxes/ packages that I now like to convert
to python/ scipy.
I do have googled and skimmed bunch of documents, but still
I'll like to have experts opinion how to convert this (typical)
octave/ matlab indicies idiom to scipy:
"""
a simple minded conversion of idiom 1 from octave(or matlab)
<ocode>
function t1
m= 12; n= 123456; D= randn(m, n);
f= @(X) sqrt(sum(X.^2)); g= @(D) zm(f, D);
norm(f(D)- g(D))
function D= zm(f, D)
m= mean(D, 2); D= f(D- m(:, ones(1, size(D, 2))));
</ocode>
to scipy:
"""
from scipy import *
from numpy.linalg import norm #???
def zm(f, D):
a= vstack(range(D.shape[0]))* ([1]* D.shape[1]);
m= mean(D, 1); return f(D- m[a])
m= 12; n= 123456; D= random.randn(m, n);
f= lambda X: sqrt(sum(X**2, 0)); g= lambda D: zm(f, D)
print norm(f(D)- g(D))
I think my main question is:
do we have in scipy some 'under the hood' functionality, which
allows us not to repmat the constant vector (m)?
(Code like above is handled quite well in matlab where
(e(matlab)/ e(octave)<~ .1), compared to (e(scipy)/ e(octave)<~ .5),
where e(x) is some measure of the execution time in x.)
More information about the SciPy-User
mailing list