1 | function WriteData(fid,data,data_type,name)
|
---|
2 | %WRITEDATA - ...
|
---|
3 | %
|
---|
4 | % Usage:
|
---|
5 | % WriteData(fid,data,data_type)
|
---|
6 |
|
---|
7 | if issparse(data),
|
---|
8 | data=full(data);
|
---|
9 | end
|
---|
10 |
|
---|
11 | %Ok! put the length of the name, and the "name" string first!
|
---|
12 | fwrite(fid,length(name),'int');
|
---|
13 | fwrite(fid,name,'char');
|
---|
14 |
|
---|
15 | if 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');
|
---|
21 | elseif strcmpi(data_type,'Mat'),
|
---|
22 | s=size(data);
|
---|
23 | if isnan(data),
|
---|
24 | s(1)=0;
|
---|
25 | s(2)=0;
|
---|
26 | end
|
---|
27 |
|
---|
28 | %first write length of record
|
---|
29 | fwrite(fid,4+4+8*s(1)*s(2),'int'); %2 integers (32 bits) + the double matrix
|
---|
30 |
|
---|
31 | %now write matrix
|
---|
32 | fwrite(fid,s(1),'int');
|
---|
33 | fwrite(fid,s(2),'int');
|
---|
34 | if s(1)*s(2),
|
---|
35 | fwrite(fid,data','double'); %get to the "c" convenction, hence the transpose
|
---|
36 | end
|
---|
37 | elseif strcmpi(data_type,'Integer'),
|
---|
38 | %first write length of record
|
---|
39 | fwrite(fid,4,'int'); %1 integer
|
---|
40 | %now write integer
|
---|
41 | fwrite(fid,data,'int');
|
---|
42 | elseif strcmpi(data_type,'Scalar'),
|
---|
43 | %first write length of record
|
---|
44 | fwrite(fid,8,'int'); %1 double
|
---|
45 | %now write double
|
---|
46 | fwrite(fid,data,'double');
|
---|
47 | else
|
---|
48 | error('WriteData error message: data type not supported yet!');
|
---|
49 | end
|
---|