[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Static storage of huge sparce matrices
From: |
c. |
Subject: |
Re: Static storage of huge sparce matrices |
Date: |
Fri, 2 Nov 2012 20:56:58 +0100 |
On 2 Nov 2012, at 20:41, Joza wrote:
> Interesting stuff! Thanks! I shall take a good look at that stuff further.
>
> Besides that, is there a good way to implement the static structure I
> mentioned? Or would I be best just making the full matrix using toeplitz?
the matrix produced by toeplitz will not be saprse, it is actually saved in
exactly the same format you described.
> Actually, would Octave automatically recognize my matrix is sparse and store
> it that way!!??
no it does not recognize it automatically you have to define it as such,
the function "toeplitz" does define its output as sparse.
>> x = toeplitz(sparse([1 1], [1 2], [2, -1], 1, 1e3));
>> typeinfo (x)
ans = sparse matrix
another way to get the same sparse matrix is
>> x = spdiags (-ones(1000, 3), -1:1, 1000, 1000) + 3 * eye (1000);
>> typeinfo (x)
ans = sparse matrix
If you define the matrix using diag rather than spdiags you will get it as full
>> xfull = 2 * eye (1000) + diag (ones(999, 1), -1) + diag (ones(999, 1), 1);
>> typeinfo (xfull)
ans = matrix
the two matrices compute very different amount of memory:
>> whos x xfull
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
x 1000x1000 39980 double
xfull 1000x1000 8000000 double
> Is such storage done automatically?
yes. Octave stores sparse matrices as Compressed Sparse Column as is explained
in the links you got from previous replies.
c.