On 5 Sep, 05:12, Steven D'Aprano <st...@REMOVE-THIS-

cybersource.com.au> wrote:

> Is the difference because of mutability versus immutability, or because

> of C code in Numpy versus Matlab code? Are you comparing bananas and

> pears?
It consisted of something like this

import numpy

def D4_Transform(x, s1=None, d1=None, d2=None):

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[:-1] = even[:-1] + C2*d1[:-1] + C3*d1[1:]

s1[-1] = even[-1] + C2*d1[-1] + C3*d1[0]

d2[0] = d1[0] + s1[-1]

d2[1:] = d1[1:] + s1[:-1]

even[:] = C5 * s1[:]

odd[:] = C4 * d2[:]

if x.size > 2:

D4_Transform(even,s1[0:even.size/2],

d1[0:even.size/2],d2[0:even.size/2])

against Matlab:

function x = D4_Transform(x)

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 - C1*even;

s1(1:end-1) = even(1:end-1) + C2*d1(1:end-1) + C3*d1(2:end);

s1(end) = even(end) + C2*d1(end) + C3*d1(1);

d2(1) = d1(1) + s1(end);

d2(2:end) = d1(2:end) + s1(1:end-1);

x(1:2:end-1) = C5*s1;

x(2:2:end) = C4*d2;

if (length(x) > 2)

x(1:2:end-1) = D4_Transform(x(1:2:end-1));

end

I wasn't comparing bananas against pears. Mathworks informed me they

were using my code to investigate why Matlab was showing such slow-

downs. I am not sure what they found out, eventially. I have also

wondered if immutability vs. mutability was the reason, as NumPy

generates temporary arrays. But I have not found a better explanation

either. Anyhow, ~30 seconds for Matlab vs. ~3 seconds for Python is a

major difference. (After I did this test, Matlab has acquired a JIT

compiler which might change the timings. I haven't tested as I don't

have access to it.)

Sturla Molden