⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bysj7.m

📁 CVSD语音压缩的算法和程序流程.量阶δ能够自动地随输入信号平均斜率的大小而连续变化,译码输出信号实现了对输入信号的理想逼近,最后在可编程逻辑器件(FPGA)中实现了CVSD调制功能。
💻 M
字号:
clear;
t=[0:1/80000:79999/80000];
f11=wavread('sy7.wav',80000)*10;
f12=f11';
f1=f12(1,:);
n=length(f1);
%f1=0.5*sin(2*pi*800*t);
%f0=800 hz;
%fs=80000 hz;
figure
subplot(3,1,1);
plot(t,f1);
axis([0 600/80000 -1 1])
g=0; m=pi/10; m0=pi/20;
y=zeros(1,80000);
for i=1:1:80000
    e(i)=f1(i)-g;
       if e(i)<=0
          y(i)=0;
       else
          y(i)=1;
       end
 %---------------------------------------------
     if i<3
        if y(i)==0
          g=g-m;
        else
          g=g+m;
        end
     else
        if ((y(i)==y(i-1))&(y(i-1)==y(i-2)))%&(y(i-2)==y(i-3))
            if y(i)==0
               m=m+m0;
               g=g-m;
            else
               m=m+m0;
               g=g+m;
            end
        else
             if y(i)==0
                g=g-m;
             else
               g=g+m;
             end
        end
     end     
       
end    

%------------------------------ 解码 --------------------------------------------
gg=zeros(1,80000);
g=0;
for j=1:80000
    gg(j)=g;
    if j<3
        if y(j)==0
          g=g-m;
        else
          g=g+m;
        end
     else
        if ((y(j)==y(j-1))&(y(j-1)==y(j-2)))%&(y(i-2)==y(i-3))
            if y(j)==0
               m=m+m0;
               g=g-m;
            else
               m=m+m0;
               g=g+m;
            end
        else
             if y(j)==0
                 m=m;
                 g=g-m;
             else
                 m=m;
                 g=g+m;
             end
        end
     end     
       
end    
tt=0:1/80000:79999/80000;
subplot(3,1,2)
plot(tt,gg)
axis([0 600/80000 -1 1])
%x=hanning(80000);
%b=fir1(303,0.075);
[b,a]=butter(8,0.2);

gg2=filter(b,a,gg);
subplot(3,1,3)
plot(tt,gg2)
axis([0 600/80000 -1.5 1.5])
%----------------------------------------------------------
b_f1=20*log10(abs(fft(f1(1:1024),1024))+eps);
b_gg=20*log10(abs(fft(gg(1:1024),1024))+eps);
b_gg2=20*log10(abs(fft(gg2(1:1024),1024))+eps);
f=(0:511)*80000/1024;

figure
subplot(3,1,1)
plot(f,b_f1(1:512))
subplot(3,1,2)
plot(f,b_gg(1:512))
subplot(3,1,3)
plot(f,b_gg2(1:512))

⌨️ 快捷键说明

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