💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞💞💞💞💞💞💞💞💞💥💥💥💥💥💥💥💥
🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚤🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
🔊博主简介:985研究生,Matlab领域科研开发者;
🏫个人主页:Matlab领域
🏆代码获取方式:
CSDN Matlab领域—代码获取方式
🚅座右铭:路漫漫其修远兮,吾将上下而求索。
更多Matlab信号处理仿真内容点击👇
①Matlab信号处理(高阶版)
②付费专栏Matlab信号处理(进阶版)
③付费专栏Matlab信号处理(初级版)
⛳️关注CSDN Matlab领域,更多资源等你来!!
⛄一、simulink模拟信号数字传输(先PCM编码后解码还原)
1 模拟信号抽样过程
1.1 抽样原理
抽样是按照等时间等间隔进行的,模拟信号被抽样后成为抽样信号,把该模拟信号经过抽样后还应当包含原信号中所有信息,也就是说能无失真的恢复原模拟信号。抽样的抽样速率下限是由抽样定理确定的。抽样定理告诉我们,若要传输模拟信号,不一定要传输模拟信号本身,可以只传输抽样定理得到的抽样值。因此该定理就为模拟信号的数字化传输提供了理论基础。
1.2 低通型连续信号的抽样
1.3 带通信号的抽样定理
1.4 抽样过程的设计与仿真分析
2 模拟信号量化过程
2.1 量化原理
量化就是把经过抽样的得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示。量化的结果使抽样信号变成量化信号,其值是离散的。故量化信号已经是数字信号了,可以看成是多进制脉冲信号。量化在连续抽样值和量化值之间产生误差,称为量化误差。
2.2 均匀量化
如果用相等的量化间隔对抽样得到的信号做量化,那么这种量化方法称为均匀量化。
工作原理:在均匀量化中,每个量化区间的量化电平取在各区间的中点。其量化间隔取决于输入信号的变化范围和量化电平数。若设输入信号的最小值和最大值分别为a和b表示,量化电平数为M,则均匀量化时的量化间隔为=(b-a)/M量化器输出为x=x1。
量化器的输入与输出关系可用量化特性来表示,语言编码常采用上图所示输入—输出特性的均匀量化器,当输入m在量化区间变化时,量化电平是该区间的中点值。相应的量化误差与输入信号幅度m之间的关系曲线如图4-6所示.
过载区的误差特性是线性增长的,因而过载误差比量化误差大,对重建信号有很坏的影响。在设计量化器时,应考虑输入信号的幅度范围,是信号幅度不进入过载区,或者只能以极小的概率进去过载区。上述的量化误差通常称为绝对量化误差,它在每一个量化间隔内的最大值均为。均匀量化广泛应用于现行A/D变换接口,例如在计算机中,M为A/D变化的位数,常用的有8位、12 位、16位等不同精度。
2.3 非均匀量化
非均匀量化的方法通常是将抽样值通过压缩再进行均匀量化。通常使用的压缩器中,大多数采用对数式压缩。广泛采用的两种压缩率是u压缩率和A压缩率。
3 PCM编译码系统
3.1脉冲编码调制(PCM)
若信源输出的是模拟信号,如电话机传送的语音信号等,要使其在数字信道中传输,必须在发送端将模拟信号转换成数字信号即进行A/D变换,在接收端要进行D/A变换。对语音信号最典型的数字编码就是脉冲编码调制(PCM)。脉冲编码调制,就是将模拟信号的抽样量化值转换成二进制码组的过程。
PCM系统的原理,输入的模拟信号经抽样、量化、编码后变换成数字信号,经信道传送到接收端的译码器,由译码器还原出抽样值,再经过低通滤波器滤出模拟信号。其中,量化与编码的组合成为AD变换器;而译码与低通滤波的组合成为D/A变换。
3.1 PCM编译码系统设计与仿真分析
3.1.1 PCM编码器设计
3.1.2.PCM解码器设计
3.1.3 有干扰信号的PCM编码与解码
为了验证PCM编译码系统的特性,设计了一个有干扰的编译码过程。
⛄二、部分源代码
clc;
clear all
close all;
%data Source parameter setting
Fc=2pi10000;
ph=pi/4;
Fd=2pi20000;
Fs = 220000;
t = (0:1/Fs:1);
signal = sin(Fdt);
var.time =t’;
var.signals.values = signal’;
% var.signals.dimensions=1;
S=1;%1 sine wave -1 data.mat (20KHz)
%channel parameter setting
SNR=20;
if S==1
fs=2Fc/2/pi;
FB=2Fc;
else
fs=2Fd/2/pi;
FB=2Fd;
end
f_ch=50000;
Tc=1/fs;
if f_ch<2*Fc/2/pi;
errordlg(‘Channel bandwidth is too low!’);
return;
end
sim(‘signaltrans’); %send data
be=mean(BitErrorRate);%BirErrorRate
if be> 0.1 %BitErrorRate too high and resend data
msgbox('BitErrorRate too high and resend data!','resend data');
pause(1);
sim('signaltrans');
end
%time
snr=10^(SNR/10);
C=f_chlog2(1+snr);
sim_time=1;
data=8fs*sim_time;
time=data/C
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]李晓峰.模拟信号与数字信号的区别与联系[D].2017