[SciPy-user] Problem with signal.correlate and sparse matrices

Andreas Mueller andrmuel@ee.ethz...
Thu Mar 19 08:05:07 CDT 2009


Hello!

I'm trying to use signal.correlate with sparse matrices, but I can't
understand the results I get. As soon as I use sparse matrices, the
results are weird, e.g. (my actual arrays are much larger of course):

In [1]: from scipy import signal,sparse,array,matrix
In [2]: a = array([[1,2,3],[4,5,6]])
In [3]: b = array([[1,1],[1,1]])
In [4]: print signal.correlate(a,b,mode='valid')
[[12 16]]

-> OK, thats what I would expect to get

In [5]: ma = matrix(a)
In [6]: mb = matrix(b)
In [7]: print signal.correlate(ma,mb,mode='valid')
[[12 16]]

-> OK, same result

In [8]: sa = sparse.lil_matrix(ma)
In [9]: sb = sparse.lil_matrix(mb)
In [10]: print signal.correlate(sa,sb,mode='valid')
[..]
ValueError: dimension mismatch

-> why? After some trying around, I noticed that it works with the first
matrix transposed:

In [11]: print signal.correlate(sa.T,sb,mode='valid')
  (0, 1)        5
  (0, 0)        5
  (1, 1)        7
  (1, 0)        7
  (2, 1)        9
  (2, 0)        9

But the result is weird. Obviously, 5+7=12 and 7+9=16, which is the result I
expect, but what am I doing (or thinking) wrong?

Is signal.correlate supported with sparse matrices?

I'm pretty much a SciPy newbie and haven't used matrices before, but there
seems to be no such thing as sparse arrays, so I guess I have no choice ..

Regards, Andreas

PS I tried this both on SciPy 0.6.0 (Ubuntu 8.10) and SciPy 0.7.0
(Gentoo), with the same results (expect I get a shape mismatch error
instead of a dimension mismatch with 0.6.0).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
Url : http://mail.scipy.org/pipermail/scipy-user/attachments/20090319/6ac3418d/attachment.bin 


More information about the SciPy-user mailing list