erg5.m

来自「这是一个用于语音信号处理的工具箱」· M 代码 · 共 832 行 · 第 1/3 页

M
832
字号
function [err_erg5,area,leng]=erg5(art_set,wh,hk1,g1k,currf,form_tar)
% get articulatory position

	global BACK_COLOR TEXT_COLOR main_h main1_h;
	velum_set=0;
%	wh=1.34651;
%	g1k=0.82081;
%	hk1=1.3431;

%       art_set=[300,600,600,400,600,200,500,0,400]';
%       art_set(1)=get(m4_1_h,'Value');
%       art_set(2)=get(m4_3_h,'Value');
%       art_set(3)=get(m4_5_h,'Value');
%       art_set(4)=get(m4_7_h,'Value');
%       art_set(5)=get(m4_9_h,'Value');
%       art_set(6)=get(m4_11_h,'Value');
%       art_set(7)=get(m4_13_h,'Value');
%       art_set(8)=get(m4_15_h,'Value');
%       art_set(9)=get(m4_17_h,'Value');

% drawsagi.c

	W_x = 2.045;
	W_y = 5.04;
	F_x = 0;
	F_y = 6.5;
	sj = 5.85;      % 5.65
	M_x = 3.7;
	M_y = 5.82;
	N_x = 5.05;
	N_y = 5.33;
	U_x = 5.6;
	U_y = 5.15;
	rt = 0.9;
	G2_x = W_x;
	G2_y = W_y - 3.42622;
	G_x = G2_x + 0.26257;
	G_y = G2_y;
	G1_x = G2_x + 0.6;
	G1_y = G2_y - 0.9933;
	K_x = G1_x + g1k;
	K_y = G1_y;
	H_x = W_x + wh;
	H_y = G1_y + hk1;
	H1_x = H_x - 0.25;
	H1_y = H_y;
	H2_x = H1_x;
	H2_y = H1_y - 0.35;
	Vs_x = 2.045;
	Vs_y = 5.09;     % 5.31553
	thetav = 2.06813;

	alf = angle(M_x,M_y,N_x,N_y);
	q = (distance(M_x,M_y,N_x,N_y) / 2) / sin(alf);
	[cmn_x,cmn_y] = polar2re(M_x,M_y,q,-pi/2.0);

	thetaj = (-(art_set(currf,7)/100.0+15.0)*pi)/180.0;  %tetj3 */
	JAW_x = F_x + sj * cos(thetaj);
	JAW_y = F_y + sj * sin(thetaj);
	PS_x = JAW_x - 0.2;  % 0.3 */
	PS_y = JAW_y - 0.2;
	PF_x = PS_x - 0.2;
	PF_y = PS_y;

	if (velum_set==0) 
		mv = art_set(currf,8)/1000.0;
		V_x = Vs_x - mv * cos(thetav);
		V_y = Vs_y - mv * sin(thetav);
	end
	alf = angle(M_x,M_y,V_x,V_y);
	bet = pi/2.0 - alf;
	angv = 2.0*alf - pi/2.0;
	q = distance(V_x,V_y,M_x,M_y) /2.0 / cos(bet);
	[cv_x,cv_y] = polar2re(V_x,V_y, q, angv);

	tongc_x = (art_set(currf,1)*0.0014) + 2.9;
	tongc_y = (art_set(currf,2)*0.0014) + 3.55;
	thetab = thetaj - 4.55531;  %tetb */
	[B_x,B_y] = polar2re(tongc_x,tongc_y, rt, thetab);
	ud = distance(tongc_x,tongc_y,H_x,H_y);
	sd = sqrt(abs(ud*ud - rt*rt));
	al = atan(rt/sd) + angle(tongc_x,tongc_y,H_x,H_y);
	[DL_x,DL_y] = polar2re(H_x,H_y, sd, al);
	sc = distance(F_x,F_y, tongc_x,tongc_y);
	[mm_x,mm_y] = polar2re(H_x,H_y, sd/2.0, al);

	hy=(art_set(currf,9) *0.0006) - 0.3;
	if (hy == 0.0) 
		PP_x = mm_x;
		PP_y = mm_y;
	end
	if (hy < 0)
		al = al + pi/2.0;
		[PP_x,PP_y] = polar2re(mm_x,mm_y, -hy, al);
	end
	if (hy > 0)
		al = al - pi/2.0;
		[PP_x,PP_y] = polar2re(mm_x,mm_y, hy, al);
	end
	ud = distance(tongc_x,tongc_y,PP_x,PP_y);
	sd = sqrt(abs(ud*ud - rt*rt));
	al = atan(rt/sd) + angle(tongc_x,tongc_y,PP_x,PP_y);
	[DL_x,DL_y] = polar2re(PP_x,PP_y, sd, al);
	[pme_x,pme_y] = hyy(H_x,H_y,PP_x,PP_y,DL_x,DL_y);

	T_x = (art_set(currf,3)*0.002) + 3.7;  %3.7 */
	T_y = (art_set(currf,4)*0.0013) + 4.5;  % 4.5 */
	[c1_x,c1_y] = marc(T_x,T_y,B_x,B_y, 1.5);
	[c2_x,c2_y] = marc(PF_x,PF_y,T_x,T_y, 1.5);

	dy = (U_y - JAW_y)/2.0;
	L_x = U_x;
	L_y = U_y - dy;
	L3_x = L_x;
	ppl = art_set(currf,5) * 0.00065;
	lippro = ppl + L3_x;
	hl = art_set(currf,6) * (5.52 - L_y) / 1000.0;
	lipopen = hl + L_y;
	L3_y = lipopen;
	L5_x = lippro;
	L5_y = L3_y;
	L6_x = JAW_x;
	L6_y = JAW_y + 5.15 - L3_y;
	L7_x = L6_x + L5_x - 5.6;
	L7_y = L6_y;

% sagigrid.c

	kh6 = distance(H2_x,H2_y, K_x,K_y)/6.0;
	akh = angle(H2_x,H2_y, K_x,K_y);
	[Z3_x,Z3_y] = polar2re(K_x,K_y, kh6, akh);
	[Z5_x,Z5_y] = polar2re(Z3_x,Z3_y, kh6, akh);
	[Z7_x,Z7_y] = polar2re(Z5_x,Z5_y, kh6, akh);
	[H3_x,H3_y] = polar2re(Z7_x,Z7_y, kh6, akh);
	[Z11_x,Z11_y] = polar2re(H3_x,H3_y, kh6, akh);
	[Z15_x,Z15_y] = midpoint(H1_x,H1_y, H2_x,H2_y);
	Z18_x = W_x;
	Z18_y = H_y;
	Y14_x = W_x;
	Y14_y = H2_y;
	Y16_x = W_x;
	Y16_y = Z15_y;
	Y12_x = W_x;
	Y12_y = Z11_y;
	Y10_x = W_x;
	Y10_y = H3_y;
	Y8_x = W_x;
	Y8_y = Z7_y;
	Y6_x = W_x;
	Y6_y = Z5_y;
	Y4_x = W_x;
	Y4_y = Z3_y;
	[Z4_x,Z4_y] = intersec(Y4_x,Y4_y, Z3_x,Z3_y, G_x,G_y,G1_x,G1_y);
	[Z6_x,Z6_y] = intersec(Y6_x,Y6_y, Z5_x,Z5_y, G_x,G_y,G1_x,G1_y);
	[Z8_x,Z8_y] = intersec(Y8_x,Y8_y, Z7_x,Z7_y, G_x,G_y,G1_x,G1_y);
	[Z10_x,Z10_y] = intersec(Y10_x,Y10_y, H3_x,H3_y, G_x,G_y,G1_x,G1_y);
	[Z12_x,Z12_y] = intersec(Y12_x,Y12_y, Z11_x,Z11_y, G_x,G_y,G1_x,G1_y);
	[Z14_x,Z14_y] = intersec(Y14_x,Y14_y, H2_x,H2_y, G_x,G_y,G1_x,G1_y);
	[Z16_x,Z16_y] = intersec(Y16_x,Y16_y, Z15_x,Z15_y, G2_x,G2_y, Z18_x,Z18_y);
	if (Z4_x == 0.000)
		Z4_x = Y4_x;
		Z4_y = Y4_y;
	end
	if (Z6_x == 0.000)
		Z6_x = Y6_x;
		Z6_y = Y6_y;
	end
	if (Z8_x == 0.000)
		Z8_x = Y8_x;
		Z8_y = Y8_y;
	end
	if (Z10_x == 0.000)
		Z10_x = Y10_x;
		Z10_y = Y10_y;
	end
	if (Z12_x == 0.000)
		Z12_x = Y12_x;
		Z12_y = Y12_y;
	end
	if (Z14_x < G_x)
		Y18_x = G2_x;
		Y18_y = H2_y;
		[Z14_x,Z14_y] = intersec(G2_x,G2_y, Z18_x,Z18_y, H2_x,H2_y, Y18_x,Y18_y);
	end
	if (Z14_x == 0.000)
		Z14_x = Y14_x;
		Z14_y = Y14_y;
	end
	if (Z16_x == 0.000)
		Z16_x = Y16_x;
		Z16_y = Y16_y;
	end
	if (Z16_x > W_x)
		[Z16_x,Z16_y] = midpoint(Z18_x,Z18_y, G2_x,G2_y);
	end
%       if (Z15_y < G_y) 
%               Y18_x = G2_x;
%               Y18_y = Z15_y;
%               Z16 = intersec(Y18_x,Y18_y, Z15_x,Z15_y, G_x,G_y,G1_x,G1_y);
%       end

	Z = angle(M_x,M_y, cmn_x,cmn_y);
	Q = (Z - angle(N_x,N_y, cmn_x,cmn_y))/11.0;
	E = distance(cmn_x,cmn_y, N_x,N_y);
	[P91_x,P91_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*1.0));
	[P43_x,P43_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*2.0));
	[P45_x,P45_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*3.0));
	[P47_x,P47_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*4.0));
	[P49_x,P49_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*5.0));
	[P51_x,P51_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*6.0));
	[P53_x,P53_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*7.0));
	[Z55_x,Z55_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*8.0));
	[Z57_x,Z57_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*9.0));
	[Z59_x,Z59_y] = polar2re(cmn_x,cmn_y, E, Z-(Q*10.0));
	[N7_x,N7_y] = midpoint(N_x,N_y, U_x,U_y);
	[N3_x,N3_y] = midpoint(N_x,N_y, N7_x,N7_y);
	[N1_x,N1_y] = midpoint(N_x,N_y, N3_x,N3_y);
	[N5_x,N5_y] = midpoint(N3_x,N3_y, N7_x,N7_y);
	[N11_x,N11_y] = midpoint(N7_x,N7_y, U_x,U_y);
	[N9_x,N9_y] = midpoint(N7_x,N7_y, N11_x,N11_y);
	[N13_x,N13_y] = midpoint(N11_x,N11_y, U_x,U_y);
	au = angle(N_x,N_y, U_x,U_y) + pi/2.0;
	L60_x = 3.583;
	L60_y = 2.558;
	[L0_x,L0_y] = polar2re(N_x,N_y, 3.0, au);
	lu_x = U_x;
	lu_y = L0_y;
	[L8_x,L8_y] = midpoint(L0_x,L0_y, lu_x,lu_y);   
	[LN4_x,LN4_y] = midpoint(L0_x,L0_y, L8_x,L8_y); 
	[L2_x,L2_y] = midpoint(L0_x,L0_y, LN4_x,LN4_y); 
	[LN6_x,LN6_y] = midpoint(L8_x,L8_y, LN4_x,LN4_y);       
	[L12_x,L12_y] = midpoint(L8_x,L8_y, lu_x,lu_y); 
	[L10_x,L10_y] = midpoint(L8_x,L8_y, L12_x,L12_y);
	L14_x = N13_x;
	L14_y = L0_y;   
	P13_x = W_x;
	P13_y = PP_y;
	P17_x = W_x;
	P17_y = DL_y;
	tdl = angle(PP_x,PP_y, pme_x,pme_y);
	ry = distance(pme_x,pme_y, H_x,H_y);
	dltv = 0.25*(tdl - angle(H_x,H_y, pme_x,pme_y));
	if (hy > 0.0 & pme_y <= PP_y & pme_y > H_y)
		dltv = dltv + pi/2.0;
	end
	[P84_x,P84_y] = polar2re(pme_x,pme_y, ry, tdl-(dltv*1.0));
	[P12_x,P12_y] = polar2re(pme_x,pme_y, ry, tdl-(dltv*2.0));
	[P82_x,P82_y] = polar2re(pme_x,pme_y, ry, tdl-(dltv*3.0));
	[P16_x,P16_y] = midpoint(PP_x,PP_y, DL_x,DL_y);
	[P86_x,P86_y] = midpoint(PP_x,PP_y, P16_x,P16_y);
	[R2_x,R2_y] = midpoint(PP_x,PP_y, P86_x,P86_y);
	[AS2_x,AS2_y] = midpoint(P16_x,P16_y, P86_x,P86_y);
	[P88_x,P88_y] = midpoint(DL_x,DL_y, P16_x,P16_y);
	[AS4_x,AS4_y] = midpoint(P16_x,P16_y, P88_x,P88_y);
	[R4_x,R4_y] = midpoint(DL_x,DL_y, P88_x,P88_y);
	P81_x = W_x;
	P81_y = P82_y;
	P11_x = W_x;
	P11_y = P12_y;
	P83_x = W_x;
	P83_y = P84_y;
	R1_x  = W_x;
	R1_y  = R2_y;
	P85_x = W_x;
	P85_y = P86_y;
	AS1_x = W_x;
	AS1_y = AS2_y;
	P15_x = W_x;
	P15_y = P16_y;
	AS3_x = W_x;
	AS3_y = AS4_y;
	P87_x = W_x;
	P87_y = P88_y;
	R3_x  = W_x;
	R3_y  = R4_y;
	Z = angle(V_x,V_y, cv_x,cv_y);
	Q = (Z - angle(M_x,M_y, cv_x,cv_y))/12.0;
	E = distance(cv_x,cv_y, M_x,M_y);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?