基于MATLAB实现2ASK调制解调仿真(结果超详细)

基于MATLAB的2ASK解调仿真(包含中间各个环节的时域波形、功率谱、频谱图、星座图和眼图、理论与仿真的误码率曲线)

目录

前言

一、2ASK调制解调过程

二、仿真结果

Ⅰ、码元信噪比eb/n0=10dB时

1、单极性不归零基带信号

2、调制后的信号(已调信号)

3、加入高斯白噪声后的信号

4、乘载波后的信号

5、低通滤波后的信号

6、星座图和眼图

Ⅱ、码元信噪比eb/n0= -10dB时

星座图和眼图

Ⅲ、码元信噪比eb/n0= 50dB时

星座图和眼图

Ⅳ、理论与仿真误码率曲线

三、仿真代码(超详细)

总结


前言

        2ASK是利用载波的幅度变化来传递信息,其相位和频率始终保持不变。近日有空研究了2ASK的调制解调全过程,在此记录以下各个步骤的仿真结果(包含中间各个环节的时域波形、功率谱、频谱图、星座图和眼图、理论与仿真的误码率曲线),以便自己回顾学习和启示他人。


提示:以下是本篇文章正文内容,希望能帮助到各位,转载请附上链接。

一、2ASK调制解调过程      

           系列文章:

基于MATLAB实现BPSK调制解调仿真(结果超详细)

基于MATLAB实现QPSK调制解调仿真(结果超详细)

基于MATLAB实现2FSK调制解调仿真(结果超详细)

基于MATLAB实现16QAM调制解调仿真(结果超详细)

2ASK调制解调原理框图如下图所示:

 实际中,解调端首先应该会有一个带通滤波器,去除噪声以及带外的信号。

        上采样可以压缩频谱宽度。

解调端的载波与调制的载波要同频同相,不然会增大误码率,这就是为什么要求同步的原因。

二、仿真结果

        首先说明一下,实际中码速率、载波频率比我仿真设置高的多,我这里设置低的原因是为了清晰地通过仿真图看出每一个步骤信号时域、频域、功率谱的变化。

Ⅰ、码元信噪比eb/n0=10dB时

        参数设定如下:

N=100000; % 码元个数

fc=10e3; % 载波信号频率

Rb=2e3; % 码速率(符号速率)

Rs=Rb; % 比特速率

sps=16; % 每个码元的采样点数

fs=Rb*sps; % 采样频率(注意fs为fc的4倍时,方可正确画出乘载波后信号的功率谱与频谱)

n=N*sps; % 总的采样点数

ts=1/fs; % 最小采样间隔

Tb=ts*sps; % 码元周期

t1=(1:N)*Tb; % 码元持续时间

t2=(1:n)*ts; % 总的持续时间

1、单极性不归零基带信号

        从图中可见信号的带宽为2KHz,与设置的码速率Rb一致。 

2、调制后的信号(已调信号)

        从图中可见,调制后信号的频谱被搬移到了10KHz左右,与设置的载波频率fc一致。 

3、加入高斯白噪声后的信号

        从图中可见,引入噪声后,频谱变得混乱了。 

4、乘载波后的信号

        从图中可见,乘上载波后信号又被搬移到了领频附近。 

5、低通滤波后的信号

        可见,低通滤波后,滤除了带外的噪声。 

6、星座图和眼图

Ⅱ、码元信噪比eb/n0= -10dB时

星座图和眼图

Ⅲ、码元信噪比eb/n0= 50dB时

星座图和眼图

        通过这张眼图便可知判决门限应该设置为0.5。 

Ⅳ、理论与仿真误码率曲线

        可见,仿真的2ASK调制解调的误码率很接近理论值。

三、仿真代码(超详细)

https://download.csdn.net/download/m0_66360845/89867011icon-default.png?t=O83Ahttps://download.csdn.net/download/m0_66360845/89867011


总结

        以上就是今天要讲的内容,本文详细介绍了2ASK调制与解调的整个过程,并附上了完整的仿真图。

MATLAB中,产生2FSK(二进制移相键控)信号通常涉及以下步骤: 1. **载波频率生成**:首先,你需要创建两个不同频率的载波信号,这可以通过`cos`或`sin`函数加上特定的角频率来完成。例如,如果你有两个载波频率`fc1`和`fc2`,你可以这样做: ```matlab fc1 = fc; % 假设为低频 fc2 = fcs + fc; % 假设为高频 t = linspace(0, 1, num_samples); % 时间轴 carrier1 = cos(2*pi*fc1*t); carrier2 = cos(2*pi*fc2*t); ``` 2. **二进制数据编码**:根据二进制数据(比如比特流0101...),决定选择哪个载波进行调制。常见的做法是,0对应第一个载波,1对应第二个载波。你可以用位映射(bit mapping)来实现: ```matlab data = [0 1 0 1]; % 假设的数据流 modulated_signal = carrier1 .* sign(data) + carrier2 .* sign(data+1); ``` 3. **幅度调整**:为了得到实际的模拟信号,通常会对载波进行幅度调整,比如使用正弦波而不是方波。你可以使用`sqrt`来得到幅度: ```matlab amplitude = sqrt(2); % 幅度调整为正弦波 fsk_signal = amplitude * modulated_signal; ``` 4. **绘制频谱图**:你可以使用`fft`函数计算频谱,然后可视化。对于短时间窗口,使用`pwelch`可能更合适: ```matlab window_length = floor(num_samples/2); % 窗口大小 [pxx, fs] = pwelch(fsk_signal, window_length, 'hanning', [], sampling_frequency); plot(fs, pxx); xlabel('Frequency (Hz)'); ylabel('Power/Frequency'); title('2FSK Signal Spectrum'); ``` 5. **绘制星座图**:如果是指QAM或数字调制下的星座图,则需要对每个符号点的位置进行离散化处理并进行坐标转换。对于2FSK,实际上不需要单独绘制星座图,因为它是基于载波的,而不是符号空间。 **相关问题--:** 1. 如何在MATLAB中处理非零起点的时间序列数据? 2. 如何在MATLAB中处理长时序列的频谱分析? 3. QAM调制中的星座图如何制作?
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迎风打盹儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值