source: issm/trunk/src/m/classes/public/WriteData.m@ 4448

Last change on this file since 4448 was 4448, checked in by Mathieu Morlighem, 15 years ago

Fixed NANs matrices (md.upperelements if 2 layers)

File size: 1.3 KB
Line 
1function WriteData(fid,data,data_type,name)
2%WRITEDATA - ...
3%
4% Usage:
5% WriteData(fid,data,data_type)
6
7if issparse(data),
8 data=full(data);
9end
10
11%Ok! put the length of the name, and the "name" string first!
12fwrite(fid,length(name),'int');
13fwrite(fid,name,'char');
14
15if strcmpi(data_type,'String'),
16 %first write length of record
17 fwrite(fid,length(data)+4,'int'); %4 for int32
18 %now write string
19 fwrite(fid,length(data),'int');
20 fwrite(fid,data,'char');
21elseif strcmpi(data_type,'Mat'),
22 %Get size
23 s=size(data);
24 %if matrix = NaN, then do not write anything
25 if (s(1)==1 & s(2)==1 & isnan(data)),
26 s(1)=0; s(2)=0;
27 end
28
29 %first write length of record
30 fwrite(fid,4+4+8*s(1)*s(2),'int'); %2 integers (32 bits) + the double matrix
31
32 %now write matrix
33 fwrite(fid,s(1),'int');
34 fwrite(fid,s(2),'int');
35 if s(1)*s(2),
36 fwrite(fid,data','double'); %get to the "c" convention, hence the transpose
37 end
38elseif strcmpi(data_type,'Integer'),
39 %first write length of record
40 fwrite(fid,4,'int'); %1 integer
41 %now write integer
42 fwrite(fid,data,'int');
43elseif strcmpi(data_type,'Scalar'),
44 %first write length of record
45 fwrite(fid,8,'int'); %1 double
46 %now write double
47 fwrite(fid,data,'double');
48else
49 error('WriteData error message: data type not supported yet!');
50end
Note: See TracBrowser for help on using the repository browser.