1 |
cnh |
1.1 |
% f77write(filename,array,options) writes an array to filename |
2 |
|
|
% filename - is a string containing the name of the file to be read |
3 |
|
|
% array - is a array containing of arbitrary dimensions |
4 |
|
|
% options - (optional) specifies the data-type or the binary format |
5 |
|
|
% |
6 |
|
|
% Default data-type and binary format are 'real*8' and 'native'. |
7 |
|
|
% |
8 |
|
|
% Other data types can be one of: |
9 |
|
|
% 'real*4' - floating point, 32 bits. |
10 |
|
|
% 'real*8' - floating point, 64 bits. |
11 |
|
|
% |
12 |
|
|
% Other binary formats can be one of: |
13 |
|
|
% 'native' or 'n' - local machine format - the default |
14 |
|
|
% 'ieee-le' or 'l' - IEEE floating point with little-endian |
15 |
|
|
% byte ordering |
16 |
|
|
% 'ieee-be' or 'b' - IEEE floating point with big-endian |
17 |
|
|
% byte ordering |
18 |
|
|
% 'cray' or 'c' - Cray floating point with big-endian |
19 |
|
|
% byte ordering |
20 |
|
|
% 'ieee-le.l64' or 'a' - IEEE floating point with little-endian |
21 |
|
|
% byte ordering and 64 bit long data type |
22 |
|
|
% 'ieee-be.l64' or 's' - IEEE floating point with big-endian byte |
23 |
|
|
% ordering and 64 bit long data type. |
24 |
|
|
% |
25 |
|
|
% |
26 |
|
|
% eg. Write a real*8 dataset of size 160 x 10 x 16 |
27 |
|
|
% f77write('T.bin',A); |
28 |
|
|
% |
29 |
|
|
% eg. Write a real*4 dataset of size 120 x 45 in Little endian format |
30 |
|
|
% f77write('T.bin',B,'real*4','l'); |
31 |
|
|
% |
32 |
|
|
function [] = read3d(file,arr,varargin) |
33 |
|
|
|
34 |
|
|
% Defaults |
35 |
|
|
rtype='real*8'; % This is the default type of data |
36 |
|
|
ieee='n'; % This is the default binary representation |
37 |
|
|
|
38 |
|
|
% Check optional arguments |
39 |
|
|
args=char(varargin); |
40 |
|
|
while (size(args,1) > 0) |
41 |
|
|
if deblank(args(1,:)) == 'real*4' |
42 |
|
|
rtype='real*4'; |
43 |
|
|
elseif deblank(args(1,:)) == 'real*8' |
44 |
|
|
rtype='real*8'; |
45 |
|
|
elseif deblank(args(1,:)) == 'n' | deblank(args(1,:)) == 'native' |
46 |
|
|
ieee='n'; |
47 |
|
|
elseif deblank(args(1,:)) == 'l' | deblank(args(1,:)) == 'ieee-le' |
48 |
|
|
ieee='l'; |
49 |
|
|
elseif deblank(args(1,:)) == 'b' | deblank(args(1,:)) == 'ieee-be' |
50 |
|
|
ieee='b'; |
51 |
|
|
elseif deblank(args(1,:)) == 'c' | deblank(args(1,:)) == 'cray' |
52 |
|
|
ieee='c'; |
53 |
|
|
elseif deblank(args(1,:)) == 'a' | deblank(args(1,:)) == 'ieee-le.l64' |
54 |
|
|
ieee='a'; |
55 |
|
|
elseif deblank(args(1,:)) == 's' | deblank(args(1,:)) == 'ieee-be.l64' |
56 |
|
|
ieee='s'; |
57 |
|
|
else |
58 |
|
|
sprintf(['Optional argument ' args(1,:) ' is unknown']) |
59 |
|
|
return |
60 |
|
|
end |
61 |
|
|
args=args(2:end,:); |
62 |
|
|
end |
63 |
|
|
|
64 |
|
|
if rtype == 'real*4' |
65 |
|
|
wordsize=4; |
66 |
|
|
elseif rtype == 'real*8' |
67 |
|
|
wordsize=8; |
68 |
|
|
else |
69 |
|
|
sprintf('Somehow, rtype has an illegal value...!') |
70 |
|
|
return |
71 |
|
|
end |
72 |
|
|
fid=fopen(file,'w',ieee); |
73 |
|
|
% write the initial 4 bytes used in f77_unformatted |
74 |
|
|
fwrite(fid,prod(size(arr))*wordsize,'uint32'); |
75 |
|
|
% write the data |
76 |
|
|
fwrite(fid,arr,rtype); |
77 |
|
|
% write the last 4 bytes used in f77_unformatted |
78 |
|
|
fwrite(fid,prod(size(arr))*wordsize,'uint32'); |
79 |
|
|
% close the file |
80 |
|
|
st=fclose(fid); |