File: tsgReadCustomRuleFile.m

package info (click to toggle)
tasmanian 8.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,852 kB
  • sloc: cpp: 34,523; python: 7,039; f90: 5,080; makefile: 224; sh: 64; ansic: 8
file content (56 lines) | stat: -rw-r--r-- 1,378 bytes parent folder | download | duplicates (3)
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
function lCustomRule = tsgReadCustomRuleFile(sFilename)
%
% reads a custom-tabulated rule from an ASCII file
%
% description: Test CT
% levels: 2
% 1 1
% 2 3
% 2.0 0.0
% 1.5 -0.5
% 0.5 0.5
%
% results in the list with properties
%
% sDescription = 'Test CT'
% iMaxLevel = 2
% vLevels = [1; 2]
% vPrecision = [1; 3]
% vNodes = [0.0, -0.5, 0.5]
% vWeights = [2.0, 1.5, 0.5]
%

sFilename = regexprep(sFilename, '\\ ', ' ');
fid = fopen(sFilename);

sLine = fgetl(fid);
if (strfind('description: ', sLine) ~= 1)
    error('Wrong file format of custom tabulated file on line 1!');
end
lCustomRule.sDescription = strrep(sLine, 'description: ', '');

sLine = fgetl(fid);
if (strfind('levels: ', sLine) ~= 1)
    error('Wrong file format of custom tabulated file on line 2!');
end
lCustomRule.iMaxLevel = str2double(strrep(sLine, 'levels: ', ''));

lCustomRule.vLevels = zeros(lCustomRule.iMaxLevel, 1);
lCustomRule.vPrecision = zeros(lCustomRule.iMaxLevel, 1);
for i=1:lCustomRule.iMaxLevel
    s = fscanf(fid, ' %f ', [1, 2]);
    lCustomRule.vLevels(i) = s(1);
    lCustomRule.vPrecision(i) = s(2);
end

lCustomRule.vNodes = zeros(sum(lCustomRule.vLevels), 1);
lCustomRule.vWeights = zeros(sum(lCustomRule.vLevels), 1);
for i=1:sum(lCustomRule.vLevels)
    s = fscanf(fid, ' %f ', [1, 2]);
    lCustomRule.vNodes(i) = s(2);
    lCustomRule.vWeights(i) = s(1);
end

fclose(fid);

end