# 基于MATLAB的PCM的编码译码仿真

## 一、实验目的

1.熟悉PCM原理

2.掌握编写PCM程序的要点

3.掌握使用MATLAB调制仿真的要点

## 二、实验内容

(1)根据PCM (脉冲编码调制)原理，设计源程序代码。

(2)通过MATLAB软件仿真给定模拟信号编码后的波形。

(3)对比原始信号波形和译码后的波形。

1.脉冲编码调制

2.抽样

## 四、实验代码

T=0.002;
t=-0.1:T:0.1;
xt=cos(2*pi*30*t)+sin(2*pi*65*t);
fs=500;
sdt=1/fs;
t1=-0.1:sdt:0.1;
st=cos(2*pi*30*t)+sin(2*pi*65*t);
figure(1);
subplot(3,1,1);
plot(t,xt);title('原始信号');
grid on
subplot(3,1,2);
stem(t1,st,'.');
title('量化信号');
title('抽样信号');
grid on
n=length(st);
M=max(st);
C=(st/M)*2048;
code=zeros(1,8);
for i=1:n
if C(i)>=0
code(i,1)=1;
else
code(i,1)=0;
end
if abs(C(i))>=0&&abs(C(i))<16
code(i,2)=0;code(i,3)=0;code(i,4)=0;step=1;start=0;
else if 16<=abs(C(i))&&abs(C(i))<32
code(i,2)=0;code(i,3)=0;code(i,4)=1;step=1;start=16;
else if 32<=abs(C(i))&&abs(C(i))<64
code(i,2)=0;code(i,3)=1;code(i,4)=0;step=2;start=32;
else if 64<=abs(C(i))&&abs(C(i))<128
code(i,2)=0;code(i,3)=1;code(i,4)=1;step=4;start=64;
else if 128<=abs(C(i))&&abs(C(i))<256
code(i,2)=1;code(i,3)=0;code(i,4)=0;step=8;start=128;
else if 256<=abs(C(i))&&abs(C(i))<512
code(i,2)=1;code(i,3)=0;code(i,4)=1;step=16;start=256;
else if 512<=abs(C(i))&&abs(C(i))<1024
code(i,2)=1;code(i,3)=1;code(i,4)=0;step=32;start=512;
else if 1024<=abs(C(i))&&abs(C(i))<2048
code(i,2)=1;code(i,3)=1;code(i,4)=1;step=64;start=1024;
end
end
end
end
end
end
end
end
B=floor((abs(C(i))-start)/step);
t=dec2bin(B,4)-48;
code(i,5:8)=t(1:4);
end
code=reshape(code',1,8*n);
subplot(313);
stem(code,'.');
axis([1 64 0 1]);
title('编码信号');
grid on
y=awgn(code,5);
figure(2);
stem(y,'.');axis([1 64 0 3]);
title('叠加加性高斯信号的信号');
n=length(code);
code=reshape(code',8,n/8)';
slot(1)=0;slot(2)=32;
slot(3)=64;slot(4)=128;
slot(5)=256;slot(6)=512;
slot(7)=1024;slot(8)=2048;
step(1)=2;step(2)=2;step(3)=4;step(4)=8;
step(5)=16;step(6)=32;step(7)=64;step(8)=128;
for i=1:n/8
ss=2*code(i,1)-1;
tmp=code(i,2)*4+code(i,3)*2+code(i,4)+1;
st=slot(tmp);
dt=(code(i,5)*8+code(i,6)*4+code(i,7)*2+code(i,8))*step(tmp)+0.5*step(tmp);
v=1;
r(i)=ss*(st+dt)/4096*v;
end
T=0.002;
t=-0.1:T:0.1;
figure(3);
subplot(111);
plot(t,r);
title('译码后的原始信号');
grid on


## 五、实验结果

|
2天前
|

m基于Qlearning强化学习的小车倒立摆控制系统matlab仿真

16 6
|
2天前
|

**摘要：** 使用MATLAB2022a，基于UKF的电池SOC估计仿真比较真实值，展示非线性滤波在电动车电池管理中的效用。电池电气模型描述电压、电流与SoC的非线性关系，UKF利用无迹变换处理非线性，通过预测和更新步骤实时估计SoC，优化状态估计。尽管UKF有效，但依赖准确模型参数。
12 0
|
2天前
|

**摘要** 本文档介绍了在MATLAB2022a中对无线传感器网络的VBF和DBR路由协议的性能仿真，关注能量消耗和节点存活。VBF协议依赖于节点的地理位置，采用源路由，通过矢量和管道路由选择转发节点。DBR协议则运用贪婪算法，基于节点深度决定转发，以接近水面为目标。两协议均考虑能量效率，但可能导致不必要的数据传输和重复分组，需优化策略以适应密集网络和避免冲突。
13 0
|
5天前
|

**摘要：** 使用禁忌搜索算法解决旅行商问题（TSP），在MATLAB2022a中实现路径规划，显示优化曲线与路线图。TSP寻找最短城市访问路径，算法通过避免局部最优，利用禁忌列表不断调整顺序。关键步骤包括初始路径选择、邻域搜索、解评估、选择及禁忌列表更新。过程示意图展示搜索效果。
15 1
|
5天前
|

### 课题概述 分析DDS（数字频率合成器）量化性能的MATLAB仿真，研究累加器、截位和DAC位宽对频谱的影响。 ### 核心程序 在MATLAB 2022a中，使用相位映射、量化码本和频偏分析函数，比较了10bit DAC位宽截取、无截取以及相位位宽截取的频谱特性。 ### 系统原理 DDS利用相位累加器、波形查找表、DAC和LPF生成精确频率信号。相位累加器的位数决定频率分辨率和杂散性能，量化和非线性影响信号质量。 ### 分析重点 频率分辨率与相位累加器位数相关，杂散和噪声性能受相位截断、幅度量化及DAC非线性影响。提高这些参数能提升DDS输出质量。
8 1
|
5天前
|

markdown 探索烟草香型分类：使用Matlab2022a中的BP神经网络结合小波变换。小波分析揭示香气成分的局部特征，降低维度，PCA等用于特征选择。BP网络随后处理这些特征，以区分浓香、清香和中间香型。 
14 1
|
6天前
|

13 0
|
6天前
|

m基于PSO-GRU粒子群优化长门控循环单元网络的电力负荷数据预测算法matlab仿真

15 0
|
7天前
|

22 0
|
7天前
|

YOLOv2算法应用于昆虫检测，提供实时高效的方法识别和定位图像中的昆虫，提升检测精度。核心是统一检测网络，预测边界框和类别概率。通过预测框尺寸估算昆虫大小，适用于农业监控、生态研究等领域。在matlab2022A上运行，经过关键升级，如采用更优网络结构和损失函数，保证速度与精度。持续优化可增强对不同昆虫的检测能力。![image.png](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_e760ff6682a3420cb4e24d1e48b10a2e.png)
15 0