model_name = strcat(samname,"_model.txt");
model = load(model_name);
+ Wo = model((start_f+1):end_f,1);
+ F0 = Wo*4000/pi;
+ dF0 = F0(1:length(Wo)-1) - F0(2:length(Wo));
+
+ % work out LP and HP energy
+
+ for f=(start_f+1):end_f
+ L = model(f,2);
+ Am = model(f,3:(L+2));
+ L2 = floor(L/2);
+ elow = Am(1:L2) * Am(1:L2)';
+ ehigh = Am(L2:L) * Am(L2:L)';
+ erat(f-(start_f+1)+1) = 10*log10(elow/ehigh);
+ endfor
+
figure(1);
clf;
sp = s((start_f-2)*80:(end_f-2)*80);
hold on;
vhigh = snr((start_f+1):end_f) > 7;
vlow = snr((start_f+1):end_f) > 4;
+
+ % test correction based on erat
+
+ vlowadj = vlow;
+
+ for f=1:length(erat)-1
+ if (vlow(f) == 0)
+ if (erat(f) > 10)
+ vlowadj(f) = 1;
+ endif
+ endif
+ if (vlow(f) == 1)
+ if (erat(f) < -10)
+ vlowadj(f) = 0;
+ endif
+ if (abs(dF0(f)) > 15)
+ vlowadj(f) = 0;
+ endif
+ endif
+ endfor
+
x = 1:(end_f-start_f);
plot(x*80,snr((start_f+1):end_f)*1000,';SNRdB x 1000;g+');
plot(x*80,-8000 + vhigh*2000,';7dB thresh;g');
- plot(x*80,-11000 + vlow*2000,';4dB thresh;r');
+ plot(x*80,-11000 + vlowadj*2000,';vlow with corr;g');
+ plot(x*80,erat*1000,';elow/ehigh in dB;r');
+ plot(x*80,-14000 + vlow*2000,';4dB thresh;r');
hold off;
grid
if (nargin == 5)
figure(2)
Wo = model((start_f+1):end_f,1);
F0 = Wo*4000/pi;
- %dF0 = F0(1:length(Wo)-1) - F0(2:length(Wo));
+ dF0 = F0(1:length(Wo)-1) - F0(2:length(Wo));
%plot(dF0,'+--')
+ %hold on;
+ %plot([ 1 length(dF0) ], [10 10] ,'r')
+ %plot([ 1 length(dF0) ], [-10 -10] ,'r')
%axis([1 length(dF0) -50 50])
+ %hold off;
plot(F0,'+--')
endfunction