prints
[wrf-fire-matlab.git] / util1_jan / csparse.m
blob098afc234e7698c51a903b564fa03c0c62c5bd9d
1 function [d,x,r,v]=csparse(a)
2 % convert matrix from ij to column sparse format
3 % in:
4 % a       matlab sparse matrix
5 % out:
6 % d       vector [number of rows; number of columns; number of nonzeros]
7 % x       index
8 % r       row indices
9 % v       entry values
10
11 % row indices for column j are r(x(j):x(j+1)-1)
12 % values      for column j are v(x(j):x(j+1)-1)
14 [r,c,v]=find(a);
15 % make sure r c v are all columns
16 r=r(:);c=c(:);v=v(:);
17 [m,n]=size(a);
18 s=length(r);
19 d=[m;n;s];
20 [tmp,index]=sort(m*c+r);
21 c=c(index);
22 r=r(index);
23 v=v(index);
24 x=zeros(n+1,1);
25 x(1)=1;
26 oldcol=0;
27 for i=1:s
28     newcol=c(i);
29     if(newcol~=oldcol),
30         x(oldcol+1:newcol)=i;
31     end
32     oldcol=newcol;
33 end
34 x(oldcol+1:n+1)=s+1;