欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LFM信号仿真

程序员文章站 2022-05-14 08:03:04
...

通信中用到太多的线性调频信号(LFM),一般都放置在数据帧头作为同步信号,方便接收端对信号的时间同步,虽然是一个基本的概念,但是仿真起来有些细节理解起来还是有点纠结。


什么是线性调频信号呢?线性调频信号是一种脉冲压缩信号,具有作用距离远,分辨率高的特点,由于发送LFM信号时声音类似鸟叫,又被称为chirp信号(鸟鸣信号)。
数学表达式可表示为:
LFM信号仿真
其中:f0为中心频率;k=B/为调频频率;B为频率变化范围;tao为脉冲宽度;a(t)为线性调频脉冲的包络。


关于LFM仿真,在这里做了两个简单的仿真:

clc;
clear all;
close all;
T=10e-6; 
B=30e6; 
K=B/T;  
Fs=2*B;
Ts=1/Fs; 
N=T/Ts;  
t=linspace(-T/2,T/2,N);  
LFM=exp(j*pi*K*t.^2)`
subplot(2,1,1) 
plot(t,real(LFM));  
%时域图像(实部)
subplot(2,1,2)  
freq=linspace(-Fs/2,Fs/2,N);  
plot(freq*1e-(abs(fft(LFM)))) 
                                           ![这里写图片描述](https://img-blog.csdn.net/20180117105736614?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVGluYV96ZW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity)       这里产生的是复指数线性调频信号,所以频谱是单边的。要使频谱不产生混叠,复信号要保证采样频率fs>带宽B,实信号则需要fs>2B.

n=(0:1:LFM_Last_N-1).';
Lfm_Signal=cos(2*pi*LFM_start*n/Fs+pi*K*(n/Fs).2);
Lfm_Signal_Frequancy_Response = fft(flipud(Lfm_Signal),NFFT_Sync);
figure;
subplot(2,1,1);
plot(real(Lfm_Signal));
subplot(2,1,2);
plot(n*Fs/NFFT_Sync,(abs(Lfm_Signal_Frequancy_Response(1:LFM_Last_N))));

其中,LFM_Last_N=8192;带宽为4k-8k,K=-93750;Fs=192kHz;由于是负线性调频,起始频率为8k
LFM信号仿真
做fft时取16384点变换,频域画图时只取了前8192个点,符合4k-8k的频谱关系。
注意:
在画全频谱时出现维度错误,因为在点数转化为频率过程中,n*Fs/NFFT_Sync的点数n的维度为8192,但是由于fft点数是16384,故需要将点数转换的时候,取16384的n点数,满足维度需求,即f=(0:1:2*LFM_Last_N-1)*Fs/NFFT_Sync
LFM信号仿真
这时候得到的频谱图是对称的图形,实际上是关于正负半轴对称关系(cos函数的z变换即在正负半轴的图像对称)。z变换是单位圆平面,而fft是z变换的一种特殊情况,是整个平面(s平面),因此存在一个对应关系,即以Fs作为z平面的单位圆的一个周期,即将负半轴的频谱搬移至Fs附近,图像符合该原理。

相关标签: 通信