前言

Matlab系列之信号调制

  • 前言
  • 介绍
  • 幅度调制
    • BASK调制
      • 示例
      • 结果
      • 代码
      • 结果
    • MASK调制
      • 示例
      • 结果
    • QAM调制
      • 示例
      • 结果
  • 频率调制
    • BFSK调制
      • 示例
      • 结果
    • MFSK调制
      • 示例
      • 结果
  • 相位调制
      • 示例
      • 结果
    • OQPSK调制
      • 示例
      • 结果
    • 更多精彩等你发现~

本来是打算弄下simulink的,但是吧,考虑了下大概的使用情况,会有挺多部分和之前的system generator系列相重,就不写了(主要还是懒~),打算接下来几篇开始对Matlab进行一些应用,比如本篇的信号调制,还有后面的信号解调以及一些图像处理的应用。

介绍

信号调制使用到的载波信号,通常可以用下方的公式表示:
s(t)=a(t)sin(ωt+φ)s(t)=a(t)sin(ωt+φ) s(t)=a(t)sin(ωt+φ)
a(t)表示幅度,ω为频率,φ代表相位,所以载波信号可改变的就是该三变量,根据不同变量的改变,可以分为幅度调制、频率调制以及相位调制三大类。

更多原理性的学习可以找本通信原理的书籍看看,就不多述了。

幅度调制

BASK调制

BASK调制即二进制幅度调制又称二进制幅度键控(2ASK),设调制信号的公式为:
s(t)=akcos(wt)s(t)=a_kcos(wt) s(t)=ak​cos(wt)
公式中ak为0或1,特点::"1"码期间有等幅余弦波输出,相当与开关开通, "0"码期间无输出,相当与开关切断,因此称为幅移键控。

示例

%一秒传10bit的信号
close all
clear
t=0:1/1e3:1-1/1e3;%1s
a=randi([0,1],1,10);%10个随机数 非0即1
s=a(ceil(10*t+0.01)).*cos(2*pi*100*t);%调制信号subplot(211)
plot(t,a(ceil(10*t+0.01)));
axis([0,1-1/1e3,-0.2,1.2]);
subplot(212)
plot(t,s);
axis([0,1-1/1e3,-1.2,1.2]);

结果

此外还可以进行频域的分析,原理如下图。

调制后的功率谱表达如下图

然后我们对示例的基带信号和调制信号进行频域的分析。

代码

%一秒传10bit的信号
close all
clear
t=0:1/1e3:1-1/1e3;%1s
%a=randi([0,1],1,10);%10个随机数 非0即1
a=[1,1,1,0,1,0,0,1,1,1];%与上面生成的保持一致
s1=a(ceil(10*t+0.01));%基带信号
s2=s1.*cos(2*pi*100*t);%调制信号%分析功率谱
L=512;%做512点的FFT
fs=1e3;
%f=fs*(0:L/2)/L;
f=(-L/2:L/2-1)*(fs/L);
%f=(0:L-1)*(1e3/L);
S1=fftshift(fft(s1,L));
S2=fftshift(fft(s2,L));P1=abs(S1).^2/L;
P2=abs(S2).^2/L;subplot(211)
plot(f,P1)
subplot(212)
plot(f,P2)

结果

可以从结果很明显的看出来,基带信号被搬移到了载波频率处(100Hz)。

MASK调制

BASK是输入的二进制比特流的调制,而MASK则是输入M进制比特流的幅度调制,M=2N,其中N≥2,N代表同时发送的比特数,假设N=2,则以2bit为一组同时发送,同组的比特则称为一个码元;MASK对应的振幅值A表达式为:
A=(2m+1−M)∗d,m=0,...,M−1A=(2m+1-M)*d , m=0,...,M-1 A=(2m+1−M)∗d,m=0,...,M−1
表达式中,d用来控制幅度之间的差值,值为幅度间差值的一半。

示例

%4进制比特幅度调制
close all
clear
M=4;
d=1;
fs=1e3;
t=0:1/fs:1-1/fs;%时常
a=randi(2,1,20)-1;%产生随机比特流 限制幅度最大为2
for n=0:9sym(n+1)=a(2*n+1)*2+a(2*n+2);
end
%MASK
s=sym(ceil(10*t+0.01)).*cos(2*pi*100*t);
subplot(311);
plot(t,a(ceil(10*t+0.01)));
axis([0,1,-0.3,1.3])
subplot(312);
plot(t,sym(ceil(10*t+0.01)));
axis([0,1,-0.3,5])
subplot(313);
plot(t,s);

结果

假设MASK和BASK采用相同的码元速率,两者的带宽会相同,很显然在空间中,BASK只要两个信号点0和1,而MASK则有多个信号点,可以想到MASK将会有更高的带宽利用率;由于功率会受限,因而误码率也会相应的增大。

QAM调制

以上介绍的BASK和MASK都是属于单载波的情况,而QAM则拥有两个载波,即相互正交的两个分量,cosωt和sinωt,因而满足在一个周期内正交,所以该调制被称为正交幅度调制,信号表达式为:
s(t)=Aig(t)cos(ωt)+Aqg(t)sin(ωt)s(t)=A_ig(t)cos(ωt)+A_qg(t)sin(ωt) s(t)=Ai​g(t)cos(ωt)+Aq​g(t)sin(ωt)
Ai g(t)cos(ωt)为同相分量,Aq g(t)sin(ωt)则是正交分量,Ai和Aq分别被称为通向载波分量幅度和正交载波分量幅度。

示例

close all
clear
fs=1e5;
t=0:1/fs:1-1/fs;
%脉冲
a=randi(2,1,60)-1;
%幅度分量
Ai=2*a(1:2:30)-1;
Aq=2*a(2:2:30)-1;
%调制
s=Ai(ceil(10*t+1/1e4)).*cos(2*pi*20*t)...
+Aq(ceil(10*t+1/1e4)).*sin(2*pi*20*t);subplot(221)
plot(t,Ai(ceil(10*t+1/1e4)));
subplot(222)
plot(t,Aq(ceil(10*t+1/1e4)));
subplot(2,2,3)
plot(t,a(ceil(10*t+1/1e4)));
subplot(224);
plot(t,s);%QAM波形
scatterplot(Ai+1j*Aq);%QAM星座图

结果

可以看到在幅度跳变的时候,调制波形有所变化。

星座图用来表示QAM发射的信号集,星座上的每一个星座点都对应发射信号集中的那一点

频率调制

频率调制是一种使得发射信号的频率按调制信号的规律进行变化,且振幅保持不变的调制方式。

BFSK调制

BFSK调制即二进制频率调制,发射信号可表示成
s(t)=Acos(2π(f+mΔf)t),m=0,1s(t)=Acos(2\pi(f+m\Delta f)t),m=0,1 s(t)=Acos(2π(f+mΔf)t),m=0,1
其中Δf\Delta fΔf是相对与f的频偏,m是输入比特流,通常由0和1组成。

示例

close all
clear
fs=1e3;
t=0:1/fs:1-1/fs;
df=100;%频偏
a=randi(2,1,10)-1;
m=a(ceil(10*t+0.01));
s=cos(2*pi*(50+m*df).*t);%f0=50Hz L=512;
f=(-L/2:L/2-1)*(fs/L);
S=fft(s,512);
P=abs(fftshift(S)).^2;subplot(311)
plot(t,a(ceil(10*t+0.01)));subplot(312)
plot(t,s);
subplot(313);
plot(f,P)

结果

从频谱中可以看出,具有两个频率峰,50Hz和150Hz,与设定的一致。整个信号的带宽
BBFSK=Δf±2BB_{BFSK}=\Delta f±2B BBFSK​=Δf±2B
,Δf\Delta fΔf为固定频偏,本例为100Hz,B是基带信号的带宽。图中50Hz和150Hz处的功率都比较大,但是50Hz处的相对大些,这是由于产生的信号序列中,0的数量比1多,即未调制的部分(50Hz的部分)要多,自然功率就高了。

重新运行程序,找到一组1的数量较多的进行比较,可以看到150Hz处的功率明显比50Hz的高。

MFSK调制

MFSK的“M”与MASK中的“M”是一样的意思,代表输入多比特,即MFSK称为M进制频率调制。M=2N,N≥1,N是每次输入到调制器的比特数。

发射信号可用公式表示:
s(t)=Acos(2π(f+mΔf)∗t),m=0,1,...,M−1s(t)=Acos(2\pi(f+m\Delta f)*t),m=0,1,...,M-1 s(t)=Acos(2π(f+mΔf)∗t),m=0,1,...,M−1

示例

%假设M=4,4进制FSK调制
close all
clear
fs=1e3;
t=0:1/fs:1-1/fs;
df=50;a=randi(2,1,20)-1;
sym=2*a(1:2:20)+a(2:2:20);
m=sym(ceil(10*t+0.01));s=cos(2*pi*(50+m*df).*t);L=512;
f=(-L/2:L/2-1)*(fs/L);
S=fft(s,L);
P=abs(fftshift(S)).^2;subplot(311)
plot(t,m);subplot(312)
plot(t,s);
subplot(313);
plot(f,P)

结果

可以看到在时域的信号基带信号有四种值,调制信号也可明显看出具有4种频率,频谱中出现了四个峰,分别在中心频率50Hz、100Hz、150Hz和200Hz处。

相位调制

载波的相位相对参考相位的偏移值随调制信号的瞬时值成比例的变化的调制方式,称为相位调制即调相。调相和调频关联很紧密,调相时会有调频发生,调频时也会有调相发生,不过变化的规律不太一样,实际使用更多的还是调频.

发射信号可用以下公式表示:
s(t)=Acos(ωt+2mπM),m=0,1,...,M−1s(t)=Acos(ωt+{2m\pi\over M}),m=0,1,...,M-1 s(t)=Acos(ωt+M2mπ​),m=0,1,...,M−1
在此处,M代表可能的相位个数,M=2N,N是每次输入调制的比特数,若M=2,PSK即可称为二进制相移键控即BPSK;若M=4,则PSK称为四进制相移键控即QPSK;如果输入的比特流是经过差分编码输出的,则称为差分相移键控即DPSK。

示例

%QPSK
close all
clear
fs=1e3;
t=0:1/fs:1-1/fs;
a=randi(2,1,20)-1;
sym=a(1:2:20)+a(2:2:20);
m=sym(ceil(10*t+0.01));%调制
M=4;
s=cos(2*pi*50*t+2*m*pi/M);L=512;
f=(-L/2:L/2-1)*(fs/L);
S=fft(s,512);
P=abs(fftshift(S)).^2;figure;
subplot(311)
plot(t,a(ceil(10*t+0.01)));
axis([0,1,-0.2,1.2]);
subplot(312)
plot(t,s);
subplot(313)
plot(f,P);

结果

OQPSK调制

这部分介绍引用wiki的说明

再对比下QPSK的时序图

两者的主要差别就是相位跳变的限制,QPSK最大可达180°,OQPSK则不会超过90°。

示例

%QPSK
close all
clear
fs=1e3;
t=0:1/fs:1-1/fs;
a=randi(2,1,20);
m=2*a-1;
I=m(1:2:20);
Q=m(2:2:20);
I=[I(ceil(10*t+0.01)),ones(1,50)];
Q=[ones(1,50),Q(ceil(10*t+0.01))];t=0:1/fs:1-1/fs+50/fs;
s=I.*cos(2*pi*50*t)-Q.*sin(2*pi*50*t);L=512;
f=(-L/2:L/2-1)*(fs/L);
S=fft(s,512);
P=abs(fftshift(S)).^2;figure;
subplot(411)
plot(t,I);
axis([0,1.05,-0.03,3.3])
subplot(412)
plot(t,Q);
axis([0,1.05,-0.3,3.3])
subplot(413)
plot(t,s);
axis([0,1.05 -inf inf])
subplot(414)
plot(f,P);

结果


更多精彩等你发现~


Matlab系列之信号调制相关推荐

  1. Matlab系列之信号解调

    Matlab系列之信号解调 序 BASK信号解调 示例 结果 QAM信号解调 示例 结果 BPSK信号解调 示例 结果 BFSK信号解调 示例 结果 结语 更多精彩,等你发现~ 序 上一篇对信号调制有 ...

  2. matlab进行fm调制与解调,基于matlab的fm信号调制与解调.doc

    基于matlab的fm信号调制与解调.doc 调制就是将基带信号的频谱搬移到信道通带中或者其中的某个频段上的过程,而解调是将信道中来的频带信号恢复为基带信号的反过程.调制的目的是把要传输的模拟信号或数 ...

  3. 基于Matlab的SSB信号调制和解调(内附源码)

    详细原理可参考课设报告:基于matlab的SSB信号调制.传输.解调的仿真-行业报告文档类资源-CSDN下载 调制采用了滤波法和相移法. 代码中有注释,无子函数,可以直接运行. 压缩包中包含了具体的课 ...

  4. fsk调制matlab 仿真,基于MATLAB对FSK信号调制与解调的仿真

    基于MATLAB对FSK信号调制与解调的仿真 基于 MATLAB 对 FSK 信号调制与解调的仿真摘要 Matlab 平台的著名仿真环境 Simulink 作为一种种专业和功能强大且操作简单的仿真工具 ...

  5. 【MATLAB】通信信号调制通用函数 — 傅里叶逆变换

    目录 傅里叶逆变换 傅里叶逆变换 function [t,st] = F2T(f,sf) %This function calculate the time signal using ifft fun ...

  6. 【MATLAB】通信信号调制通用函数 — 窄带高斯白噪声的生成

    目录 窄带高斯白噪声的生成 窄带高斯白噪声的生成 function out = noise_nb(fc,B,N0,t) % Output narrow band Gaussian noise samp ...

  7. MATLAB 的BPSK信号调制

    clear all; g=[1 0 1 0 1 0 0 1];%基带信号 f=100; %载波频率 t=0:2pi/99:2pi; cp=[];sp=[]; mod=[];mod1=[];bit=[] ...

  8. 基于MATLAB的信号调制研究与实现

    一.绪论 1.1 工具 PC MATLAB2016b 1.2 目的 掌握模拟系统的调制和解调原理. 学会MATLAB仿真软件在信号调制和解调中的应用. 掌握参数设置方法和性能分析. 通过实验中波形的变 ...

  9. 带有匹配滤波器的雷达信号调制和脉冲压缩技术的Matlab程序

    带有匹配滤波器的雷达信号调制和脉冲压缩技术的Matlab程序 clear all; %%%  parameters' definition c=3e+8;                       ...

最新文章

  1. Tomcat windows下安装
  2. Alex学Ruby[详解 block和Proc对象]
  3. Android ExpandableListView几个特殊的属性
  4. centos php 默认安装目录,centos系统中的软件安装目录在哪
  5. rvest爬虫及案例分析
  6. 计算机网络的体系结构
  7. 11条要点速读:网络小额贷款业务管理暂行办法(征求意见稿)
  8. addeventlistener不支持ajax_好程序员web前端学习路线分享了解AJAX是什么
  9. 【编译工具】之gcc中-march与-arch的使用
  10. Centos7 linux 卸载自带安装的jdk 并yum自动安装jdk1.8
  11. warning: control reaches end of non-void function:错误解决
  12. C语言-十进制转换为二进制函数
  13. 学生管理系统(C语言)简单版
  14. 友情链接模块phpcms
  15. 内存占用率过高怎么办 一分钟解决
  16. burpsuite 越权_越权漏洞之测试与修复
  17. OneDNS终端网络安全接入服务原理解析
  18. 常用的几款SSH工具通过密匙认证连接远程主机
  19. PAT 乙级 1100 校庆
  20. 精心分享7个办公软件,每一款都好用到爆

热门文章

  1. 使用百度SDK实现定位功能
  2. 使用线程池的方式压缩图片
  3. Fluent动网格+滑移网格+重叠网格对比介绍(以震荡水翼flapping foil为例)
  4. HDU 3791 二叉搜索树 (bst)
  5. cs231n学习记录-理解线性分类器
  6. 怎样吃晚餐才健康?(转)
  7. 超级好用的iOS框架
  8. Jenkins邮件通知配置报错问题解决
  9. 手把手教你达梦数据库:备份与还原详细步骤
  10. Linux 系统延时任务及定时任务