Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
function [error] = readTsgDataTsg( hMainFig, filename)
% Function to read the TSG data. Should be a NetCDF file
%
% Input
% -----
% hMainFig ............ Handle to the main user interface
% filename ........... Data filename
%
% Output
% ------
% error .............. 1: OK - -1 : an error occured
%
% The data are store using setappdata - Variable name : 'tsg_data'
%
%
% Caution : replace the fill-value with NaN
% $Id: readTsgDataTxt.m 297 2008-03-20 16:33:37Z ygouriou $
% Get the data from the application GUI
% -------------------------------------
tsg = getappdata( hMainFig, 'tsg_data');
% Display read file info on console
% ---------------------------------
fprintf('\nREAD_ASCII_FILE\n'); tic;
% Open the file
% -------------
fid = fopen( filename, 'r' );
% Check file
% -----------
if fid == -1
msg_error = ['TSG_GOSUD file_lecture : Open file error : ' filename];
warndlg( msg_error, 'ASCII error dialog');
sprintf('...cannot locate %s\n', filename);
error = -1;
return;
end
% Display more info about read file on console
% --------------------------------------------
fprintf('...reading %s : ', filename);
% Read the file
% -------------
c = textscan( fid, '%s', 1 );
while ~strcmp( char( c{1} ) , '%DATA' );
switch char( c{1} )
case '%HEADER'
nHeader = 0;
while ~strcmp( char( c{1} ) , '%DATA' );
c = textscan( fid, '%s', 1 );
nHeader = nHeader + 1;
header{ nHeader } = c;
end
otherwise
% Delete '%' in the parameter Name
% --------------------------------
Para = strtok(char( c{1} ), '%');
c = textscan( fid, '%s', 1);
tsg.(Para) = char( c{1} );
c = textscan( fid, '%s', 1 );
end
end
% Suppress the last header element. Should be <DATA>
% --------------------------------------------------
nHeader = nHeader - 1;
% Read the data in a cell
% -----------------------

jacques.grelet_ird.fr
committed
cellData = textscan( fid, '%f' );
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
% Convert the data to double
% --------------------------
nCol = nHeader;
mLine = length( cellData{:} )/nCol;
data = NaN * ones( mLine, nCol );
ind = 0;
for i = 1:mLine
for j = 1:nCol
ind = ind + 1;
data(i,j) = cellData{1}(ind);
end
end
clear cellData
% Every variable are put in the tsg structure
% --------------------------------------------
% Date (y m d h m s) in the first 6 elements in data
% --------------------------------------------------
tsg.DAYD = datenum(data(:,1), data(:,2),data(:,3),data(:,4),data(:,5),data(:,6));
% Loop over the header. Skip the 6 first elements
% -----------------------------------------------
for i = 7 : nHeader
% QC should be converted in int8
% ------------------------------
if ~isempty( strfind(char(header{i}{1}), '_QC'))
tsg.(char(header{i}{1})) = int8( data(:,i) );
else
tsg.(char(header{i}{1})) = data(:,i);
end
end
% populate tsg.file structure
% ---------------------------
[tsg.file.pathstr, tsg.file.name, tsg.file.ext, tsg.file.versn] = ...
fileparts(filename);
%tsg.file.name = filename;
tsg.file.type = 'ASCII';
% Keep somme information for the log file
% ---------------------------------------
tsg.report.tsgfile = filename;
% Save the data in the application GUI
% ------------------------------------
setappdata( hMainFig, 'tsg_data', tsg );
% Perform somme automatic tests
% -----------------------------
automaticQC( hMainFig );
% Close the file
% --------------
fclose( fid );
% Clear the Workspace
% -------------------
clear data
% Display time to read file on console
% ------------------------------------
t = toc; fprintf('...done (%6.2f sec).\n\n',t);
% Everything OK
% -------------
error = 1;
end