My Project  0.0.16
QUCS Mapping
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
loadQucsDataSet.m
Go to the documentation of this file.
1 % -*- texinfo -*-
2 % @deftypefn {Function File} {[@var{data}] =} loadQucsDataSet (@var{filename})
3 % Loads the Qucs dataset from the Qucs dataset file @var{filename}.
4 % @end deftypefn
5 
6 % Copyright 2010 (C) 2010 by Eberhard Gamm <eberhard.gamm@gmx.de>
7 % Published under GNU General Public License (GPL V2). No warranty at all.
8 
9 function dataSet = loadQucsDataSet(dataSetFile)
10 % Load Qucs data set
11 
12 dataSet = [];
13 fid = fopen(dataSetFile,'r');
14 if fid < 0
15  fprintf(1,'Data set %s not found\n',dataSetFile);
16  return;
17 end
18 
19 error = 0;
20 idata = 0;
21 idx = 0;
22 while ~feof(fid) && ~error
23  line = fgetl(fid);
24  if ~ischar(line)
25  break;
26  end
27  if isempty(line)
28  break;
29  end
30  ll = length(line);
31  if line(1) == '<'
32  if strcmp(line(1:min(7,ll)),'<indep ')
33  [name,len,cnt] = sscanf(line(8:end-1),'%s %d','C');
34  if cnt ~= 2
35  fprintf(1,'Invalid independent variable in data set %s\n',dataSetFile);
36  error = 1;
37  break;
38  error
39  end
40  idx = idx + 1;
41  dataSet(idx).name = name;
42  dataSet(idx).nameDep = '-';
43  dataSet(idx).dep = 0;
44  dataSet(idx).data = zeros(1,10000);
45  idata = 1;
46  end
47  if strcmp(line(1:min(5,ll)),'<dep ')
48  [name,nameDep,cnt] = sscanf(line(6:end-1),'%s %s','C');
49  if cnt ~= 2
50  fprintf(1,'Invalid dependent variable in data set %s\n',dataSetFile);
51  error = 1;
52  break;
53  end
54  idx = idx + 1;
55  dataSet(idx).name = name;
56  dataSet(idx).nameDep = nameDep;
57  dataSet(idx).dep = 1;
58  dataSet(idx).data = zeros(1,10000);
59  idata = 1;
60  end
61  if strcmp(line(1:min(8,ll)),'</indep>') || strcmp(line(1:min(6,ll)),'</dep>')
62  dataSet(idx).data = dataSet(idx).data(1:idata-1);
63  dataSet(idx).len = idata - 1;
64  idata = 0;
65  end
66  else
67  if idata > 0
68  [val,cnt] = sscanf(line,'%f');
69  if cnt ~= 1
70  fprintf(1,'Invalid data in data set %s\n',dataSetFile);
71  error = 1;
72  break;
73  end
74  if idata > length(dataSet(idx).data)
75  dataSet(idx).data = [dataSet(idx).data zeros(1,10000)];
76  end
77  dataSet(idx).data(idata) = val;
78  idata = idata + 1;
79  end
80  end
81 end
82 fclose(fid);