📄 r1_ratio.m
字号:
disp(' ');
disp('SCRIPT: r1_ratio3st.m ***********************************************');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% jmw 1/12/94
% 12/21/93
% 12/07/93
% 11/18/93
% playing with Weinstein, et al., algorithm for parsing based
% upon RMS values of BP filters
%
% gain calculated from sqrt of res NRG (this feature removed)
%
% this script calcultaes r1 ratio
% and COMPARES TO A PRESET THRESHOLD TO DETERMINE SONORANT OR NOT...
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
PLT = 1; % flag to plot results
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
file_string = sprintf('temp/%s.mat', name);
s=sprintf('loading ./%s from hard disk ...',file_string);
disp(s);
s=sprintf('load %s', file_string);
eval(s);
signal = eval(name);
file_string = sprintf('temp/%s_Data.mat', name);
s=sprintf('loading ./%s from hard disk ...',file_string);
disp(s);
s=sprintf('load %s', file_string);
eval(s);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% compute freq response
disp('computing r1 ratio from bandpass frequency responses ...');
N=256;
start1 = 6;
stop1 = 47;
start2 = 190;
stop2=N;
[m,n]=size(cofa);
r1 = zeros(m,1);
gain = zeros(m,1);
e1 = zeros(m,1);
e2 = zeros(m,1);
for i=1:m-1,
a = range(i,1);
b = range(i,2);
%res_nrg = residue(a:b) * residue(a:b)' ;
%gain(i) = sqrt(res_nrg);
gain(i) = 1; % changed 9/30/94 jmw
[h,w]=freqz(gain(i),cofa(i,:),N);
mag=abs(h);
e1(i)=sqrt(mag(start1:stop1)' * mag(start1:stop1));
e2(i) = sqrt(mag(start2:stop2)' * mag(start2:stop2));
r1(i) = e1(i) /e2(i);
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% smooth r1 ratio
MFO = 5; % changed 2/21/94 from 7; % median filter order
s=sprintf('smoothing r1 ratio with median filter of order %d ...', MFO);
disp(s);
r1=median1(r1,MFO);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% check if sonorant ...
T = 10; % sonorant threshold - empirically determined
sonorant = zeros(1,m);
for i=1:m,
if (r1(i) > T)
sonorant(i) = 1;
end;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (PLT)
titles = 1; % turn off for no titles (for dissertation figs)
disp('plotting results ...');
h=gcf;
figure(h);
clf;
subplot(311);
plot(signal);
grid;
axis_1=axis;
axis(axis_1);
s=sprintf('%s', name);
if (titles)
title(s);
end;
subplot(312);
stairs(range(:,1),r1);
axis([axis_1(1) axis_1(2) 0 400]);
grid;
hold on;
%plot(range(:,1),T*ones(1,length(r1)),'--');
plot(T*ones(1,axis_1(2)),'--');
hold off;
s=sprintf('smoothed r1 ratio - order %d median filter', MFO);
if (titles)
title(s);
end;
subplot(313);
stairs(range(:,1),sonorant);
grid on;
axis([axis_1(1) axis_1(2) -1 2]);
if (titles)
title('sonorant decision (binary)');
end;
drawnow;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% save to hard disk
son_score = sonorant;
s=sprintf('saving ./%s_SONscore to disk ...', name);
disp(s);
s=sprintf('save temp/%s_SONscore son_score', name);
eval(s);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% clean up time
clear MFO file_string residue
clear N gain s
clear PLT h signal
clear T i son_score
clear VUS_voicetype m sonorant
clear a mag start1
clear axis_1 n start2
clear b stop1
clear power stop2
clear cofa r1 voicetype
clear e1 range w
clear e2 res_nrg titles
s=sprintf('clear %s',name);
eval(s);
clear s
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -