单脉冲测角-和差比幅法-方向图传播因子-函数编写

news2024/9/23 7:26:09

方向图传播因子-函数编写

      • 和差比幅法单脉冲测角原理
      • 代码
      • 仿真结果
      • 参数说明

和差比幅法单脉冲测角原理

有关单脉冲测角和差比幅法的原理已经在博文单脉冲测角-和差比幅法中详细介绍了,我们在实际仿真的时候,往往需要在给定来波方向下方向图转化因子(directional pattern propagation fac-tor ,DPPF)的输出,它的输入是来波方向,输出即波束形成之后的系数——方向图转化因子,它表示阵列下经过各阵元加权求和后对某一个来波方向的信号的影响。
在编程的时候,往往希望采用模块化的结构,我将求方向图转化因子的过程编写为了一个函数,供参考。这个函数中除了能输出DPPF之外,还可以绘制和差波束方向图、单脉冲比鉴角曲线、一次函数法拟合曲线以及在该来波方向下的拟合值。
由于差波束比幅法的单脉冲比MRC为:
M R C = Δ ( φ ) Σ ( φ ) = ∣ a H ( φ l ) a ( φ ) ∣ − ∣ a H ( φ r ) a ( φ ) ∣ ∣ w Σ H a ( φ ) ∣ MRC=\frac{\Delta(\varphi)}{\Sigma(\varphi)}=\frac{\left| a^H(\varphi_l)a(\varphi) \right|-\left| a^H(\varphi_r)a(\varphi) \right|}{\left| w^H_{\Sigma}a(\varphi)\right|} MRC=Σ(φ)Δ(φ)= wΣHa(φ) aH(φl)a(φ) aH(φr)a(φ)
可以看到,和波束和两个相减的波束都是取幅度,所以该函数中也取了幅度。

代码

该函数MonopulseSumDiffFactor的代码如下:

function [sumFactor,diffFactor,fitSlope]=MonopulseSumDiffFactor(elementNum,thetaDseire,thetaMain,thetaDOA,plotEnableHigh)
% 该函数用于单脉冲测角-和差比幅法的方向图仿真和方向图传播因子的生成
%  Author:huasir 2023.11.20 @Beijing
% Input : 
%   * elementNum: 阵元数
%   * thetaDseire:和波束的指向角度
%   * thetaDOA:来波的DOA
%   * thetaMain:3dB主瓣宽度,theta_main = 2theta_mbs
%   * 在该宽度内形成对称的两个波束,实际的波束宽度可以更小
%   * plotEnableHigh: 绘图控制符,1:打开绘图,0:关闭绘图
% Output : 
%    * sumFactor:和波束方向图传播因子
%    * diffFactor:差波束方向图传播因子
%    * fitSlope: 拟合斜率
N = elementNum; %阵元数
theta = (-90:0.1:90); %观测角度范围
theta0 = thetaDseire; %波形形成的方向
thetaL = thetaDseire-1/2*thetaMain; %用于构造差波束的波束1的角度
thetaR = thetaDseire+1/2*thetaMain; %用于构造差波束的波束2的角度,thetaL和thetaR关于theta0对称
theta0 = theta0*pi/180; %弧度换算为角度
theta = theta*pi/180; %弧度换算为角度;
thetaL = thetaL*pi/180; %弧度换算为角度
thetaR = thetaR*pi/180; %弧度换算为角度
d_lembda = 1/2; %阵元间距比波长,一般采用半波长
%% 构造和差波束
a = exp(j*2*pi*d_lembda*(0:N-1)'*sin(theta)); %导向矢量
wSigma = exp(j*2*pi*d_lembda*(0:N-1)'*sin(theta0)); %和波束权向量
wDeltaL = exp(j*2*pi*d_lembda*(0:N-1)'*sin(thetaL)); %用于构造差波束的波束1的权向量
wDeltaR = exp(j*2*pi*d_lembda*(0:N-1)'*sin(thetaR)); %用于构造差波束的波束2的权向量
ySigma = abs(wSigma'*a); %和波束
yDelta = abs(wDeltaL'*a)-abs(wDeltaR'*a); %差波束
%% 绘制和差波束
if plotEnableHigh==1
    figure;
    plot(theta*180/pi,20*log10(ySigma/max(ySigma)),'linewidth',1); %绘制和波束
    hold on;
    plot(theta*180/pi,20*log10(yDelta/max(yDelta)),'linewidth',1); %绘制差波束
    legend('和波束','差波束');
    xlabel('方位角/°');ylabel('归一化功率方向图/dB');
    axis tight;% axistight 使得图形框图靠近数据
    grid on; %添加栅格线
    ylim([-30, 0]); % 为了限制y值范围,使得图像显示的更加合理
    title(sprintf('阵元数:%d,波束方向:%.0f°',N,theta0))%添加图题
end
%% 提取主瓣区域附近的和差波束,并计算单脉冲比
thetaL = thetaDseire-1/2*thetaMain %用于构造差波束的波束1的角度
thetaR = thetaDseire+1/2*thetaMain %用于构造差波束的波束2的角度,thetaL和thetaR关于theta0对称
m1 = round((thetaL-(-90))/0.1+1); %截取主瓣内部分区域对应的下标
m2 = round((thetaR-(-90))/0.1+1); %截取主瓣内部分区域对应的下标
MRC = yDelta(m1:m2)./ySigma(m1:m2); %%计算单脉冲比
%% 绘制单脉冲比曲线
if plotEnableHigh==1
    figure;
    plot((thetaL:0.1:thetaR),MRC,'linewidth',1);
    set(gca,'XTick',[thetaL:1:thetaR]); %设置要显示的坐标轴的刻度
    xlabel('角度(°)');ylabel('和差比幅');
    axis tight;% axistight 使得图形框图靠近数据
    grid on; %添加栅格线
    title('单脉冲比曲线');
end
%% 拟合为一次函数y=kx+b
p = polyfit(MRC,(thetaL:0.1:thetaR),1); % x为单脉冲比,y为角度,第3个输入参数'1'表示拟合为1次函数,返回的p是一个包含两个元素的向量,分别是参数k和b
%% 绘制拟合效果图
yFit = polyval(p,MRC); % 由拟合函数计算得到的角度 
if plotEnableHigh==1
    figure;
    plot((thetaL:0.1:thetaR),MRC,'o','linewidth',1); %点图
    hold on; %保持绘图窗口,在此基础上继续绘图
    plot(yFit,MRC,'linewidth',1); %拟合出的一次函数
    set(gca,'XTick',[-5:1:5]); %设置要显示的坐标轴的刻度
    xlabel('角度(°)');ylabel('和差比幅');
    axis tight;% axistight 使得图形框图靠近数据
    grid on; %添加栅格线
    title('拟合效果图');
end
%% 输出指定角度下来波的方向图转化因子
tempTheta = thetaDOA; %任意取一个角度
tempTheta = tempTheta*pi/180; %角度转化为弧度
aTheta = exp(j*2*pi*d_lembda*(0:N-1)'*sin(tempTheta)); %导向矢量
ySum = abs(wSigma'*aTheta); %和波束的方向图转化因子
yDiff = abs(wDeltaL'*aTheta)-abs(wDeltaR'*aTheta); %差波束的方向图转化因子
% tempMRC = yDiff/ySum
%% 传递参数
sumFactor = ySum; %和波束的方向图传递因子
diffFactor = yDiff; %差波束的方向图传递因子
fitSlope = p(1); %拟合一次函数的斜率,(yDiff/ySum)*p(1)即为输出的角度
fprintf('由拟合曲线得到的角度为%.2f\n',(yDiff/ySum)*p(1));
end

仿真结果

编写主函数进行调用

clear all;close all;clc;
N = 8; %阵元数
theta0 = 0; %波形形成的方向
thetaMian = 10; %
DOA = 2;
plotEnableHigh = 1;
[sumFactor,diffFactor,fitSlope]=MonopulseSumDiffFactor(N,theta0,thetaMian,DOA,plotEnableHigh);

绘制出来的和差波束、单脉冲比曲线以及拟合图如下:
在这里插入图片描述

图1. 比幅法和差波束

在这里插入图片描述

图2. 单脉冲比曲线

在这里插入图片描述

图3. 拟合效果图

参数说明

由拟合曲线得到的角度为1.92°,与2°相差不大。这里的差波束是由两个波束相减得到的,这两个波束指向的角度位于和波束两侧,一左一右,一般而言,这两个角度得位于主瓣内,关于主瓣的计算方式可以参考博文波束形成中的主瓣宽度 ,其计算公式如下。
对于常见的均匀线性阵列结构,阵元间距 d = 1 / 2 λ d=1/2\lambda d=1/2λ的情况下,可以得到主波束宽度为:
θ m b s = 2 θ 0.5 = 50.7 λ N 1 / 2 λ c o s θ Δ ( ∘ ) = 101.4 N c o s θ Δ ( ∘ ) \theta{mbs}=2\theta_{0.5}=\frac{50.7\lambda }{ N1/2\lambda cos\theta_{\Delta}}(^\circ)=\frac{101.4 }{ Ncos\theta_{\Delta}}(^\circ) θmbs=2θ0.5=N1/2λcosθΔ50.7λ()=NcosθΔ101.4()
对于本仿真而言, θ Δ = 0 ° \theta_{\Delta}=0° θΔ= N = 8 N=8 N=8,可以得到主瓣宽度为:
θ m b s = 2 θ 0.5 = 50.7 λ N 1 / 2 λ c o s θ Δ ( ∘ ) = 101.4 N c o s θ Δ ( ∘ ) = 101.4 8 ≈ 12. 6 ∘ \theta{mbs}=2\theta_{0.5}=\frac{50.7\lambda }{ N1/2\lambda cos\theta_{\Delta}}(^\circ)=\frac{101.4 }{ Ncos\theta_{\Delta}}(^\circ)=\frac{101.4}{8}\approx12.6^{\circ} θmbs=2θ0.5=N1/2λcosθΔ50.7λ()=NcosθΔ101.4()=8101.412.6
这里我们取更小的角度,取10°,所以形成差波束的两个角度分别为-5°和5°。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1230322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于代码混淆,看这篇就够了

​ 代码混淆一.基本概念java的bytecode很容易通过JAD等反编译工具还原出源代码。这样势必不满足安全的定义。如何一定程度上保护需要防止被反编译的源代码呢?混淆(obfuscate)技术。注意:用obfuscate防盗版是根本不可能&#xff0c…

java 实现发送邮箱,复制即用,包含邮箱设置第三方登录授权码获取方法

application.yml spring:profiles:active: dev # active: test#邮件附件上传文件大小限制servlet:multipart:max-file-size: 50MB #单个文件大小限制max-request-size: 100MB #总文件大小限制(允许存储文件的文件夹大小)mail:default-encoding: UTF…

[uni-app] uni.showToast 一闪而过问题/设定时间无效/1秒即逝

toast一闪就消失 1.猜测频繁点击导致 – 排除 2.猜测再定时器内导致-- 排除 3.和封装的接口调用一起导致 - 是改原因 深挖发现: axios封装中, 对loading/hindloading进行了配置, 看来是 showToast 与 loading等冲突导致的 wx.hideLoading(Object object) 解决办法 再封装的…

数据结构与算法之美学习笔记:23 | 二叉树基础(上):什么样的二叉树适合用数组来存储?

目录 前言树(Tree)二叉树(Binary Tree)二叉树的遍历解答开篇 & 内容小结 前言 本节课程思维导图: 前面我们讲的都是线性表结构,栈、队列、链表等等。今天我们讲一种非线性表结构,树。问题&…

开源免费的流程设计器如何选型

大家在开发OA办公自动化、ERP、CRM、BPM、低代码平台等项目的时候,经常用到流程引擎,目前主流的开源流程引擎有activiti、flowable、camunda。这几个开源的流程引擎均基于BPMN2.0国际规范标准,其功能均比较强大,接口也很丰富。但涉…

远程数据采集继电器RTU如何应用在智能电动汽车充电桩

远程数据采集继电器(Remote Terminal Unit,RTU)在智能电动汽车充电桩中的应用,可以为充电桩系统提供更高效、安全和可靠的远程监控与控制功能。下面将详细说明RTU在智能电动汽车充电桩中的应用。 远程监控功能: RTU可以…

找不到msvcp110.dll怎么办,msvcp110.dll丢失的修复方法

您可能已经碰见过这样的情况,当您试图打开某个软件时,屏幕上突然跳出一个提示窗口,告诉您 “找不到msvcp110.dll”,“msvcp110.dll丢失”。遇到这种情况是不是让人很焦头烂额呀?别担心,接下来我就为您提供几…

NX二次开发UF_CAM_ask_clear_plane_tag 函数介绍

文章作者:里海 来源网站:里海NX二次开发3000例专栏 UF_CAM_ask_clear_plane_tag Defined in: uf_cam_planes.h int UF_CAM_ask_clear_plane_tag(tag_t object_tag, tag_t * target_tag ) overview 概述 Query the tag of a clearance plane 查询清洁…

使用低代码可视化开发平台快速搭建应用

目录 一、JNPF可视化平台介绍 二、搭建JNPF可视化平台 【表单设计】 【报表设计】 【流程设计】 【代码生成器】 三、使用JNPF可视化平台 1.前后端分离: 2.多数据源: 3.预置功能: 4.私有化部署: 四、总结 可视化低代码…

Spring:IoC,AOP,SpringEL表达式

IoC容器 IoC ,Spring全家桶各个功能模块的基础,是创建对象的容器。 IoC概念 控制反转,将对象的创建进行反转,常规情况下对象由开发者手动创建,而使用IoC不再需要创建对象,由IoC容器根据需求自动创建项目…

ESP32C3小飞控调试

ESP32C3小飞控调试 - 1 ESP32C3小飞控板赶在国庆节前发出打样,假期后上班就收到了样板,但是迟迟没有动手调试,这两天终于抽出时间调试了,调试过程还算顺利,基本没有遇到什么大问题,下面记录一下调试过程。…

NLP | SimKGC论文详解及项目实现

本文主要讲解了论文SimKGC:基于预训练语言模型的简单对比KGC的论文总结以及项目实现。 论文题目:2022_SimKGC: Simple Contrastive Knowledge Graph Completion with Pre-trained Language Models 论文地址:2022.acl-long.295.pdf (aclanthol…

Java的IO流-转换流

乱码问题 package com.itheima.d2;import java.io.*; import java.nio.charset.StandardCharsets;public class Test4 {public static void main(String[] args) {try (//1、创建一个文件字符输入流与源文件接通//Reader fr new FileReader("IO\\src\\itheima04.txt"…

学会这套HttpRunner(17):实现参数化传递,测试开发都直呼内行

参数化实现及重复执行 参数化测试:在接口测试中,为了实现不同组数据对同一个功能模块进行测试,需要准备多组测试数据对模块进行测试的过程。 在httprunner中可以通过如下方式实现参数化: 1、在YAML/JSON 中直接指定参数列表 2、…

创建自定义日志筛选器

Windows的事件查看器中的日志包含了很多信息,但是系统自带的筛选器只能筛选固定的字段和内容。有时候想根据某个事件中的用户名或者IP筛选的时候就没办法了。此时需要创建自定义筛选器来实现。 首先找到希望筛选的日志,调整成详细的XML视图。 这里面就有…

海外代理IP如何找到靠谱的?

现在市面上有很多代理服务商,大家可以根据自己的需求选择一个适合自己业务的的IP代理服务商,现在也有一些免费的,但如果力求稳定安全,还是选择付费的。 这里提醒一句,在买代理IP时最好找这种可以免费试用的&#xff0…

城市生命线丨桥梁健康监测系统应用详情

现代城市当中,桥梁的重要性以及危险性是最高的,因此,对于桥梁的安全健康监测就会变得更加的重要,在科技发展的今天,新型基础设施已经能够准确、实时的监测桥梁的安全和健康。 WITBEE万宾助力建设更健康,智慧…

transformer学习资料

一、NLP 自然语言处理 NLP 是机器学习在语言学领域的研究,专注于理解与人类语言相关的一切。NLP 的目标不仅是要理解每个单独的单词含义,而且也要理解这些单词与之相关联的上下文之间的意思。 常见的NLP 任务列表: 对整句的分类&#xff1…

大数据时代,怎样通过日志分析保护我们的数据!

在今天的大数据时代,大量的数据被生成和存储。对于IT行业来说,日志文件是宝贵的信息财富。 通过合理的日志分析和解读,可以帮助企业提高运维效率、加强安全防护、改进产品质量和优化用户体验,本文将深入探讨日志分析在IT中的重要性…

excel-gen.js 导出excel 功能

目录 概要 整体架构流程 html部分: js部分: json部分: 小结 概要 功能会使用到如下插件: jszip.min.js FileSaver.js jquery.min.js excel-gen.js highcharts.js exporting.js export_data.js 主要是highcharts图表…