adding compare_fire_area.m
[wrf-fire-matlab.git] / util1_jan / ijsparse.m
blobe177e90c43206895c6eee5908e0ae408d77bfb7f
1 function a=ijsparse(d,x,r,v)\r
2 % convert matrix from ij to column sparse format\r
3 % in:\r
4 % d       vector [number of rows; number of columns; number of nonzeros]\r
5 % x       index\r
6 % r       row indices\r
7 % v       entry values\r
8 % out:\r
9 % a       matlab sparse matrix\r
10 \r
11 % row indices for column j are r(x(j):x(j+1)-1)\r
12 % values      for column j are v(x(j):x(j+1)-1)\r
14 % matrix sizes\r
15 m=d(1);\r
16 n=d(2);\r
17 s=d(3);\r
19 % check input\r
20 if ~isvector(x),error('x must be vector'),end\r
21 if ~isvector(r),error('r must be vector'),end\r
22 if ~isvector(v),error('v must be vector'),end\r
23 if length(x)~=n+1,error('bad length of x'),end\r
24 if length(r)~=s,error('bad length of r'),end\r
25 if length(v)~=s,error('bad length of v'),end\r
26 if any(x~=round(x)) | any(x<1) | any(x>s+1) | x(n+1)-1~=s,\r
27     error('bad values of x')\r
28 end\r
29 if any(r~=round(r)) | any(r<1) | any(r>m),\r
30     error('bad values of r')\r
31 end\r
33 % create column index\r
34 c=zeros(s,1);\r
35 for j=1:n\r
36     for k=x(j):x(j+1)-1\r
37         c(k)=j;\r
38     end\r
39 end\r
40 a=sparse(r,c,v,m,n);