Mercurial > hg > camir-aes2014
diff toolboxes/FullBNT-1.0.7/netlab3.3/datread.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/FullBNT-1.0.7/netlab3.3/datread.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,99 @@ +function [x, t, nin, nout, ndata] = datread(filename) +%DATREAD Read data from an ascii file. +% +% Description +% +% [X, T, NIN, NOUT, NDATA] = DATREAD(FILENAME) reads from the file +% FILENAME and returns a matrix X of input vectors, a matrix T of +% target vectors, and integers NIN, NOUT and NDATA specifying the +% number of inputs, the number of outputs and the number of data points +% respectively. +% +% The format of the data file is as follows: the first row contains the +% string NIN followed by the number of inputs, the second row contains +% the string NOUT followed by the number of outputs, and the third row +% contains the string NDATA followed by the number of data vectors. +% Subsequent lines each contain one input vector followed by one output +% vector, with individual values separated by spaces. +% +% See also +% nin 2 nout 1 ndata 4 0.000000e+00 0.000000e+00 +% 1.000000e+00 0.000000e+00 1.000000e+00 0.000000e+00 +% 1.000000e+00 0.000000e+00 0.000000e+00 1.000000e+00 +% 1.000000e+00 1.000000e+00 See Also +% DATWRITE +% + +% Copyright (c) Ian T Nabney (1996-2001) + +fid = fopen(filename, 'rt'); +if fid == -1 + error('Failed to open file.') +end + +% Read number of inputs +s1 = fscanf(fid, '%s', 1); +if ~strcmp(s1, 'nin') + fclose(fid); + error('String ''nin'' not found') +end +nin = fscanf(fid, '%d\n', 1); +if ~isnumeric(nin) + fclose(fid); + error('No number for nin') +end +if nin < 0 | round(nin) ~= nin + fclose(fid); + error('nin must be a non-negative integer') +end + +% Read number of outputs +s2 = fscanf(fid, '%s', 1); +if ~strcmp(s2, 'nout') + fclose(fid); + error('String ''nout'' not found') +end +nout = fscanf(fid, '%d\n', 1); +if ~isnumeric(nout) + fclose(fid); + error('No number for nout') +end +if nout < 0 | round(nout) ~= nout + fclose(fid); + error('nout must be a non-negative integer') +end + +% Read number of data values +s3 = fscanf(fid, '%s', 1); +if ~strcmp(s3, 'ndata') + fclose(fid); + error('String ''ndata'' not found') +end +ndata = fscanf(fid, '%d\n', 1); +if ~isnumeric(ndata) + fclose(fid); + error('No number for ndata') +end +if ndata < 0 | round(ndata) ~= ndata + fclose(fid); + error('ndata must be a non-negative integer') +end + +% The following line reads all of the remaining data to the end of file. +temp = fscanf(fid, '%f', inf); + +% Check that size of temp is correct +if size(temp, 1) * size(temp,2) ~= (nin+nout) * ndata + fclose(fid); + error('Incorrect number of elements in file') +end + +temp = reshape(temp, nin + nout, ndata)'; +x = temp(:, 1:nin); +t = temp(:, nin + 1 : nin + nout); + +flag = fclose(fid); +if flag == -1 + error('Failed to close file.') +end +