- refactored
This commit is contained in:
Executable
+85
@@ -0,0 +1,85 @@
|
||||
% dtdet3
|
||||
function [a,rxds,xs,xl,es,clm,dtf] = dtdet(x,d,e,dti)
|
||||
nstates = 9;
|
||||
xsi = 1;
|
||||
xli = 2;
|
||||
dtsi = 3;
|
||||
esi = 4;
|
||||
nli = 5;
|
||||
eli = 6;
|
||||
rxdi = 7;
|
||||
psxi = 8;
|
||||
psdi = 9;
|
||||
dtalki = 10;
|
||||
|
||||
% ------------------------------------------------------------------------
|
||||
% Double-Talk-Detector params
|
||||
ar = 0.05;
|
||||
af = 0.005;
|
||||
arrxd = 0.0004;
|
||||
afrxd = 1.0;
|
||||
al = 0.0001;
|
||||
pa = 0.7;
|
||||
pl = 2.0;
|
||||
po = 0.93;
|
||||
htime = 80;
|
||||
|
||||
% ------------------------------------------------------------------------
|
||||
if (lge(dti) == 1);
|
||||
dti = zeros(nstates,1);
|
||||
dti(xli)=0.01;
|
||||
dti(nli)=0.01;
|
||||
dti(eli)=0.1;
|
||||
dti(dtalki) = 0;
|
||||
end;
|
||||
% ------------------------------------------------------------------------
|
||||
|
||||
fa = 8000;
|
||||
fc = 800;
|
||||
L = lge(x);
|
||||
M = 4;
|
||||
% ------------------------------------------------------------------------
|
||||
|
||||
%d = iirtp(fa,fc,1,8,d);
|
||||
%x = iirtp(fa,fc,1,8,x);
|
||||
|
||||
d = dosa(d,fa,M);
|
||||
x = dosa(x,fa,M);
|
||||
e = dosa(e,fa,M);
|
||||
|
||||
|
||||
%[xs,dti(xsi)] = phxs(x,ar,af,dti(xsi));
|
||||
%[xl,dti(xli)] = phxl(x,xs,al,pl,dti(xli));
|
||||
|
||||
|
||||
|
||||
rxd = max(abs(corrph(x,d,40/M)));
|
||||
|
||||
%[es,dti(esi)] = phxs(e,0.008,0.005,dti(esi));
|
||||
%[el,dti(eli)] = phxl(e,es,0.0001,pl,dti(eli));
|
||||
%[rxds,dti(rxdi)] = phxs(rxd*ones(L,1),arrxd,afrxd,dti(rxdi));
|
||||
|
||||
%[nl,dti(nli)] = phnl(e,es,el,xs,xl,al,pl,dti(nli));
|
||||
%a = alpha(xs,xl,nl,pl,es,(rxd > po),pa);
|
||||
|
||||
|
||||
if (rxd > po)
|
||||
if(dti(dtalki)==1)
|
||||
a = [zeros(htime,1);ones(L-htime,1)];
|
||||
dti(dtalki)=0;
|
||||
else
|
||||
a = ones(L,1);
|
||||
end;
|
||||
else
|
||||
a = zeros(L,1);
|
||||
dti(dtalki)=1;
|
||||
end;
|
||||
rxds=ones(L,1)*rxd;
|
||||
|
||||
dtf = dti;
|
||||
xs=1;
|
||||
es=1;
|
||||
xl=1;
|
||||
clm=1;
|
||||
|
||||
% ------------------------------------------------------------------------
|
||||
Executable
+82
@@ -0,0 +1,82 @@
|
||||
% dtdet3
|
||||
function [a,rxds,xs,xl,ds,dl,dtf] = dtdet(x,d,e,dti)
|
||||
nstates = 11;
|
||||
xsi = 1;
|
||||
xli = 2;
|
||||
dtsi = 3;
|
||||
dsi = 4;
|
||||
dli = 5;
|
||||
eli = 6;
|
||||
rxdi = 7;
|
||||
psxi = 8;
|
||||
psdi = 9;
|
||||
dtalki = 10;
|
||||
esi = 11;
|
||||
% ------------------------------------------------------------------------
|
||||
% Double-Talk-Detector params
|
||||
ar = 0.05;
|
||||
af = 0.005;
|
||||
arrxd = 0.0004;
|
||||
afrxd = 1.0;
|
||||
al = 0.0001;
|
||||
pa = 0.7;
|
||||
pl = 2.0;
|
||||
po = 0.93;
|
||||
arf = 0.0006;
|
||||
htime = 80;
|
||||
|
||||
% ------------------------------------------------------------------------
|
||||
if (lge(dti) == 1);
|
||||
dti = zeros(nstates,1);
|
||||
dti(xli)=0.1;
|
||||
dti(dli)=0.1;
|
||||
dti(xsi)=0.0;
|
||||
dti(dsi)=0.0;
|
||||
dti(eli)=0.1;
|
||||
dti(dtalki) = 0;
|
||||
end;
|
||||
% ------------------------------------------------------------------------
|
||||
|
||||
fa = 8000;
|
||||
fc = 800;
|
||||
L = lge(x);
|
||||
M = 1;
|
||||
% ------------------------------------------------------------------------
|
||||
|
||||
%d = iirtp(fa,fc,1,8,d);
|
||||
%x = iirtp(fa,fc,1,8,x);
|
||||
|
||||
d = dosa(d,fa,M);
|
||||
x = dosa(x,fa,M);
|
||||
e = dosa(e,fa,M);
|
||||
|
||||
|
||||
[xs,dti(xsi)] = sm2(x,dti(xli),arf);
|
||||
[xl,dti(xli)] = sm2(x,dti(xli),arf/M);
|
||||
%[xl,dti(xli)] = phxl(x,xs,al,pl,dti(xli));
|
||||
%[ds,dti(dsi)] = phxs(d,ar,af,dti(dsi));
|
||||
[dl,dti(dli)] = sm2(d,dti(dli),arf/M);
|
||||
[el,dti(eli)] = sm2(e,dti(eli),0.5*arf/M);
|
||||
%[es,dti(esi)] = sm2(e,dti(esi),10*arf/M);
|
||||
%[dl,dti(dli)] = phxl(d,ds,al,pl,dti(dli));
|
||||
xs = zeros(L,1);
|
||||
ds = zeros(L,1);
|
||||
|
||||
%rxd = max(abs(correlt(x,d,40/M)));
|
||||
|
||||
%[es,dti(esi)] = phxs(e,0.008,0.005,dti(esi));
|
||||
%[el,dti(eli)] = phxl(e,es,0.0001,pl,dti(eli));
|
||||
%[rxds,dti(rxdi)] = phxs(rxd*ones(L,1),arrxd,afrxd,dti(rxdi));
|
||||
|
||||
%[nl,dti(nli)] = phnl(e,es,el,xs,xl,al,pl,dti(nli));
|
||||
%a = alpha(xs,xl,nl,pl,es,(rxd > po),pa);
|
||||
a = zeros(L,1);
|
||||
|
||||
rxd = max(corrph(xl,dl,30));
|
||||
a = (((xl(1:1.0/M:L/M)*rxd) > (pl*dl(1:1.0/M:L/M))));
|
||||
rxds=0*ones(L,1);
|
||||
dtf = dti;
|
||||
xl = zeros(L,1);
|
||||
dl = zeros(L,1);
|
||||
|
||||
% ------------------------------------------------------------------------
|
||||
Executable
+85
@@ -0,0 +1,85 @@
|
||||
% dtdet3
|
||||
function [a,rxds,xs,xl,es,clm,dtf] = dtdet(x,d,e,dti)
|
||||
nstates = 9;
|
||||
xsi = 1;
|
||||
xli = 2;
|
||||
dtsi = 3;
|
||||
esi = 4;
|
||||
nli = 5;
|
||||
eli = 6;
|
||||
rxdi = 7;
|
||||
psxi = 8;
|
||||
psdi = 9;
|
||||
dtalki = 10;
|
||||
|
||||
% ------------------------------------------------------------------------
|
||||
% Double-Talk-Detector params
|
||||
ar = 0.05;
|
||||
af = 0.005;
|
||||
arrxd = 0.0004;
|
||||
afrxd = 1.0;
|
||||
al = 0.0001;
|
||||
pa = 0.7;
|
||||
pl = 2.0;
|
||||
po = 0.93;
|
||||
htime = 80;
|
||||
|
||||
% ------------------------------------------------------------------------
|
||||
if (lge(dti) == 1);
|
||||
dti = zeros(nstates,1);
|
||||
dti(xli)=0.01;
|
||||
dti(nli)=0.01;
|
||||
dti(eli)=0.1;
|
||||
dti(dtalki) = 0;
|
||||
end;
|
||||
% ------------------------------------------------------------------------
|
||||
|
||||
fa = 8000;
|
||||
fc = 800;
|
||||
L = lge(x);
|
||||
M = 4;
|
||||
% ------------------------------------------------------------------------
|
||||
|
||||
%d = iirtp(fa,fc,1,8,d);
|
||||
%x = iirtp(fa,fc,1,8,x);
|
||||
|
||||
d = dosa(d,fa,M);
|
||||
x = dosa(x,fa,M);
|
||||
e = dosa(e,fa,M);
|
||||
|
||||
|
||||
%[xs,dti(xsi)] = phxs(x,ar,af,dti(xsi));
|
||||
%[xl,dti(xli)] = phxl(x,xs,al,pl,dti(xli));
|
||||
|
||||
|
||||
|
||||
rxd = min(max(corrja(x,d,30)),1);
|
||||
|
||||
%[es,dti(esi)] = phxs(e,0.008,0.005,dti(esi));
|
||||
%[el,dti(eli)] = phxl(e,es,0.0001,pl,dti(eli));
|
||||
%[rxds,dti(rxdi)] = phxs(rxd*ones(L,1),arrxd,afrxd,dti(rxdi));
|
||||
|
||||
%[nl,dti(nli)] = phnl(e,es,el,xs,xl,al,pl,dti(nli));
|
||||
%a = alpha(xs,xl,nl,pl,es,(rxd > po),pa);
|
||||
|
||||
|
||||
if (rxd > po)
|
||||
if(dti(dtalki)==1)
|
||||
a = [zeros(htime,1);ones(L-htime,1)];
|
||||
dti(dtalki)=0;
|
||||
else
|
||||
a = ones(L,1);
|
||||
end;
|
||||
else
|
||||
a = zeros(L,1);
|
||||
dti(dtalki)=1;
|
||||
end;
|
||||
rxds=ones(L,1)*rxd;
|
||||
|
||||
dtf = dti;
|
||||
xs=1;
|
||||
es=1;
|
||||
xl=1;
|
||||
clm=1;
|
||||
|
||||
% ------------------------------------------------------------------------
|
||||
Executable
+66
@@ -0,0 +1,66 @@
|
||||
% pltimp(x,Fa,Nw,NP)
|
||||
function y = pltimp(x,Fa,Nw,NP)
|
||||
|
||||
xn = x(1:NP)/max(x(1:NP));
|
||||
Px = sm2(xn(1:NP).^2,Nw,0);
|
||||
Pxn = Px/max(Px(1:NP));
|
||||
PxndB = 10*log(Pxn(1:NP));
|
||||
|
||||
matchval = -120;
|
||||
for n = 1:NP,
|
||||
if ((PxndB(n) <= -60) & (PxndB(n) > matchval))
|
||||
matchn = n;
|
||||
matchval = PxndB(n);
|
||||
end;
|
||||
if (PxndB(n) > -60)
|
||||
matchval = -120;
|
||||
end;
|
||||
end;
|
||||
|
||||
matchtime = matchn*1000/Fa
|
||||
matchval
|
||||
|
||||
figure;
|
||||
plot(1000*(1:NP)/Fa,x(1:NP));
|
||||
grid;
|
||||
PlotTitle = sprintf('h(t) Fa=%d Hz',Fa);
|
||||
title(PlotTitle);
|
||||
xlabel('t [ms]');
|
||||
ylabel('h');
|
||||
|
||||
figure;
|
||||
plot(1000*(1:NP)/Fa,Px(1:NP));
|
||||
grid;
|
||||
PlotTitle = sprintf('Leistung Ph(t), Windowsize=%d Samples, Time=%g ms',Nw,1000*Nw/Fa);
|
||||
title(PlotTitle);
|
||||
xlabel('t [ms]');
|
||||
ylabel('eh');
|
||||
|
||||
figure;
|
||||
plot(1000*(1:NP)/Fa,PxndB(1:NP));
|
||||
set(gca,'YTick',-20*(0:6));
|
||||
xt = get(gca,'XTick');
|
||||
rval = 100;
|
||||
di = 1;
|
||||
for i = 1:length(xt)-1,
|
||||
lv = round(matchtime) - xt(i);
|
||||
if (lv <= 0)
|
||||
di = i;
|
||||
if (i > 1)
|
||||
uv = round(matchtime) - xt(i-1);
|
||||
if (abs(uv) < abs(lv))
|
||||
di = i - 1;
|
||||
end;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
di
|
||||
xt(di) = matchn*1000/Fa;
|
||||
set(gca,'XTick',xt);
|
||||
grid;
|
||||
PlotTitle = sprintf('Leistung Ph(t) 60dB-decay time=%g ms',matchtime);
|
||||
title(PlotTitle);
|
||||
xlabel('t [ms]');
|
||||
ylabel('Ph [dB]');
|
||||
|
||||
Reference in New Issue
Block a user