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

📄 deltam.m

📁 audio compression matlab code
💻 M
字号:
%*************************************************************
% Acest program simuleaza modulatia delta liniara si adaptiva.
%*************************************************************


clear all
dt=0.00015;			% perioada de esantionare;
t=0:dt:.02;			% axa timpului;
d0=0.055;                       % valoarea minima a cuantei;
tc=0.004;tp=0.01;td=0.004;	
k=length(t);                    % numarul de esantioane;
x=zeros(k,1);                   % semnal initial;
k1=menu('semnal','triunghiular','dinte de fierastrau',...
'dreptunghiular','sinusoidal','trapezoidal','semn');
k2=menu('algoritm','Song','Jayant','delta liniar');

% semnal triunghiular;

    if k1==1
        for r=2:k,                    
          if rem(t(r),0.01)<0.005;
              x(r)=x(r-1)+.1;
          else
              x(r)=x(r-1)-.1;
          end;
        end;
    
% semnal dinte de fierastrau;
    
    elseif k1==2,
       x=500*rem(t,.01); 		

% semnal dreptunghiular;
 
    elseif k1==3,
       x=sign(sin(2*pi*50*t)); 	

% semnal sinusoidal;

    elseif k1==4, 
       x=sin(2*pi*100*t); 		
 
% semnal trapezoidal;

    elseif k1==5,
        for r=2:k,
          if (t(r)>0)&(t(r)<tc),
             x(r)=t(r)/tc;
          elseif (t(r)>=tc)&(t(r)<(tc+tp)),
             x(r)=1;
          elseif (t(r)>=(tc+tp))&(t(r)<(tc+tp+td)),
             x(r)=1-((t(r)-(tc+tp))/td);
          else 
             x(r)=0;
          end;
        end;

% semnal;

    else ;
       x=sin(2*pi*100*t)+500*rem(t,.02);
    end;

y=zeros(k,1);
del=d0;
y(1)=0;
b_new=0;

for r=2:k,
    if     x(r)>y(r-1),
       b_old=b_new;
       b_new=1;
    elseif x(r)<y(r-1), 
       b_old=b_new;
       b_new=0;
    end;

% algoritmul Song;

    if k2==1, 
        if b_old==b_new,
           del=del+d0;
        else 
           del=del-d0;
        end;

% algoritmul Jayant;

    elseif k2==2,
        if b_old==b_new,
           del=del*2;
        else 
           del=del/2;
        end;

% algoritmul delta liniar;

    else 
        del=del+dt;
    end;

% semnal modulat;

    if x(r-1)>y(r-1),
        y(r)=y(r-1)+del;
    else 
        y(r)=y(r-1)-del;
    end;
end;

% reprezentarea grafica;

[dt,dy]=stairs(t,y);
plot(t,x,'g.',dt,dy,'r-');

⌨️ 快捷键说明

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