Dawn@4
|
1 function new_paramlist = func_parseParameters(paramlist, handles, matfile, data_len)
|
Dawn@4
|
2 % new_paramlist = func_parseParameters(paramlist, handles, matfile, data_len)
|
Dawn@4
|
3 % sort through the parameter list and find dependencies, then output a new
|
Dawn@4
|
4 % parameter list with the new param list
|
Dawn@4
|
5 % also check data_len to ensure existing parameters have the same length
|
Dawn@4
|
6 %
|
Dawn@4
|
7 % Author: Yen-Liang Shue, Speech Processing and Auditory Perception Laboratory, UCLA
|
Dawn@4
|
8 % Copyright UCLA SPAPL 2009
|
Dawn@4
|
9
|
Dawn@4
|
10 VSData = guidata(handles.VSHandle);
|
Dawn@4
|
11
|
Dawn@4
|
12 % handles carries the F0 and FMT methods
|
Dawn@4
|
13 F0algorithm = VSData.vars.F0algorithm;
|
Dawn@4
|
14 FMTalgorithm = VSData.vars.FMTalgorithm;
|
Dawn@4
|
15
|
Dawn@4
|
16 % vector stores which param to enable:
|
Dawn@4
|
17 %0 = disable, 1 = calculate, 2 = conditional calculate
|
Dawn@4
|
18 new_param_vec = zeros(length(func_getparameterlist()), 1);
|
Dawn@4
|
19
|
Dawn@4
|
20 for k=1:length(paramlist)
|
Dawn@4
|
21 if (strcmp(paramlist{k}, 'H1*-A1*, H1*-A2*, H1*-A3*'))
|
Dawn@4
|
22 new_param_vec(func_getparameterlist('H1*-A1*, H1*-A2*, H1*-A3*')) = 1;
|
Dawn@4
|
23 new_param_vec(func_getparameterlist(F0algorithm)) = new_param_vec(func_getparameterlist(F0algorithm)) + 2;
|
Dawn@4
|
24 new_param_vec(func_getparameterlist(FMTalgorithm)) = new_param_vec(func_getparameterlist(FMTalgorithm)) + 2;
|
Dawn@4
|
25 new_param_vec(func_getparameterlist('H1, H2, H4')) = new_param_vec(func_getparameterlist('H1, H2, H4')) + 2;
|
Dawn@4
|
26 new_param_vec(func_getparameterlist('A1, A2, A3')) = new_param_vec(func_getparameterlist('A1, A2, A3')) + 2;
|
Dawn@4
|
27
|
Dawn@4
|
28 elseif (strcmp(paramlist{k}, 'H1*-H2*, H2*-H4*'))
|
Dawn@4
|
29 new_param_vec(func_getparameterlist('H1*-H2*, H2*-H4*')) = 1;
|
Dawn@4
|
30 new_param_vec(func_getparameterlist(F0algorithm)) = new_param_vec(func_getparameterlist(F0algorithm)) + 2;
|
Dawn@4
|
31 new_param_vec(func_getparameterlist(FMTalgorithm)) = new_param_vec(func_getparameterlist(FMTalgorithm)) + 2;
|
Dawn@4
|
32 new_param_vec(func_getparameterlist('H1, H2, H4')) = new_param_vec(func_getparameterlist('H1, H2, H4')) + 2;
|
Dawn@4
|
33
|
Dawn@4
|
34 elseif (strcmp(paramlist{k}, 'Energy'))
|
Dawn@4
|
35 new_param_vec(func_getparameterlist('Energy')) = 1;
|
Dawn@4
|
36 new_param_vec(func_getparameterlist(F0algorithm)) = new_param_vec(func_getparameterlist(F0algorithm)) + 2;
|
Dawn@4
|
37
|
Dawn@4
|
38 elseif (strcmp(paramlist{k}, 'CPP'))
|
Dawn@4
|
39 new_param_vec(func_getparameterlist('CPP')) = 1;
|
Dawn@4
|
40 new_param_vec(func_getparameterlist(F0algorithm)) = new_param_vec(func_getparameterlist(F0algorithm)) + 2;
|
Dawn@4
|
41
|
Dawn@4
|
42 elseif (strcmp(paramlist{k}, 'Harmonic to Noise Ratios - HNR'))
|
Dawn@4
|
43 new_param_vec(func_getparameterlist('Harmonic to Noise Ratios - HNR')) = 1;
|
Dawn@4
|
44 new_param_vec(func_getparameterlist(F0algorithm)) = new_param_vec(func_getparameterlist(F0algorithm)) + 2;
|
Dawn@4
|
45
|
Dawn@4
|
46 elseif (strcmp(paramlist{k}, 'Subharmonic to Harmonic Ratio/F0 - SHR, (shr)F0'))
|
Dawn@4
|
47 new_param_vec(func_getparameterlist('Subharmonic to Harmonic Ratio/F0 - SHR, (shr)F0')) = 1;
|
Dawn@4
|
48
|
Dawn@4
|
49 elseif (strcmp(paramlist{k}, 'A1, A2, A3'))
|
Dawn@4
|
50 new_param_vec(func_getparameterlist('A1, A2, A3')) = 1;
|
Dawn@4
|
51 new_param_vec(func_getparameterlist(F0algorithm)) = new_param_vec(func_getparameterlist(F0algorithm)) + 2;
|
Dawn@4
|
52 new_param_vec(func_getparameterlist(FMTalgorithm)) = new_param_vec(func_getparameterlist(FMTalgorithm)) + 2;
|
Dawn@4
|
53
|
Dawn@4
|
54 elseif (strcmp(paramlist{k}, 'H1, H2, H4'))
|
Dawn@4
|
55 new_param_vec(func_getparameterlist('H1, H2, H4')) = 1;
|
Dawn@4
|
56 new_param_vec(func_getparameterlist(F0algorithm)) = new_param_vec(func_getparameterlist(F0algorithm)) + 2;
|
Dawn@4
|
57
|
Dawn@4
|
58 elseif (strcmp(paramlist{k}, 'F1, F2, F3, F4 (Snack)'))
|
Dawn@4
|
59 new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Snack)')) = 1;
|
Dawn@4
|
60
|
Dawn@4
|
61 elseif (strcmp(paramlist{k}, 'F1, F2, F3, F4 (Praat)'))
|
Dawn@4
|
62 new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Praat)')) = 1;
|
Dawn@4
|
63
|
Dawn@4
|
64 elseif (strcmp(paramlist{k}, 'F1, F2, F3, F4 (Other)') && VSData.vars.FormantsOtherEnable == 1)
|
Dawn@4
|
65 new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Other)')) = 1;
|
Dawn@4
|
66
|
Dawn@4
|
67 elseif (strcmp(paramlist{k}, 'F0 (Straight)'))
|
Dawn@4
|
68 new_param_vec(func_getparameterlist('F0 (Straight)')) = 1;
|
Dawn@4
|
69
|
Dawn@4
|
70 elseif (strcmp(paramlist{k}, 'F0 (Snack)'))
|
Dawn@4
|
71 new_param_vec(func_getparameterlist('F0 (Snack)')) = 1;
|
Dawn@4
|
72
|
Dawn@4
|
73 elseif (strcmp(paramlist{k}, 'F0 (Praat)'))
|
Dawn@4
|
74 new_param_vec(func_getparameterlist('F0 (Praat)')) = 1;
|
Dawn@4
|
75
|
Dawn@4
|
76 elseif (strcmp(paramlist{k}, 'F0 (Other)') && VSData.vars.F0OtherEnable == 1)
|
Dawn@4
|
77 new_param_vec(func_getparameterlist('F0 (Other)')) = 1;
|
Dawn@4
|
78 end
|
Dawn@4
|
79
|
Dawn@4
|
80 end
|
Dawn@4
|
81
|
Dawn@4
|
82 % check the conditional parameters to see whether they already exist in the
|
Dawn@4
|
83 % matfile
|
Dawn@4
|
84 if (exist(matfile, 'file'))
|
Dawn@4
|
85 matdata = load(matfile);
|
Dawn@4
|
86
|
Dawn@4
|
87 if (mod(new_param_vec(func_getparameterlist('F0 (Straight)')), 2) == 0 && isfield(matdata, 'strF0'))
|
Dawn@4
|
88 if (length(matdata.strF0) == data_len)
|
Dawn@4
|
89 new_param_vec(func_getparameterlist('F0 (Straight)')) = 0;
|
Dawn@4
|
90 end
|
Dawn@4
|
91 end
|
Dawn@4
|
92
|
Dawn@4
|
93 if (mod(new_param_vec(func_getparameterlist('F0 (Snack)')), 2) == 0 && isfield(matdata, 'sF0'))
|
Dawn@4
|
94 if (length(matdata.sF0) == data_len)
|
Dawn@4
|
95 new_param_vec(func_getparameterlist('F0 (Snack)')) = 0;
|
Dawn@4
|
96 end
|
Dawn@4
|
97 end
|
Dawn@4
|
98
|
Dawn@4
|
99 if (mod(new_param_vec(func_getparameterlist('F0 (Praat)')), 2) == 0 && isfield(matdata, 'pF0'))
|
Dawn@4
|
100 if (length(matdata.pF0) == data_len)
|
Dawn@4
|
101 new_param_vec(func_getparameterlist('F0 (Praat)')) = 0;
|
Dawn@4
|
102 end
|
Dawn@4
|
103 end
|
Dawn@4
|
104
|
Dawn@4
|
105 if (mod(new_param_vec(func_getparameterlist('F0 (Other)')), 2) == 0 && isfield(matdata, 'oF0'))
|
Dawn@4
|
106 if (length(matdata.sF0) == data_len)
|
Dawn@4
|
107 new_param_vec(func_getparameterlist('F0 (Other)')) = 0;
|
Dawn@4
|
108 end
|
Dawn@4
|
109 end
|
Dawn@4
|
110
|
Dawn@4
|
111 if (mod(new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Snack)')), 2) == 0 && isfield(matdata, 'sF1'))
|
Dawn@4
|
112 if (length(matdata.sF1) == data_len)
|
Dawn@4
|
113 new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Snack)')) = 0;
|
Dawn@4
|
114 end
|
Dawn@4
|
115 end
|
Dawn@4
|
116
|
Dawn@4
|
117 if (mod(new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Praat)')), 2) == 0 && isfield(matdata, 'pF1'))
|
Dawn@4
|
118 if (length(matdata.sF1) == data_len)
|
Dawn@4
|
119 new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Praat)')) = 0;
|
Dawn@4
|
120 end
|
Dawn@4
|
121 end
|
Dawn@4
|
122
|
Dawn@4
|
123 if (mod(new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Other)')), 2) == 0 && isfield(matdata, 'oF1'))
|
Dawn@4
|
124 if (length(matdata.sF1) == data_len)
|
Dawn@4
|
125 new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Other)')) = 0;
|
Dawn@4
|
126 end
|
Dawn@4
|
127 end
|
Dawn@4
|
128
|
Dawn@4
|
129 if (mod(new_param_vec(func_getparameterlist('A1, A2, A3')), 2) == 0 && isfield(matdata, 'A1'))
|
Dawn@4
|
130 if (length(matdata.A1) == data_len)
|
Dawn@4
|
131 new_param_vec(func_getparameterlist('A1, A2, A3')) = 0;
|
Dawn@4
|
132 end
|
Dawn@4
|
133 end
|
Dawn@4
|
134
|
Dawn@4
|
135 if (mod(new_param_vec(func_getparameterlist('H1, H2, H4')), 2) == 0 && isfield(matdata, 'H1'))
|
Dawn@4
|
136 if (length(matdata.H1) == data_len)
|
Dawn@4
|
137 new_param_vec(func_getparameterlist('H1, H2, H4')) = 0;
|
Dawn@4
|
138 end
|
Dawn@4
|
139 end
|
Dawn@4
|
140
|
Dawn@4
|
141 end
|
Dawn@4
|
142
|
Dawn@4
|
143 new_param_vec(new_param_vec ~= 0) = 1;
|
Dawn@4
|
144
|
Dawn@4
|
145 % now build list with the proper processing order of the parameters
|
Dawn@4
|
146 new_paramlist = cell(sum(new_param_vec), 1);
|
Dawn@4
|
147 cnt = 1;
|
Dawn@4
|
148
|
Dawn@4
|
149 if (new_param_vec(func_getparameterlist('F0 (Straight)')) == 1)
|
Dawn@4
|
150 new_paramlist{cnt} = 'F0 (Straight)';
|
Dawn@4
|
151 cnt = cnt + 1;
|
Dawn@4
|
152 end
|
Dawn@4
|
153
|
Dawn@4
|
154 if (new_param_vec(func_getparameterlist('F0 (Snack)')) == 1)
|
Dawn@4
|
155 new_paramlist{cnt} = 'F0 (Snack)';
|
Dawn@4
|
156 cnt = cnt + 1;
|
Dawn@4
|
157 end
|
Dawn@4
|
158
|
Dawn@4
|
159 if (new_param_vec(func_getparameterlist('F0 (Praat)')) == 1)
|
Dawn@4
|
160 new_paramlist{cnt} = 'F0 (Praat)';
|
Dawn@4
|
161 cnt = cnt + 1;
|
Dawn@4
|
162 end
|
Dawn@4
|
163
|
Dawn@4
|
164 if (new_param_vec(func_getparameterlist('F0 (Other)')) == 1 && VSData.vars.F0OtherEnable == 1)
|
Dawn@4
|
165 new_paramlist{cnt} = 'F0 (Other)';
|
Dawn@4
|
166 cnt = cnt + 1;
|
Dawn@4
|
167 end
|
Dawn@4
|
168
|
Dawn@4
|
169 if (new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Snack)')) == 1)
|
Dawn@4
|
170 new_paramlist{cnt} = 'F1, F2, F3, F4 (Snack)';
|
Dawn@4
|
171 cnt = cnt + 1;
|
Dawn@4
|
172 end
|
Dawn@4
|
173
|
Dawn@4
|
174 if (new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Praat)')) == 1)
|
Dawn@4
|
175 new_paramlist{cnt} = 'F1, F2, F3, F4 (Praat)';
|
Dawn@4
|
176 cnt = cnt + 1;
|
Dawn@4
|
177 end
|
Dawn@4
|
178
|
Dawn@4
|
179 if (new_param_vec(func_getparameterlist('F1, F2, F3, F4 (Other)')) == 1 && VSData.vars.FormantsOtherEnable == 1)
|
Dawn@4
|
180 new_paramlist{cnt} = 'F1, F2, F3, F4 (Other)';
|
Dawn@4
|
181 cnt = cnt + 1;
|
Dawn@4
|
182 end
|
Dawn@4
|
183
|
Dawn@4
|
184 if (new_param_vec(func_getparameterlist('A1, A2, A3')) == 1)
|
Dawn@4
|
185 new_paramlist{cnt} = 'A1, A2, A3';
|
Dawn@4
|
186 cnt = cnt + 1;
|
Dawn@4
|
187 end
|
Dawn@4
|
188
|
Dawn@4
|
189 if (new_param_vec(func_getparameterlist('H1, H2, H4')) == 1)
|
Dawn@4
|
190 new_paramlist{cnt} = 'H1, H2, H4';
|
Dawn@4
|
191 cnt = cnt + 1;
|
Dawn@4
|
192 end
|
Dawn@4
|
193
|
Dawn@4
|
194 if (new_param_vec(func_getparameterlist('Energy')) == 1)
|
Dawn@4
|
195 new_paramlist{cnt} = 'Energy';
|
Dawn@4
|
196 cnt = cnt + 1;
|
Dawn@4
|
197 end
|
Dawn@4
|
198
|
Dawn@4
|
199 if (new_param_vec(func_getparameterlist('CPP')) == 1)
|
Dawn@4
|
200 new_paramlist{cnt} = 'CPP';
|
Dawn@4
|
201 cnt = cnt + 1;
|
Dawn@4
|
202 end
|
Dawn@4
|
203
|
Dawn@4
|
204 if (new_param_vec(func_getparameterlist('Harmonic to Noise Ratios - HNR')) == 1)
|
Dawn@4
|
205 new_paramlist{cnt} = 'Harmonic to Noise Ratios - HNR';
|
Dawn@4
|
206 cnt = cnt + 1;
|
Dawn@4
|
207 end
|
Dawn@4
|
208
|
Dawn@4
|
209 if (new_param_vec(func_getparameterlist('Subharmonic to Harmonic Ratio/F0 - SHR, (shr)F0')) == 1)
|
Dawn@4
|
210 new_paramlist{cnt} = 'Subharmonic to Harmonic Ratio/F0 - SHR, (shr)F0';
|
Dawn@4
|
211 cnt = cnt + 1;
|
Dawn@4
|
212 end
|
Dawn@4
|
213
|
Dawn@4
|
214 if (new_param_vec(func_getparameterlist('H1*-H2*, H2*-H4*')) == 1)
|
Dawn@4
|
215 new_paramlist{cnt} = 'H1*-H2*, H2*-H4*';
|
Dawn@4
|
216 cnt = cnt + 1;
|
Dawn@4
|
217 end
|
Dawn@4
|
218
|
Dawn@4
|
219 if (new_param_vec(func_getparameterlist('H1*-A1*, H1*-A2*, H1*-A3*')) == 1)
|
Dawn@4
|
220 new_paramlist{cnt} = 'H1*-A1*, H1*-A2*, H1*-A3*';
|
Dawn@4
|
221 cnt = cnt + 1;
|
Dawn@4
|
222 end
|
Dawn@4
|
223
|