pcm 的matlab实现未编码、编码、译码波形和不同幅度的量化信噪比,我的程序有问题,
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/19 14:06:13
pcm 的matlab实现未编码、编码、译码波形和不同幅度的量化信噪比,我的程序有问题,
clear all;
close all;
t=0:0.01:10; %定义时间抽样点
vm1=-70:1:0; %输入的信号幅度的db值
vm=10.^(vm1/20); %输入信号幅度
figure(1);
for k=1:length(vm)
for m=1:2
x=vm*sin(2*pi*t+2*pi*rand(t)); %输入语音信号
v=1;
xx=x/v;
sxx=floor(xx*4096);
y=pcm_encode(sxx); %PCM编码
yy=pcm_decode(y,v); %PCM译码后信号幅值
nq(m)=sum((x-yy)*(x-yy))/length(x);%噪音功率
sq(m)=mean(yy.^2); %信号均值
snr(m)=(sq(m)/nq(m)); %信噪比
drawnow
subplot(211)
plot(t,x);
title('采样序列'); %画出采样序列的图形
subplot(212)
plot(t,yy);
title('解码序列'); %画出PCM解码后的序列图
end
snrq(k)=10*log10(mean(snr)); %量化信噪比
end
figure(2)
plot(vm1,snrq);
axis([-60 0 0 60]); %X轴范围是(-60,0)Y轴范围是(0,60)
grid;
function [out]=pcm_encode(x); %定义A率13折线压缩特性
n=length(x);
for i=1:n
if x(i)>0
out(i,1)=1; %代表正值
else
out(i,1)=0; %代表负值
end
if abs(x(i))>=0&abs(x(i))
clear all;
close all;
t=0:0.01:10; %定义时间抽样点
vm1=-70:1:0; %输入的信号幅度的db值
vm=10.^(vm1/20); %输入信号幅度
figure(1);
for k=1:length(vm)
for m=1:2
x=vm*sin(2*pi*t+2*pi*rand(t)); %输入语音信号
v=1;
xx=x/v;
sxx=floor(xx*4096);
y=pcm_encode(sxx); %PCM编码
yy=pcm_decode(y,v); %PCM译码后信号幅值
nq(m)=sum((x-yy)*(x-yy))/length(x);%噪音功率
sq(m)=mean(yy.^2); %信号均值
snr(m)=(sq(m)/nq(m)); %信噪比
drawnow
subplot(211)
plot(t,x);
title('采样序列'); %画出采样序列的图形
subplot(212)
plot(t,yy);
title('解码序列'); %画出PCM解码后的序列图
end
snrq(k)=10*log10(mean(snr)); %量化信噪比
end
figure(2)
plot(vm1,snrq);
axis([-60 0 0 60]); %X轴范围是(-60,0)Y轴范围是(0,60)
grid;
function [out]=pcm_encode(x); %定义A率13折线压缩特性
n=length(x);
for i=1:n
if x(i)>0
out(i,1)=1; %代表正值
else
out(i,1)=0; %代表负值
end
if abs(x(i))>=0&abs(x(i))
我修改了一下,能够运行了,不知道是不是你想要的结果?
clear all;
close all;
t=0:0.01:10; %定义时间抽样点
%vm1=-70:1:0; %输入的信号幅度的db值
vm1=linspace(-70,0,1001);
vm=10.^(vm1/20); %输入信号幅度
figure(1);
for k=1:length(vm)
for m=1:2
%x=vm*sin(2*pi*t+2*pi*rand(t)); %输入语音信号
x=vm.*sin(2*pi*t); %输入语音信号
v=1;
xx=x/v;
sxx=floor(xx*4096);
y=pcm_encode(sxx); %PCM编码
yy=pcm_decode(y,v); %PCM译码后信号幅值
nq(m)=sum((x-yy).*(x-yy))/length(x);%噪音功率
sq(m)=mean(yy.^2); %信号均值
snr(m)=(sq(m)/nq(m)); %信噪比
drawnow
subplot(211)
plot(t,x);
title('采样序列'); %画出采样序列的图形
subplot(212)
plot(t,yy);
title('解码序列'); %画出PCM解码后的序列图
end
snrq(k)=10*log10(mean(snr)); %量化信噪比
end
figure(2)
plot(vm1,snrq);
axis([-60 0 0 60]); %X轴范围是(-60,0)Y轴范围是(0,60)
grid;
function out=pcm_decode(in,v);
n=length(in);
in=reshape(in',8,n/8)'; %将in值变换成8行
slot(1)=0;
slot(2)=16;
slot(3)=32;
slot(4)=64;
slot(5)=128;
slot(6)=256;
slot(7)=512;
slot(8)=1024;
step(1)=1;
step(2)=1;
step(3)=2;
step(4)=4;
step(5)=8;
step(6)=16;
step(7)=32;
step(8)=64;
for i=1:n/8
ss=2*in(i,1)-1;
tmp=in(i,2)*4+in(i,3)*2+in(i,4)+1;
st=slot(tmp);
dt=(in(i,5)*8+in(i,6)*4+in(i,7)*2+in(i,8))*step(tmp)+0.5*step(tmp);
out(i)=ss*(st+dt)/4096*v; %量化输出值
end
function [out]=pcm_encode(x); %定义A率13折线压缩特性
n=length(x);
for i=1:n
if x(i)>0
out(i,1)=1; %代表正值
else
out(i,1)=0; %代表负值
end
if abs(x(i))>=0&&abs(x(i))
clear all;
close all;
t=0:0.01:10; %定义时间抽样点
%vm1=-70:1:0; %输入的信号幅度的db值
vm1=linspace(-70,0,1001);
vm=10.^(vm1/20); %输入信号幅度
figure(1);
for k=1:length(vm)
for m=1:2
%x=vm*sin(2*pi*t+2*pi*rand(t)); %输入语音信号
x=vm.*sin(2*pi*t); %输入语音信号
v=1;
xx=x/v;
sxx=floor(xx*4096);
y=pcm_encode(sxx); %PCM编码
yy=pcm_decode(y,v); %PCM译码后信号幅值
nq(m)=sum((x-yy).*(x-yy))/length(x);%噪音功率
sq(m)=mean(yy.^2); %信号均值
snr(m)=(sq(m)/nq(m)); %信噪比
drawnow
subplot(211)
plot(t,x);
title('采样序列'); %画出采样序列的图形
subplot(212)
plot(t,yy);
title('解码序列'); %画出PCM解码后的序列图
end
snrq(k)=10*log10(mean(snr)); %量化信噪比
end
figure(2)
plot(vm1,snrq);
axis([-60 0 0 60]); %X轴范围是(-60,0)Y轴范围是(0,60)
grid;
function out=pcm_decode(in,v);
n=length(in);
in=reshape(in',8,n/8)'; %将in值变换成8行
slot(1)=0;
slot(2)=16;
slot(3)=32;
slot(4)=64;
slot(5)=128;
slot(6)=256;
slot(7)=512;
slot(8)=1024;
step(1)=1;
step(2)=1;
step(3)=2;
step(4)=4;
step(5)=8;
step(6)=16;
step(7)=32;
step(8)=64;
for i=1:n/8
ss=2*in(i,1)-1;
tmp=in(i,2)*4+in(i,3)*2+in(i,4)+1;
st=slot(tmp);
dt=(in(i,5)*8+in(i,6)*4+in(i,7)*2+in(i,8))*step(tmp)+0.5*step(tmp);
out(i)=ss*(st+dt)/4096*v; %量化输出值
end
function [out]=pcm_encode(x); %定义A率13折线压缩特性
n=length(x);
for i=1:n
if x(i)>0
out(i,1)=1; %代表正值
else
out(i,1)=0; %代表负值
end
if abs(x(i))>=0&&abs(x(i))
pcm 的matlab实现未编码、编码、译码波形和不同幅度的量化信噪比,我的程序有问题,
运用MATLAB语言,对正弦信号进行均匀PCM量化编码.产生一幅度为1,的正弦信号,用均匀PCM方法用8电平作均
急需1个关于PCM编码的MATLAB仿真实例 要有程序有图 请达人帮帮忙
均匀量化的PCM系统,若保持抽样频率为8kHz不变,而编码后的比特率由32kb/s增加到64kb/s,量化信噪比增加了(
Matlab实现PCM编码出错,求指导.
基于MATLAB的JPEG压缩编码程序
声波波形幅度的数字化称为“量化”,当量化位数为16时,拥有()个不同的量化等级
遗传算法求离散点的最值问题,离散点的编码方式是浮点编码,MATLAB如何实现交叉和变异操作?
哈夫曼树及哈夫曼编码的C程序实现(数据结构题)
求模拟话音的PCM编码的采样频率
PCM调制编码所用的是折叠二进制码,怎么理解
请问如何用C语言实现汉字和Unicode编码的转换 求程序