annotate main/sparse/fem_test.m @ 0:6b33357c7561 octave-forge

Initial revision
author pkienzle
date Wed, 10 Oct 2001 19:54:49 +0000
parents
children 143f3827b789
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
1 % Sparse function test routing
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
2 % Copyright (C) 1998 Andy Adler.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
3 % This code has no warranty whatsoever.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
4 % You may do what you like with this code as long as you leave this copyright
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
5 % in place. If you modify the code then include a notice saying so.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
6 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
7 % This code comes from my thesis work. Its a finite element model
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
8 % of the voltage distribution in a cylindrical body with current applied
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
9 % at the boundary. The complete model was published in
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
10 % "Electrical Impedance Tomography: Regularized Imaging and Contrast
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
11 % Detection", A.Adler, R.Guardo, IEEE Trans Med Img, 15(2),170-179
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
12 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
13 % $Id$
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
14
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
15 % octave commands, but OK in matlab too
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
16 do_fortran_indexing= 1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
17 empty_list_elements_ok = 1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
18
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
19 TESTTIMES= 5;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
20 dotheplot=0;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
21
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
22 %increase N by multiples of 4 to do a larger test
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
23 N= 8;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
24 %increase niveaux to do a larger test
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
25 niveaux= [-.2:.1:.2]' ;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
26
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
27 pos_i= [0 1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
28 elec=16;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
29 ELEM=[];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
30 NODE= [0;0];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
31 int=1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
32 for k=1:N
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
33 phi= (0:4*k-1)*pi/2/k;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
34 NODE= [NODE k/N*[sin(phi);cos(phi)]];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
35
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
36 ext= 2*(k*k-k+1);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
37 idxe=[0:k-1; 1:k];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
38 idxi=[0:k-1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
39 elem= [ ext+idxe ext+2*k+[-idxe idxe] ext+rem(4*k-idxe,4*k) ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
40 ext+idxe ext+2*k+[-idxe idxe] ext+rem(4*k-idxe,4*k);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
41 int+idxi int+2*(k-1)+[-idxi idxi] ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
42 int+rem(4*(k-1)-idxi, 4*(k-1)+(k==1) ) ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
43 ext+4*k+1+idxi ext+6*k+[1-idxi 3+idxi] ext+8*k+3-idxi ];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
44 for j=1:k
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
45 r1= rem(j+k-1,3)+1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
46 r2= rem(j+k,3)+1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
47 r3= 6-r1-r2;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
48 elem([r1 r2 r3],j+k*(0:7) )= elem(:,j+k*(0:7));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
49 end
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
50
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
51 ELEM=[ ELEM elem(:,1:(8-4*(k==N))*k) ];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
52 int=ext;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
53 end %for k=1:N
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
54
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
55 MES= ext+N*4/elec*([0:elec-1]);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
56
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
57 j=pos_i(1); k=floor(j);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
58 MES=[MES( 1+rem( (0:elec-1)+k,elec) )+floor(MES(1:2)*[-1;1]*(j-k));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
59 MES( 1+rem( (1:elec)+k,elec) )+floor(MES(1:2)*[-1;1]*(j-k)) ];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
60
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
61 cour= [ MES(1,:)' MES(1,1+rem(elec+(0:elec-1)+pos_i*[-1;1],elec) )';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
62 ones(elec,1)*[-1 1] ];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
63
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
64 QQCirC= [zeros(ext-1,1);cos(2*pi*(0:4/N:elec-.01)'/elec)];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
65 QQCirC= 2*QQCirC/sum(abs(QQCirC));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
66 if exist('niveaux')
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
67 QQCirC= QQCirC*([-1 1]*niveaux([1 length(niveaux)]))/length(niveaux);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
68 end
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
69 volt= [1; zeros(elec,1)];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
70
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
71 ELS=rem(rem(0:elec^2-1,elec)-floor((0:elec^2-1)/elec)+elec,elec)';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
72 ELS=~any(rem( elec+[-1 0 [-1 0]+pos_i*[-1;1] ] ,elec)' ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
73 *ones(1,elec^2)==ones(4,1)*ELS')';
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
74
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
75
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
76 d= size(ELEM,1); %dimentions+1
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
77 n= size(NODE,2); %NODEs
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
78 e= size(ELEM,2); %ELEMents
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
79
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
80 if dotheplot
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
81 % octave commands, we use eval so it doesn't fail in Matlab
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
82 eval('gset nokey;','1');
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
83 fleche= [1.02 0;1.06 .05;1.06 .02;1.1 .02; ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
84 1.1 -.02; 1.06 -.02;1.06 -.05;1.02 0];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
85 jjj= .95;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
86 if ~isempty(MES)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
87 xy=NODE(:,MES(1,:));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
88 end
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
89 xxx=zeros(3,e); xxx(:)=NODE(1,ELEM(:));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
90 xxx= jjj*xxx+ (1-jjj)*ones(3,1)*mean(xxx);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
91 yyy=zeros(3,e); yyy(:)=NODE(2,ELEM(:));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
92 yyy= jjj*yyy+ (1-jjj)*ones(3,1)*mean(yyy);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
93 plot([xxx;xxx(1,:)],[yyy;yyy(1,:)],'b', ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
94 fleche*xy,fleche*[0 1;-1 0]*xy,'r');
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
95
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
96 axis([ [-1.1 1.1]*max(NODE(1,:)) [-1.1 1.1]*max(NODE(2,:)) ])
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
97 end % plot mesh
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
98 if exist('niveaux')
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
99 node=NODE;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
100 elem= [ELEM([1 1 2 3 ],:) ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
101 ELEM([2 1 2 3],:) ELEM([3 2 1 3],:)];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
102 NODE= [node; niveaux(1)*ones(1,n) ];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
103 ELEM= [];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
104
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
105 for k=2:length(niveaux);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
106 NODE=[NODE ,[node; niveaux(k)*ones(1,n)] ];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
107 ELEM= [ELEM,(elem + ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
108 [[(k-1)*n*ones(1,e);(k-2)*n*ones(3,e)] ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
109 [(k-1)*n*ones(2,e);(k-2)*n*ones(2,e)] ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
110 [(k-1)*n*ones(3,e);(k-2)*n*ones(1,e)]] ) ];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
111 end %for k
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
112
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
113 MES= MES + floor(length(niveaux)/2)*n;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
114 QQCirC= QQCirC*ones(1, length(niveaux)); QQCirC= QQCirC(:);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
115 cour(1:elec,:)= cour(1:elec,:)+ floor(length(niveaux)/2)*n;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
116
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
117 end %if exist('niveaux')
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
118
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
119 d= size(ELEM,1); %dimentions+1
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
120 n= size(NODE,2); %NODEs
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
121 e= size(ELEM,2); %ELEMents
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
122 p= size(volt,1)-1;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
123
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
124 CC= sparse((1:d*e),ELEM(:),ones(d*e,1), d*e, n);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
125
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
126 sa= zeros(d*e,d);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
127 for j=1:e
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
128 a= inv([ ones(d,1) NODE( :, ELEM(:,j) )' ]);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
129 sa(d*(j-1)+1:d*j,:)= a(2:d,:)'*a(2:d,:)/(d-1)/(d-2)/abs(det(a));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
130 end %for j=1:ELEMs
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
131 ridx= ones(d,1)*(1:e)*d;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
132 ridx= ridx(:)*ones(1,d) + ones(d*e,1)*[-d+1:0];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
133 cidx= 1:d*e;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
134 SS= sparse( cidx'*ones(1,d), ridx, sa, d*e, d*e);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
135
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
136 QQ=sparse(cour(1:p,:),(1:p)'*ones(1,size(cour,2)), ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
137 cour(p+1:2*p,:),n,p );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
138
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
139
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
140 if 0 %OCTAVE
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
141 # this code uses the first syntax for
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
142 # octave sparse
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
143 CCt= spfun(CC,'trans');
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
144 CCtSS= spfun(CCt,'mul',SS);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
145 ZZ= spfun(CCtSS,'mul',CC);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
146 ZZs= spfun(ZZ,'extract',2,n,2,n);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
147 QF= full(spfun(QQ,'extract',2,n,1,p));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
148 fprintf('Solving Finite Element sparse eqn, n=%d nnz=%d density=%f\n', ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
149 n, nnz(ZZ), nnz(ZZ)/n^2 );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
150 t0= clock;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
151 for i=1:TESTTIMES
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
152 VV= spfun(ZZs,'solve',QF,2);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
153 end
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
154 tasktime= etime(clock,t0);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
155 else
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
156 ZZ= CC'*SS*CC;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
157 ZZs= ZZ(2:n,2:n);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
158 QF= full(QQ(2:n,:));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
159 % QF= (QQ(2:n,:));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
160 fprintf('Solving Finite Element sparse eqn, n=%d nnz=%d density=%f\n', ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
161 n, nnz(ZZ), nnz(ZZ)/n^2 );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
162 t0= clock;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
163 for i=1:TESTTIMES
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
164 VV= ZZs\QF;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
165 end
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
166 tasktime= etime(clock,t0);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
167 end
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
168
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
169
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
170 checkval= full( VV(MES(1,:),1)-VV(MES(2,:),1) );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
171 goldvalue= [ -0.918243; 0.555779; 0.148452; 0.078826;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
172 0.052132; 0.040116; 0.034141; 0.031872;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
173 0.031279; 0.033594; 0.039429; 0.052189;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
174 0.078377; 0.149426; 0.596195; -1.003565];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
175
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
176 rdif= sqrt(mean((checkval-goldvalue).^2)) / sqrt(mean(checkval.^2));
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
177 if rdif > 1e-5
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
178 fprintf('Sparse FEM solution fails');
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
179 end
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
180 fprintf('Time per iteration= %f s\n', tasktime/ TESTTIMES);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
181 fprintf('Your machine is %f faster than a 486dx100!\n', ...
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
182 4.45*TESTTIMES/tasktime );
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
183
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
184 #ZZt=ZZ'; tt=time; for i = 1:100; x= ZZ*ZZt; end ; (time-tt)/100
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
185 % ans = 0.039929 % 0.52245
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
186
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
187 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
188 % Results:
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
189 % 11 Nov 00: Your machine is 16.501822 faster than a 486dx100!
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
190 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
191 % $Log$
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
192 % Revision 1.1 2001/10/10 19:54:49 pkienzle
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
193 % Initial revision
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
194 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
195 % Revision 1.4 2001/04/04 02:13:46 aadler
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
196 % complete complex_sparse, templates, fix memory leaks
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
197 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
198 % Revision 1.3 2001/03/30 04:36:30 aadler
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
199 % added multiply, solve, and sparse creation
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
200 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
201 % Revision 1.2 2000/12/18 03:31:16 aadler
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
202 % Split code to multiple files
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
203 % added sparse inverse
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
204 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
205 % Revision 1.1 2000/11/11 02:47:11 aadler
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
206 % DLD functions for sparse support in octave
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
207 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
208 %