www.pudn.com > CELP.ZIP > exc_syn.m
function sub_e0=exc_syn(ccode,cgain)
fm(1,:)=[1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0];
fm(2,:)=[1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0];
fm(3,:)=[1 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0];
fm(4,:)=[1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0 0 0 0];
fm(5,:)=[-1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0];
fm(6,:)=[-1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 1 0 0 0 0];
fm(7,:)=[-1 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0];
fm(8,:)=[-1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0];
if fix((ccode-1)/8)==0
if rem(ccode,8)~=0
sub_e0=cgain*[fm(1,:),fm(1,:),fm(rem(ccode,8),:)];
else
sub_e0=cgain*[fm(1,:),fm(1,:),fm(8,:)];
end
elseif fix((ccode-1)/8)<8
if rem(ccode,8)~=0
sub_e0=cgain*[fm(1,:),fm(fix(ccode/8)+1,:),fm(rem(ccode,8),:)];
else
sub_e0=cgain*[fm(1,:),fm(fix(ccode/8),:),fm(8,:)];
end
else
if rem(ccode,8)~=0
sub_e0=cgain*[fm(fix(ccode/8^2)+1,:),fm(fix(rem(ccode,8^2)/8)+1,:),fm(rem(ccode,8),:)];
elseif rem(ccode,8^2)~=0
sub_e0=cgain*[fm(fix(ccode/8^2)+1,:),fm(fix(rem(ccode,8^2)/8),:),fm(8,:)];
else
sub_e0=cgain*[fm(fix(ccode/8^2),:),fm(8,:),fm(8,:)];
end
end