MATLAB仿真噪声信号、单多音信号、LFM、2ASK、2FSK、BPSK、16QAM
本文针对通信系统中的常见信号类型进行了仿真分析,涵盖了高斯白噪声、噪声调幅(NAM)、噪声调频(NFM)、单音信号、多音信号、线性扫频信号、2ASK信号、2FSK信号、BPSK信号和16QAM信号。通过MATLAB代码,对这些信号的生成原理、调制解调过程以及仿真结果进行了详细研究。高斯白噪声部分分析了其统计特性,噪声调幅和调频仿真展示了信号波形和频谱的变化。BPSK、2FSK、2ASK和16QAM信号分别通过调制与解调过程的仿真,验证了不同调制方式的特性。研究结果表明,这些信号在通信系统中具有不同的适用性,仿真结果为信号的优化设计提供了重要参考。
文章目录
背景段落:
- 高斯白噪声信号
- 调幅噪声信号
- 调频噪声信号
- 单音调制信号
- 多音调制信号
- 线性扫频调制信号
- 2进制_ask信号
- 2进制_fsk信号
- 脉冲_脉冲调相信号
- 16进制_qam信号
缩略对照表
背景:
临近毕业时整理毕业论文相关资料,发现仿真中涉及的各种常见通信信号。由于部分网上的代码实现较为复杂,难以理解,此外仿真效果也不够理想。因此,将这些MATLAB仿真代码进行整理和总结,以便大家可以直接使用。在本文中,仿真涉及的信号类型包括:高斯白噪声、噪声调幅信号、噪声调频信号、单音信号、多音信号、扫频信号、2ASK信号、2FSK信号、BPSK信号、16QAM信号。仿真重点展示了时域波形和频谱特性,并对原始代码进行了注释说明,帮助读者更好地理解。
1、高斯白噪声
在研究通信系统的抗噪声性能时,由于通信系统中常见的热噪声通常近似为白噪声,且其取值恰好服从高斯分布,因此,高斯白噪声常被用作通信信道中的噪声模型。其中,噪声的统计均值为0,统计方差为1。高斯白噪声的幅值-频次统计直方图服从正态分布。通过仿真,我们获得了如图所示的实验结果:图1展示了高斯白噪声的时域波形,图2显示了归一化功率,图3则综合展示了统计信息和幅值,以验证高斯白噪声分布的特点。其中,程序最后两行计算了噪声的均值和方差,以验证其是否等于0和1。本次仿真中,计算得到的均值为5.3547e-4,接近于0;方差为0.9987,接近于1。
length = 1000000;
ff = 0:length-1;
noise = wgn(length,1,0);%生成100000*1个高斯白噪声,功率为0dBW(分贝瓦)
y1 = fft(noise,length);%采样点个数100000个
p1 = y1.*conj(y1);%conj()得到相应的复共轭数,y1.*conj(y1)就是模的平方
max_P=max(p1);%求功率的最大值
p1 =p1/(max_P);%除以最大值把功率谱归一化
subplot(2,2,1),plot(ff,noise(1:length)),axis([0 (length) -5 5]),xlabel('时间(s)'),ylabel('幅值(V)'),title('高斯白噪声波形');
subplot(2,2,2),plot(ff,p1(1:length)),axis([0 length 0 1]);xlabel('频率(Hz)');ylabel('功率');title('高斯白噪声归一化功率谱');
set(gca,'YTick',0:1:1);%设置逻辑值坐标轴为0和1,这样子就不会出现0-0.1-0.2^0.8-0.9-1的坐标,影响美观
subplot(2,2,3),hist(noise,40);axis([ -5 5 0 110000]);xlabel('幅值(V)');ylabel('频次');title('幅值-频次直方图');
mean_value = mean(noise)%计算噪声的均值,理论上应该是0
variance = var(noise)%计算噪声的方差,理论上应该为1,功率为0dBW(10*log1=0)


2、噪声调幅信号
噪声调幅信号是是利用噪声作为调制信号,对载波信号进行AM调制,使得载波信号的振幅随基带噪声做随机变化,这里的噪声使用了上面的高斯白噪声进行调制。其中这里的上包络和下包络只是噪声信号的变形,不是噪声调幅信号真正的包络,只是为了便于理解调幅信号的本质所构造的辅助曲线。
噪声调幅信号的公式为:J(t)=\left(U_{0}+U_{n}(t)\right) \cos \left(w_{j} t+\varphi\right),其中,U_{0}是载波振幅,w_{j}是载波角频率,U_{n}(t)是基带噪声,φ在[0,2π]内均匀分布。
通过分析图中噪声信号和噪声调幅干扰信号的波形与功率谱,可以发现噪声调幅干扰信号具有以下特点:
噪声调幅干扰信号的功率谱由载波谱和对称旁瓣谱组成,其中载波谱主要反映了信号的载波成分,而对称旁瓣谱则表现出信号的调制特性。旁瓣谱的形状特征与基带噪声功率谱具有相似性,这表明信号的调制特性与噪声特性之间存在一定的关联。
- 噪声调幅干扰信号的带宽为基带噪声带宽的
两倍。
fj=20e6;fs=4*fj; Tr=520e-6;
t1=0:1/fs:3*Tr-1/fs; N=length(t1);
u=wgn(1,N,0);%生成N*1个高斯白噪声,功率为0dBW(分贝瓦)
df1=fs/N;n=0:N/2;f=n*df1;
wp=10e6;ws=14e6;rp=1; rs=60;
[n1,wn1]=buttord(wp/(fs/2),ws/(fs/2),rp,rs);
[b,a]=butter(n1,wn1);
u1=filter(b,a,u);
p=0.1503*mean((u1.^2));
figure;subplot(2,2,1),plot(t1,u1),title('噪声信号波形'); axis([0,0.02e-4,-2,2]);xlabel('时间(s)');ylabel('幅度(V)');
subplot(2,2,2), j2=fft(u1);plot(f,10*log10(abs(j2(n+1)*2/N)));xlabel('频率(Hz)');ylabel('功率(dBW)');axis([0,4e7,-70,0]);title( '噪声信号功率谱');
u0=1;y=(u1+u0).*cos(2*pi*fj*t1+2);%噪声调幅信号的波形
u2=u1+u0;%上包络的波形
u3=-u0-u1;%下包络的波形
subplot(2,2,3), plot(t1,y,t1,u2,t1,u3),title( '噪声调幅信号时域波形'); axis([0,0.02e-4,-2,2]);xlabel('时间(s)');ylabel('幅度(V)');
subplot(2,2,4), J=fft(y);plot(f,10*log10(abs(J(n+1))));xlabel('频率(Hz)');ylabel('功率(dBW)');axis([0,4e7,-20,50]);title( '噪声调幅信号功率谱');

3、噪声调频信号
噪声调频信号是以噪声作为调制信号源,对载波信号实施FM调制,使得载波频率随基带噪声的随机变化而波动。其中,所使用的噪声同样来自上述的高斯白噪声。
uj=1;mf=2;wpp=10;
fj=20e6;fs=8*fj;Tr=520e-6;
t1=0:1/fs:3*Tr-1/fs;N=length(t1);
u=wgn(1,N,0);
wp=10e6;ws=16e6;rp=1;rs=60;
[n1,wn1]=buttord(wp/(fs/2),ws/(fs/2),rp,rs);
[b,a]=butter(n1,wn1);
u1=filter(b,a,u);
p=0.8503*mean((u1.^2)) ;
fj=20e6;fs=8*fj;Tr=520e-6;bj=5e6;
t1=0:1/fs:3*Tr-1/fs;N=length(t1);
u=wgn(1,N,wpp);
df1=fs/N;n=0:N/2;f=n*df1;
wp=10e6;ws=14e6;rp=1;rs=60;
[Nn,wn]=buttord(wp/(30e6/2),ws/(30e6/2),rp,rs);
[b,a]=butter(Nn,wn);
figure;subplot(2,2,1),plot(t1,u1),title('噪声信号波形');axis([0,2e-6,-2,2]);xlabel('时间(s)');ylabel('幅度(V)');
subplot(2,2,2),j2=fft(u1); plot(f,10*log10(abs(j2(n+1)*2/N)));xlabel('频率(Hz)');ylabel('功率(dBW)');axis([0,4e7,-20,50]);title( '噪声信号功率谱');axis([0,4e7,-80,0]);
i=1:N-1;ss=cumsum([0 u1(i)])
ss=ss*Tr/N;
y=uj*cos(2*pi*fj*t1+2*pi*mf*bj*ss*10);%uj=1 是输出的噪声调频信号的幅度 fj是调制信号中心频率是20M 增加调制指数*10 让波形明显
subplot(2,2,3), plot(t1,y),title( '噪声调频信号波形'),axis([0,2e-6,-1.5,1.5]);xlabel('时间(s)');ylabel('幅度(V)');
y=uj*cos(2*pi*fj*t1+2*pi*mf*bj*ss);%uj=1 是输出的噪声调频信号的幅度 fj是调制信号中心频率是20M
subplot(2,2,4),J=fft(y);plot(f,10*log10(abs(J(n+1))));axis([0,4e7,-20,60]);xlabel('频率(Hz)');ylabel('功率(dBW)');axis([0,4e7,-20,50]);title( '噪声调频信号功率谱')

4、单音信号
单音信号属于单一频率的正弦波。利用MATLAB进行仿真实验可以生成频率为1000Hz、幅值为1V的单音信号。单音信号的数学表达式为:J(t)=U_{j} \sin \left(2 \pi f_{j} t+\varphi\right)其中,U_{j}代表单音信号的振幅,f_{j}为单音信号的频率,\varphi是一个在区间[0,2π]内均匀分布的相位角。其频谱分析结果仅显示一个明确的频率分量,这表明单音信号在频域中具有单一的频率特征。
Fs=20000; %采样频率
N=20000; %采样点
n=0:N-1;t=n/Fs; %时间序列
fc=1000; %载波信号频率
f=n*Fs/N; %频率
Uc=1*sin(2*fc*pi*t); %载波信号
C1=fft(Uc); %对载波信号进行傅里叶变换
cxf=abs(C1); %进行傅里叶变换
cxf=cxf/max(cxf);%归一化
subplot(3,1,1);plot(t,Uc);title('载波信号波形');xlabel('时间(s)');ylabel('幅度(V)');title('单音干扰信号波形');axis([0 0.009 -1 1]);
subplot(3,1,2); plot(f(1:N/2),cxf(1:N/2));title('载波信号频谱'); axis([0 2000 0 1]);xlabel('频率(Hz)');ylabel('功率');title('单音干扰信号归一化功率谱');
set(gca,'YTick',0:1:1);%设置功率谱坐标轴只有0和1

5、多音信号
多音信号是由 L 个独立的正弦波叠加而成。通过MATLAB仿真的结果,生成了频率为940Hz、960Hz、980Hz、1000Hz、1020Hz、1040Hz、1060Hz的多音信号,其中 L 的值为7。多音信号的公式为:J(t)=\sum_{n=1}^{L} U_{j n} \sin \left(w_{n} t+\varphi_{n}\right),其中w_{n}=2 \pi\left(f_{j}+n \Delta f\right),f_{j}是多音起始频率,\Delta f是多音间隔频率,第n个正弦信号的频率为f_{j}+n \Delta f,因此,多音信号具有 L 根谱线。
Fs=200000; %采样频率
N=200000; %采样点
n=0:N-1;t=n/Fs; %时间序列
A0=1; %信号振幅
fc=1000; %信号中间频率
f=n*Fs/N; %信号步进频率
w0=2*fc*pi;
step=2*pi*50;
Uc=A0*cos(w0*t)+A0*cos((w0+step)*t)++A0*cos((w0+2*step)*t)++A0*cos((w0+3*step)*t)+A0*cos((w0-step)*t)++A0*cos((w0-2*step)*t)++A0*cos((w0-3*step)*t);%多音信号
C1=fft(Uc); %对信号进行傅里叶变换
cxf=abs(C1); %求绝对值
cxf=cxf/max(cxf);%归一化
subplot(2,1,1);plot(t,Uc);xlabel('时间(s)');ylabel('幅度(V)');title('多音信号波形');axis([0 0.1 -8 8]);
subplot(2,1,2);plot(f(1:N/2),cxf(1:N/2));title('载波信号频谱');axis([0 2000 0 1]);xlabel('频率(Hz)');ylabel('功率');title('多音信号归一化功率谱');
set(gca,'YTick',0:1:1);%设置功率谱坐标轴只有0和1

6、线性扫频信号
线性扫频信号的频率随时间呈线性变化。通过MATLAB仿真的结果,生成了具有起始截止频率为5Hz、扫频斜率为95Hz/s的线性扫频信号。参考博客:[线性扫频信号(多周期)]。()
t=0:0.00001:3-0.00001;%3对应3个周期,0.00001为精度
f0=5;%扫频起始频率
fe=100;%扫频截止频率
x=chirp(mod(t,1),f0,1,fe);%1代表的是单周期时间
subplot(3,1,1);plot(t,x);title('三个周期的线性扫频信号波形');xlabel('时间(s)');ylabel('幅度(V)');
ft=f0+(fe-f0)*mod(t,1);
subplot(3,1,2);plot(t,ft);title('线性扫频信号频率-时间图');xlabel('时间(s)');ylabel('频率(Hz)');
t=0:0.00001:1-0.00001;%求频谱时不能对多周期的求,对1个周期进行FFT
x=chirp(t,f0,1,fe);
C1=fft(x); %对载波信号进行傅里叶变换
cxf=abs(C1); %求绝对值
cxf=cxf/max(cxf);%归一化
subplot(3,1,3);plot(cxf); axis([0 150 0 1]);title('线性扫频信号归一化频谱');xlabel('频率(Hz)');ylabel('功率');

7、2ASK信号
ASK通过载波幅度的变化来实现数字信息的传递,属于数字调制技术之一。根据幅度种类的不同,ASK系列包括2ASK、4ASK、8ASK等多种类型。当数字基带信号仅取'1'或'0'时,通常被归类为2ASK。通过键控法控制开关的通断,可以实现2ASK调制信号的生成。调制原理框图如图所示,通过开关电路的键控作用,可以生成2ASK调制信号。在开关接通时,输出载波信号;当开关断开时,输出0信号。2ASK信号的公式为:e_{2 ASK\mathrm{}}(t)=\left\{\begin{array}{ll}\cos w_{c} t & \text { 出现概率为P } \\ 0 & \text { 出现概率为1}-\mathrm{P}\end{array}\right.;其中,P是为开关通路的概率对应基带信息中'1'出现的概率。
N=10;%仿真10S的时间
xn=[];
x=[1 0 1 1 0 0 1 0 1 0];%每秒一个逻辑值,一共10个
t=0.001:0.001:N;%以1ms为步进
for i=1:N
if x(i)==1
xn(i*1000-999:i*1000)=ones(1,1000);
else
xn(i*1000-999:i*1000)=zeros(1,1000);
end
end
y=cos(2*pi*3*t);%载波波形 频率为3Hz
z=xn.*y;%载波调制
subplot(3,1,1);plot(xn);title(' 基带信号');xlabel('时间(ms)');ylabel('逻辑值');axis([0 10000 -0.2 1.2]);
set(gca,'YTick',-1:1:1);%设置逻辑值坐标轴只有0和1
subplot(3,1,2);plot(y);title(' 载波波形');xlabel('时间(ms)');ylabel('幅度(V)');axis([0 10000 -1 1]);
subplot(3,1,3);plot(z);title(' 2ASK信号');xlabel('时间(ms)');ylabel('幅度(V)');axis([0 10000 -1 1]);


8、2FSK信号
FSK是一种基于载波频率变化实现数字信息传递的数字调制技术。基于频率种类的不同,FSK可分为2FSK、4FSK、8FSK等多种类型。当基带信号仅取1或0时,该技术被称为2FSK。2FSK的实现方法是通过受控开关电路对两个独立频率源进行选通。具体而言,当基带信号为1时,2FSK信号与载波信号1的波形一致;当基带信号为0时,2FSK信号与载波信号2的波形一致。2FSK信号的数学表达式为:e_{2 F S K}(t)=\left\{\begin{array}{ll} A \cos \left(f_{1} t+\varphi_{n}\right) & \text { 当基带信号为1时 } \\ A \cos \left(f_{2} t+\theta_{n}\right) & \text { 当基带信号为0时 } \end{array}\right.;其中,P代表受控开关电路通路的概率,对应于基带信息中1出现的概率。
N=10;%仿真10S的时间
xn=[];xn1=[];
x=[1 0 1 1 0 0 1 0 1 0];%%每秒一个逻辑值,一共10个
t=0.001:0.001:N;%以1ms为步进
for i=1:N
if x(i)==1
xn(i*1000-999:i*1000)=ones(1,1000);%xn都置为0
xn1(i*1000-999:i*1000)=zeros(1,1000);%xn1都置为1
else
xn(i*1000-999:i*1000)=zeros(1,1000);%xn都置为1
xn1(i*1000-999:i*1000)=ones(1,1000);%xn1都置为0
end
end
y=cos(2*pi*2*t);%载波波形1 频率为2Hz
y2=cos(2*pi*6*t);%载波波形2 频率为6Hz
F1=xn.*y; %加入载波1
F2=xn1.*y2; %加入载波2
e_fsk=F1+F2;%叠加
figure(1);heigth=160;width=160;set(gcf,'Position',[0 0 width/0.277 heigth/0.277]);%前面是图片在屏幕的位置,后面是图片大小为20*20
subplot(4,1,1);plot(xn);title(' 基带信号');xlabel('时间(ms)');ylabel('逻辑值');axis([0 10000 -0.2 1.2]);
set(gca,'YTick',-1:1:1);%设置逻辑值坐标轴只有0和1
subplot(4,1,2);plot(y);title(' 载波波形');xlabel('时间(ms)');ylabel('幅度(V)');axis([0 10000 -1 1]);
subplot(4,1,3);plot(y2);title(' 2ASK信号');xlabel('时间(ms)');ylabel('幅度(V)');axis([0 10000 -1 1]);
subplot(414);plot(e_fsk);title('2FSK信号');axis([0 10000 -1 1]);xlabel('时间(ms)');ylabel('幅度(V)');

9、BPSK信号
数字信息通过载波相位的变化得以传递,这种技术根据相位类型的不同,涵盖了BPSK、QPSK、16PSK、64PSK等多种类型。以二进制调相为例,当二进制码元为1时,调制后的载波与未调制的载波同相;当码元为0时,载波与未调制的载波反相;此时,1和0对应的载波相位差为π。本章采用的仿真实验基于BPSK方案,该方案仅包含0和π两个相位。
N=10;%仿真10S的时间
xn=[];xn1=[];
x=[1 0 1 1 0 0 1 0 1 0];%每秒一个逻辑值,一共10个
t=0.001:0.001:N;%以1ms为步进
for i=1:N
if x(i)==1
xn(i*1000-999:i*1000)=ones(1,1000);
xn1(i*1000-999:i*1000)=ones(1,1000);%码元值都为1
else
xn(i*1000-999:i*1000)=-ones(1,1000);
xn1(i*1000-999:i*1000)=zeros(1,1000);%码元值都为0
end
end
y=sin(2*pi*1*t);%载波波形 频率为3Hz 与前面的不一样,为正弦波
z=xn.*y;%载波调制
subplot(3,1,1);plot(xn1);title(' 基带信号');xlabel('时间(ms)');ylabel('逻辑值');axis([0 10000 -0.2 1.2]);
set(gca,'YTick',-1:1:1);%设置逻辑值坐标轴只有0和1
subplot(3,1,2);plot(y);title(' 载波波形');xlabel('时间(ms)');ylabel('幅度(V)');axis([0 10000 -1 1]);
subplot(3,1,3);plot(z);title(' 2ASK信号');xlabel('时间(ms)');ylabel('幅度(V)');axis([0 10000 -1 1]);

10、16QAM信号
QAM信号是使用QAM调制生成的信号。因为16QAM的程序包含的文件比较多,所以只展示了仿真图。程序放到百度云-链接:https://pan.baidu.com/s/1zxSyYBqJhjAnLdgjqnwOtA
提取码:t8eq,QAM的程序主要来自16QAM百度文库。
如图是QAM的实现原理,首先将输入二进制bit信号进行串并变换,再分别将两路二进制信号进行2到L的变换产生I(t)和Q(t),接着将两通道的基带信号I(t)和Q(t)分别乘以\cos \left(2 \pi f_{c} t\right)和\sin \left(2 \pi f_{c} t\right),最后将两个乘积信号进行矢量和就得到QAM 调制信号。
QAM信号的公式为:S_{\text {QAM }}(t)=I(t) \cos \left(2 \pi f_{c} t\right)-Q(t) \sin \left(2 \pi f_{c} t\right).


缩略对照表
| 2ASK | 2 Amplitude Shift Keying | 二进制幅移键控 |
|---|---|---|
| 2FSK | 2 Frequency Shift Keying | 二进制频移键控 |
| BPSK | Binary Phase Shift Keying | 二进制相移键控 |
| 16QAM | 16 Quadrature Amplitude Modulation | 十六进制正交振幅调制 |
| AM | Amplitude Modulation | 振幅调制 |
| FM | Frequency Modulation | 频率调制 |
