OFDM-OCDM雷达通信一体化信号模糊函数对比研究【附MATLAB代码】

本文主要是介绍OFDM-OCDM雷达通信一体化信号模糊函数对比研究【附MATLAB代码】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章来源:微信公众号:EW Frontier

1.引言

为提高频谱利用率并实现系统小型化、集成化,近年来雷达通信一体化系统成为重要研究方向。正交线性调频波分复用(OCDM)信号是利用菲涅尔变换形成的一组正交线性啁啾(chirp)信号,基于OCDM 的雷达通信一体化信号不仅具有正交频分复用(OFDM)信号的频谱利用率高、适合高速数据传输等优点,且具有更好的抗多径干扰能力,被认为是较好的OFDM 一体化信号替代方案[1]。

本文主要通过对比分析OCDM与OFDM模糊函数,说明二者各自优缺点,为下一步雷达通信一体化研究提供参考。

2.正交线性调频波分复用

正交线性调频波分复用(Orthogonal Chirp Division Multiplexing,OCDM)是一种基于离散菲涅尔变换(Discrete Fresnel Transform,DFnT)的多载波正交复用技术,因其在多径传播中具有更好的鲁棒特性,被认为是正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM) 技术[1] 的替代方案。

2.1 OCDM信号

OCDM 信号由Ouyang[2] 于2016 年首次提出,由一组在时域与频域上重叠的啁啾(chirp)信号组成,且每一个啁啾信号在啁啾维度相互正交,在传输时不会互相干扰。第k 个啁啾信号可由下式表示:

添加图片注释,不超过 140 字(可选)

式中N 为啁啾信号的个数,T 为OCDM 信号的周期。利用每个啁啾信号的幅度加载通信信息可构成OCDM 一体化信号。本文将调制在第m 个符号的第k 个啁啾上的随机通信信息设为xm(k),则离散化的一体化OCDM 信号的第m 个符号表示为:

2.2 OCDM一体化系统

OCDM的基本原理是通过在相同带宽中利用菲涅尔变换形成一组正交的线性Chirp 信号,并将通信信息加载到这一组Chirp信号的幅度和相位中,从而实现高效通信数据传输[2]。

菲涅尔变换在OCDM信号形成中的作用类似于傅里叶变换在OFDM信号形成中的 作用,利用离散菲涅尔变换(DFnT)实现OCDM的数字实现,在发射端利用离散菲涅 尔逆变换(IDFnT)生成OCDM信号,利用DFnT在接收端恢复OCDM信号。通过利用每个Chirp信号的幅度和相位传输通信信息,构成OCDM一体化信号。若采用16QAM进行数据传输,则得到如下OCDM一体化系统[3-4]:

图1 OCDM一体化系统的实现框图

实现的具体步骤如下[3-4]:

第一步,在发射端将串行通信比特流通过16QAM调制后,串并转换,形成通信符号x;

第二步,将并行的通信符号,与以二次相位项的共轭为对角线数据的矩阵相乘;

第三步,将第二步所得矩阵进行IFFT变换后,与以二次相位项的共轭为对角线 数据的矩阵相乘形成OCDM一体化信号,并将其进行并串转换,通过数模转换器和混 频器发送;

第四步,在接收端将接收到的信号通过混频器和模数转换器,生成数字信号,一方 面将其发送给雷达信号处理模块,进行目标速度和距离的求取。另一方面,将其进行串 并转换,发送给通信信号解调模块;

第五步,将并行信号与以二次相位项1为对角线数据的矩阵相乘,再通过FFT变 换后,与以二次相位项2为对角线数据的矩阵相乘,从而获得通信符号数;

第六步,将通信符号进行16QAM解调,获得通信信息。

3.OFDM-OCDM仿真分析

为方便分析二者模糊函数差异,本文简化对比,不加入调制信息,同时默认为单符号,其余参数设置如下:子载波数:16;脉冲时间:1us;调频斜率:16000GHz/s。

图2 OFDM模糊函数

图3 OCDM模糊函数

图4 OCDM与OFDM距离模糊函数

图5 OCDM与OFDM速度模糊函数

从图2至图5,可以发现 OCDM 模糊图形状近似图钉型,中心峰值窄,具有良好距离分辨力和速度分辨力,同时能量在速度距离平面的分布除中心峰值外较为平坦说明不易产生模糊, 旁瓣较小不易受干扰。相比 OFDM 信号,OCDM 信号零多普勒平面的主瓣宽度更窄, 旁瓣更低,具有更好的距离分辨特性,两者的零时延平面模糊图差异不大。

总结

本文主要基于传统OFDM雷达通信一体化信号体制,将OFDM的替代技术OCDM引入,介绍了OCDM的信号组成结构,OCDM一体化信号系统组成,同时通过仿真分析OCDM与OFDM的模糊函数,进一步说明了OCDM的良好性能,更适合进行雷达探测,为此可以提出更优秀的雷达通信一体化信号,将16QAM、BPSK、MSK等调制技术与OCDM相结合,希望对研究雷达通信一体化的小伙伴有帮助。

参考文献

[1]王晶琦,曾欢,陶詹等.一种基于OCDM的新型雷达通信一体化系统[J].微波学报,2022,38(06):14-18.DOI:10.14183/j.cnki.1005-6122.202206004.

[2]Ouyang X, Zhao J. Orthogonal chirp divisionmultiplexing for coherent optical fiber communications[J]. Journal of LightwaveTechnology, 2016, 34(18): 4376-4386

[3]吕鑫. OCDM-OFDM雷达通信一体化信号设计与研究[D].南京理工大学,2019.DOI:10.27241/d.cnki.gnjgu.2019.000444.

[4]许奥. 基于OCDM的雷达通信一体化技术研究[D].南京理工大学,2021.DOI:10.27241/d.cnki.gnjgu.2021.001034.

MATLAB代码示例

%% OCDM与OFDM的模糊函数比较
%% 全部代码获取 学术交流Q群:479772742
clear all;close all;clc
​
% 子载波数
N_c=16;
% 脉冲持续时间
T_b=1e-6;
% 归一化时间
x=linspace(-1,1,32*N_c);%-1:0.001:1;
% 归一化频率
y=-5:0.01:5;
% 调频率
mu=16/T_b^2;
% 符号权重
% w=ones(N_c,1);
w=chebwin(N_c,50);
%% 模糊函数
[X,Y]=meshgrid(x,y);
[amf,amt]=size(X);
AF_ofdm = AFmean_single_symbol( N_c,T_b,x,y,w);
AF_ocdm = AFmean_lfm_OFDM_single( N_c,T_b,mu,x,y,w );
​
figure;grid on;hold on
surf(X,Y,AF_ofdm,'EdgeColor','none')
% title('OFDM平均模糊函数','fontsize',14)
xlabel('归一化时延','fontsize',14),ylabel('归一化频移','fontsize',14)
colormap('default')
% surface(x, [0,0], [zeros(1,amt)
;AF_ocdm(
1
,:)],
'EdgeColor'
,[
000
],
'FaceColor'
,[
000
]);
zlim([0,1]);
view(-46,26)
​
​
figure;grid on;hold on
surf(X,Y,AF_ocdm,'EdgeColor','none')
% title('OFDM平均模糊函数','fontsize',14)
xlabel('归一化时延','fontsize',14),ylabel('归一化频移','fontsize',14)
colormap('default')
% surface(x, [0,0], [zeros(1,amt)
;AF_ocdm(
1
,:)],
'EdgeColor'
,[
000
],
'FaceColor'
,[
000
]);
zlim([0,1]);
view(-46,26)
% view(0,90)
%% 距离模糊函数 
AC_ofdm=AF_ofdm(501,:);
AC_ocdm=AF_ocdm(501,:);
​
figure;grid on;hold on;
plot(x,AC_ofdm,'k','linewidth',1.5) 
plot(x,AC_ocdm,'b','linewidth',1.5) 
title('距离模糊函数比较','fontsize',14);
xlabel('归一化时延','fontsize',14),ylabel('归一化幅度','fontsize',14)
legend('OFDM','OCDM')
% ylim([0,1]);
% xlim([-0.2,0.2])
%% 速度模糊函数
DC_ofdm=AF_ofdm(:,256);
DC_ocdm=AF_ocdm(:,256);
​
figure;grid on;hold on;
plot(y,DC_ofdm,'k','linewidth',1.5) 
plot(y,DC_ocdm,'b','linewidth',1.5) 
title('速度模糊函数比较','fontsize',14);
xlabel('归一化频移','fontsize',14),ylabel('归一化幅度','fontsize',14)
legend('OFDM','OCDM')
% xlim([y(1),y(end)]);
% xlim([-5,5])
​

                                    

这篇关于OFDM-OCDM雷达通信一体化信号模糊函数对比研究【附MATLAB代码】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930560

相关文章

向您的项目添加 C 和 C++ 代码 基于Android 2.2已经以上 新姿势 谷歌推荐的最新方式

搭配使用 Android Studio 2.2 或更高版本与 Android Plugin for Gradle 版本 2.2.0 或更高版本时,您可以将 C 和 C++ 代码编译到 Gradle 与 APK 一起打包的原生库中,将这类代码添加到您的应用中。您的 Java 代码随后可以通过 Java 原生接口 (JNI) 调用您的原生库中的函数。如果您想要详细了解如何使用 JNI 框架,请阅读

RxJava Android初探和常用实战代码

下面的代码是基于RX1.0 //创建被观察者 也就是事件发布者 Subscriber 因此 SubscriberOn实际上是控制call回调应该所处线程Observable<Integer> observable = Observable.create(new Observable.OnSubscribe<Integer>() {@Overridepublic void call(Subscr

追踪源码抄袭android的xml转drawable代码实现recyclerview分割线-用代码是些shape selector 等等方案都在这里啦。...

追踪源码找到了这句话,所以也可以理解为什么网上要那样写了.这其实官方就是这样写的。 那么我接下来就要手写一个recyclerview的shape分割线 public static Drawable createFromXmlInner(Resources r, XmlPullParser parser, AttributeSet attrs,Theme theme) throws XmlPull

mac笔记本android studio使用java函数无法获取环境变量的解决方法

println "signfile:"+System.getenv("PS1") properties.load(project.rootProject.file(System.getenv("qssqsignfile")).newDataInputStream()) 发现无论是系统的还是 用户目录下的环境变量~/.bash_profile的都获取为null,下面https://blo

代码随想录算法训练营Day29 | 491.递增子序列、46.全排列、47.全排列 II | Python | 个人记录向

注:5.1—5.3放假。 本文目录 491.递增子序列做题看文章 46.全排列做题看文章 47.全排列 II做题看文章 以往忽略的知识点小结个人体会 491.递增子序列 代码随想录:491.递增子序列 Leetcode:491.递增子序列 做题 写了一会,但捋不出思路。可能是先找出局部最大递增序列,如何再回溯? 看文章 自己的思路有问题。首先,是在保存path时不能ret

[原创]产生多个随机不重复打乱不重复的最优性能代码实现探索

在接手键盘项目的时候发现某些代码写的比较奇怪,看半天才知道原来通过巧妙的方式实现了,刚开始还以为存在bug - -,.. 那么既然已经发车,那就继续优化性能呗.发现公司的那种写法效率还不是很高,但是至少比网上百分之80的效率高太多了 下面是我写的这几种方法,很多方法和和网上的方法差不多的, 容器优化 首先说说 java集合中哪些增删快,哪些查询快吧. 具体参考这个地址包含详细的图 不重复的set

测试键盘布局 预览键盘的基础代码。

KeyboardView viewById = (KeyboardView) findViewById(R.id.keyboard);Keyboard province_keyboard = new Keyboard(this, R.xml.bcs_symbols);// Keyboard province_keyboard = new Keyboard(this, R.xml.bc

jni模块开发c/c++代码不生效问题解决

我这电脑卡的死,jni模块开发真的很操蛋,主app没有jni代码,搞的修改代码只能一次一次手动调用,效率非常低下。非常不爽,但是没啥办法了. 直接打开gradle模块点击build,或者assembleDebug

c语音全局变量与静态全局变量和静态局部变量代码区常量const

1 全局变量可以跨文件使用 2、全局变量可以多次声明,但是定义值只能定义一次。 3、静态全局变量只能限定本文件使用。 4、局部静态变量只能再局部代码块里面才能访问。 5、局部静态变量被多次执行,不会被多次定义,也就是说如果定义在for循环里面,下次循环值还是之前的。 6、const修饰的无法用来定义初始化大小,因为这个是可以通过操作指针修改,所以用#define定义的方可使用。 7、const修

超容易理解的进制转换代码

void tentoeight(int num){if (num!=0){int m = num % 8;//取余数num = num / 8;//顺序tentotwo(num);printf("%d", m);//逆序}else{}} 二进制 void tentotwo(int num){if (num!=0){int m = num % 2;//取余数num = num / 2;//