matlab打开pcm文件格式,用MATLAB实现PCM编码

PCM编码程序

%修改抽样间隔和程序最后两行

%可以观察量化输入输出关系

n=input('请输入量化级数,k=[8]');

if isempty(n),

n=8;

end

%产生题目要求的函数

endtime = 2; %结束时间

dt = 0.1; %抽样间隔

t = 0:dt:endtime;

a = zeros(size(t)); %产生一个长度为N的全0序列

for tt=1:1/dt

a(tt+[0:endtime/2-1]*(2/dt))=t(tt); %t when 0 <= t < 1

end

for tt=1/dt+1:2/dt

a(tt+[0:endtime/2-1]*(2/dt))=2-t(tt); % -t+2 when 1 <= t < 2 end;

%A率非线性

A = 87.56;

amax=max(abs(a));

c = zeros(size(a));

for i = 1:length(a);

if((a(i)/amax)<=1/A)

c(i) = A*a(i)/(1+log(A));

end

if((a(i)/amax)>1/A)

c(i) = (1+log(A*a(i)))/(1+log(A));

end

end

%均匀量化

c_quan=c;

b_quan=c_quan;

d=1/n;%量化间隔

q=d.*[1:n];

q=q-d/2;%量化电平

for i=1:n

%定位第i个量化间隔码子

c_quan(find((q(i)-d/2<=c_quan) & (c_quan<=q(i)+d/2)))=...

q(i).*ones(1,length(find((q(i)-d/2<=c_quan)&(c_quan<=q(i)+d/2)))); %赋值为相应的量化电平

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值