This repository has been archived by the owner on Aug 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
load_granulometry_data.m
91 lines (75 loc) · 2.54 KB
/
load_granulometry_data.m
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
function list = load_granulometry_data( file )
%LOAD_GRANULOMETRY_DATA Carga un archivo con datos de los resultados
%granulométricos y retorna una lista formateada.
%
% LIST = LOAD_GRANULOMETRY_DATA(FILE) carga el archivo file y retorna una
% lista con valores.
%
% file: String con la ubicación del archivo a cargar.
% Se carga el archivo
f_id = fopen(file);
if f_id == -1
error('Error when loading %s file',file);
end
f = textscan(f_id, '%s %s %s', 'delimiter', '\t');
fclose(f_id);
% Se crea una lista provisional
f_len = length(f{1});
p_list = cell(f_len,1);
header_line_validated = false;
added_lines = 0;
% Se recorre el archivo
for i=1:f_len
m = f{1}{i}; % Malla
ap = f{2}{i}; % Apertura
pr = f{3}{i}; % Peso retenido
% Se comprueba que la primera línea sea válida
if ~header_line_validated
header_line_validated = true;
if ~all(ismember(ap, '0123456789+-.,eEdD#"')) % Header
continue;
end
end
% Se reemplazan elementos en valores
m = strrep(m, '#', '');
m = strrep(m, '', '');
m = strrep(m, 'No.', '');
m = strtrim(m);
m = strrep(m, '"', '');
ap = strrep(ap, ',', '.');
ap = strrep(ap, '-', '');
ap = strtrim(ap);
pr = strrep(pr, ',', '.');
pr = strtrim(pr);
% Se comprueba que los tipos de datos sean válidos
if and(~all(ismember(m, '0123456789 /')),i<f_len)
error('Mesh value at line %i is not valid', i);
end
if ~all(ismember(ap, '0123456789+-.eE'))
error('Aperture value at line %i is not valid', i);
end
if ~all(ismember(pr, '0123456789+-.eE'))
error('Weight retained value at line %i is not valid', i);
end
% Se convierten los números
ap = convert_fraction(ap);
pr = convert_fraction(pr);
% Se guarda la linea
if i<f_len
nlin = [convert_fraction(m), ap, pr];
else
nlin = [0, ap, pr];
end
p_list{i}=nlin;
added_lines = added_lines + 1;
end
% Se crea la lista definitiva
list = cell(added_lines,1);
k = 1;
for j=1:length(p_list)
if ~isempty(p_list{j})
list{k}=p_list{j};
k = k+1;
end
end
end