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