thanks Pavel ! On Fri, Oct 16, 2009 at 1:24 PM, Pavel Ivanov <paiva...@gmail.com> wrote:
> > -- IA = [ 1 3 5 7 ] // IA(i) = Index of the first nonzero element > of > > row i in A > > Why 4th element if A has only 3 rows? > > > create temp view rowwiseC as > > select a1.rowid, sum(a2.ct) +1 as JA > > from rowwiseB a1, rowwiseB a2 > > where a2.rowid < a1.rowid > > group by a1.rowid > > ; > > --this is not quite right yet, the first entry and last entry of JA > vector > > is not here. > > You want it like this: > > select a1.rowid, ifnull(sum(a2.ct), 0) + 1 as IA > from rowwiseB a1 left outer join rowwiseB a2 on a2.rowid < a1.rowid > group by a1.rowid; > > > Pavel > > On Fri, Oct 16, 2009 at 2:09 PM, Michael Chen > <vancouver.mich...@gmail.com> wrote: > > --this is my first version for the purpose of storing sparse numerical > > matrix in sql > > --please let me know how to fix the bug at the end of the file, and how > to > > tune the performance > > --or any better reference, thanks! > > > > .explain -- return result in more readable > > format > > .echo on -- echo the sql stmnt > > > > --I plan to store my sparse matrix (3 x 4) in table like this: > > -- [ 1 2 0 0 ] > > -- [ 0 3 9 0 ] > > -- [ 0 1 4 0 ] > > -- > > -- is a three-by-four matrix with six nonzero elements, so > > -- > > -- A = [ 1 2 3 9 1 4 ] // List of non-zero matrix element in order > > -- IA = [ 1 3 5 7 ] // IA(i) = Index of the first nonzero element > of > > row i in A > > -- JA = [ 1 2 2 3 2 3 ] // JA(i) = Column position of the non zero > element > > A(i) > > -- > > -- Note: In this example, the row and line index begin by 1 and not 0. > > > > create table rowids( > > rows integer primary key -- there should be an easy way for a sequence > > 1..M? > > ); > > > > insert into rowids values (1); > > insert into rowids values (2); > > insert into rowids values (3); > > > > create table colids( > > cols integer primary key -- there should be an easy way for a sequence > > 1..N? > > ); > > > > insert into colids values (1); > > insert into colids values (2); > > insert into colids values (3); > > insert into colids values (4); > > > > > > create table matrix( > > rowid integer reference rowids, > > colid integer reference colids, > > value real non null > > ); > > > > insert into matrix values (1,1,1); > > insert into matrix values (1,2,2); > > insert into matrix values (2,2,3); > > insert into matrix values (2,3,9); > > insert into matrix values (3,2,1); > > insert into matrix values (3,3,4); > > insert into matrix values (2,4,0); --this entry is inserted on purpose > > > > > > select * from matrix; > > > > > > --A rowwise sparse matrix is then: > > > > create temp view rowwiseA as > > select value as A, colid as JA from matrix > > where value != 0 > > order by rowid, colid > > ; > > > > create temp view rowwiseB as > > select rowid, count(rowid) as ct > > from matrix > > where value != 0 > > group by rowid > > order by rowid > > ; > > > > create temp view rowwiseC as > > select a1.rowid, sum(a2.ct) +1 as JA > > from rowwiseB a1, rowwiseB a2 > > where a2.rowid < a1.rowid > > group by a1.rowid > > ; > > --this is not quite right yet, the first entry and last entry of JA > vector > > is not here. > > > > select * from rowwiseA; > > select * from rowwiseB; > > select * from rowwiseC; > > > > > > create temp view rowwiseB as > > select count(rowid) as ia from matrix > > where value != 0 > > group by rowid > > order by rowid > > ; > > > > > > > > --Best regards, > > --Michael Chen > > --Google Voice Phone.: 847-448-0647 > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users@sqlite.org > > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > -- Best regards, Michael Chen Google Voice Phone.: 847-448-0647 _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users