1 |
function [flt,data,header] = read_flt_traj(fName) |
2 |
% Reads the float_trajectories files. |
3 |
% |
4 |
% returns a structured array with fields 'time','x','y','k','u','v','t','s','p' |
5 |
% |
6 |
% eg. |
7 |
% >> flts=read_flt_traj('float_trajectories'); |
8 |
% >> plot( flts(3).time, flts(3).x/1e3 ) |
9 |
% >> for k=1:126;plot(flts(k).x/1e3,flts(k).y/1e3);hold on;end;hold off |
10 |
|
11 |
imax=10; % record size |
12 |
ieee='b'; % IEEE big-endian format |
13 |
bytesPerRec=imax*8; % 8 bytes per real*8 |
14 |
|
15 |
fls=dir([fName '.*data']); |
16 |
|
17 |
data=zeros(imax,0); |
18 |
header=zeros(imax,0); |
19 |
|
20 |
% Read everything |
21 |
for k=1:size(fls,1) |
22 |
fid=fopen(fls(k).name,'r',ieee); |
23 |
nrecs=fls(k).bytes/bytesPerRec; |
24 |
ldata=fread(fid,[imax nrecs],'real*8'); |
25 |
fclose(fid); |
26 |
header=[header ldata(:,1)]; |
27 |
data=[data ldata(:,2:end)]; |
28 |
end |
29 |
|
30 |
flt=struct('numsteps',[],'time',[],'x',[],'y',[],'k',[]); |
31 |
|
32 |
% Sort it all out |
33 |
for k=1:max(max(data(1,:))); |
34 |
j=find( data(1,:)==k ); |
35 |
[t,jj]=sort( data(2,j) ); j=j(jj); |
36 |
flt(k).time=data(2,j); |
37 |
flt(k).x=data(3,j); |
38 |
flt(k).y=data(4,j); |
39 |
flt(k).k=data(5,j); |
40 |
flt(k).u=data(6,j); |
41 |
flt(k).v=data(7,j); |
42 |
flt(k).t=data(8,j); |
43 |
flt(k).s=data(9,j); |
44 |
flt(k).p=data(10,j); |
45 |
end |