数字频带传输——二进制数字调制及MATLAB仿真

本文涉及的产品
简介: 数字频带传输——二进制数字调制及MATLAB仿真

前言

数字频带信号通常也称为数字调制信号,其信号频谱通常是带通型的,适合于在带通型信道中传输。数字调制是将基带数字信号变换成适合带通型信道传输的一种信号处理方式,正如模拟通信中的一样,可以通过对基带信号的频谱搬移来适应信道特性,也到同样的目的可以采用频率调制、相位调制的方式来达到同样的目的。

本文将主要通过 Matlab 来学习二进制的调制解调方式,包括 OOK、2PSK、2FSK,并分析和仿真这些调制系统。


一、OOK

1、表达式


image.png

image.png

OOK 信号波形

2、功率谱密度

OOK 信号的功率谱密度为:

image.png

3、调制框图

OOK 的调制框图如下图所示:

OOK 信号调制框图

二、2PSK

1、表达式

image.png

2PSK 信号波形如下图所示,其实现框图与 OOK 相同,只是输入是双极性的

2PSK 信号波形

2、功率谱密度

2PSK 信号的功率谱密度为:


image.png

image.png

1、表达式


image.png

2FSK 波形


image.png

image.png

四、MATLAB 仿真

以下代码使用 MATLAB 产生独立等概的二进制信源,并完成了下面三个功能:

  • 画出 OOK 信号波形及其功率谱;
  • 画出 2PSK 信号波形及其功率谱;
  • 画出 2FSK 信号波形及其功率谱(设 f1f2>>Ts1)。

1、MATLAB 源码

% 2ASK,2PSK
clear all;
close all;
A  = 1;
fc = 2;                                     % 2Hz;
N_sample = 8; 
N  = 500;                                   % 码元数
Ts = 1;                                     % 1 baud/s
dt = Ts/fc/N_sample;                        % 波形采样间隔
t = 0 : dt : N*Ts-dt;
T = dt * length(t);
Lt = length(t);
% 产生二进制信源
d = sign(randn(1, N));                      
dd = sigexpand((d+1)/2, fc*N_sample);
gt = ones(1, fc*N_sample);                   % NRZ 波形
figure(1)
subplot(221);                               % 输入 NRZ 信号波形(单极性)
d_NRZ = conv(dd, gt);
plot(t, d_NRZ(1:length(t))); 
axis([0 10 0 1.2]); xlabel('t/s'); ylabel('输入信号');
subplot(222);                               % 输入 NRZ 频谱
[f, d_NRZf] = T2F(t, d_NRZ(1:length(t)));
plot(f, 10*log10(abs(d_NRZf).^2/T));
axis([-2 2 -50 10]); xlabel('f/Hz'); ylabel('输入信号功率谱密度(dB/Hz)');
%2ASK信号
ht = A*cos(2*pi*fc*t);
s_2ask = d_NRZ(1:Lt).*ht;
subplot(223)
plot(t,s_2ask);
axis([0 10 -1.2 1.2]); xlabel('t/s'); ylabel('2ASK');
[f, s_2askf]=T2F(t, s_2ask );
subplot(224)
plot(f, 10*log10(abs(s_2askf).^2/T));
axis([-fc-4 fc+4 -50 10]); xlabel('f/Hz'); ylabel('2ASK功率谱密度(dB/Hz)');
figure(2)
%2PSK信号
d_2psk = 2*d_NRZ-1;
s_2psk = d_2psk(1:Lt).*ht;
subplot(221)
plot(t,s_2psk);
axis([0 10 -1.2 1.2]); xlabel('t/s'); ylabel('2PSK');
subplot(222)
[f, s_2pskf] = T2F(t, s_2psk);
plot( f, 10*log10(abs(s_2pskf).^2/T) );
axis([-fc-4 fc+4 -50 10]); xlabel('f/Hz'); ylabel('2PSK功率谱密度(dB/Hz)');
% 2FSK
% s_2fsk = Acos(2*pi*fc*t + int(2*d_NRZ-1) );
 sd_2fsk = 2*d_NRZ-1;
s_2fsk = A*cos(2*pi*fc*t + 2*pi*sd_2fsk(1:length(t)).*t );
subplot(223)
plot(t, s_2fsk);
axis([0 10 -1.2 1.2]);xlabel('t/s'); ylabel('2FSK')
subplot(224)
[f, s_2fskf] = T2F(t, s_2fsk);
plot(f, 10*log10(abs(s_2fskf).^2/T));
axis([-fc-4 fc+4 -50 10]); xlabel('f/Hz'); ylabel('2FSK功率谱密度(dB/Hz)');
% 随机相位 2FSK
fai = 2*pi*rand(1, N);
fai_2fsk = sigexpand(fai, fc*N_sample);
fai_2fsk = conv(fai_2fsk, gt);
s_2fskd = A*cos(2*pi*fc*t + 2*pi*sd_2fsk(1:length(t)).*t + fai_2fsk(1:length(t)) );
figure(3)
subplot(211);
plot(t, s_2fskd);
axis([0 10 -1.2 1.2]); xlabel('t/s'); ylabel('随机相位 2FSK');
[f, s_2fskdf] = T2F(t, s_2fskd);
subplot(212);
plot(f, 10*log10(abs(s_2fskdf).^2/T));
axis([-fc-4 fc+4 -50 10]); xlabel('f/Hz'); ylabel('随机相位 2FSK 功率谱密度(dB/Hz)');

2、仿真及结果

①、输入信号及频谱图

②、2ASK 调制

③、2PSK 调制

④、2FSK 调制

⑤、随机相位 2FSK 调制

五、资源自取

二进制数字调制及MATLAB仿真


相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
19天前
|
编解码 人工智能
脉冲压缩及MATLAB仿真(一)
脉冲压缩及MATLAB仿真(一)
43 0
|
19天前
|
机器学习/深度学习
信道编码译码及MATLAB仿真(三)
信道编码译码及MATLAB仿真
86 3
|
19天前
|
算法
信道编码译码及MATLAB仿真(二)
信道编码译码及MATLAB仿真
38 3
|
19天前
数字频带传输——多进制数字调制及MATLAB仿真
数字频带传输——多进制数字调制及MATLAB仿真
45 2
|
19天前
脉冲压缩及MATLAB仿真(二)
脉冲压缩及MATLAB仿真(二)
29 0
|
19天前
|
机器学习/深度学习 编解码 关系型数据库
信道编码译码及MATLAB仿真(一)
信道编码译码及MATLAB仿真
51 2
|
7月前
|
人工智能 算法
基于物理层网络编码的相位同步算法matlab仿真
基于物理层网络编码的相位同步算法matlab仿真
|
11月前
基于MATLAB的2ASK调制解调仿真
基于MATLAB的2ASK调制解调仿真
|
12月前
|
机器学习/深度学习 传感器 算法
基于Matlab的窄带信号的测向算法
基于Matlab的窄带信号的测向算法
|
12月前
|
机器学习/深度学习 传感器 算法
基于matlab实现BCH码误码率仿真
基于matlab实现BCH码误码率仿真