基于Matlab模拟用于海况海洋学研究的 X 波段雷达系统(附源码)

news2025/1/27 13:04:01

目录

一、定义雷达系统参数

二、对海面进行建模

 三、配置雷达收发器

四、生成数据多维数据集

五、处理海面回波

六、总结

七、程序


海事雷达系统在充满挑战的动态环境中运行。为了改进对感兴趣目标的检测并评估系统性能,必须了解海面返回的性质。

在本例中,将模拟用于海况海洋学研究的 X 波段雷达系统。雷达系统是一个固定的海上平台。将首先使用 Elfouhaily 光谱模型在海况 4 处生成移动的海面。然后,将从海面生成 IQ 回波,并研究模拟海面信号的统计数据和时频行为。

一、定义雷达系统参数

定义一个距离分辨率约为 30 米的 X 波段雷达系统。使用函数验证范围分辨率是否符合预期。

rng(2021)       % Initialize random number generator

% Radar parameters
freq = 9.39e9;  % Center frequency (Hz)
prf = 500;      % PRF (Hz)
tpd = 100e-6;   % Pulse width (s)
azBw = 2;       % Azimuth beamwidth (deg)
depang = 30;    % Depression angle (deg)
antGain = 45.7; % Antenna gain (dB)
fs = 10e6;      % Sampling frequency (Hz)
bw = 5e6;       % Waveform bandwidth (Hz)
bw2rangeres(bw)

接下来,将海面定义为风速为 4 节、分辨率为 4 米的海况 2。将海面长度设置为 512 米。

% Sea surface
seaState = 4;   % Sea state number 
vw = 19;        % Wind speed (knots)
L = 512;        % Sea surface length (m) 
resSurface = 2; % Resolution of sea surface (m)

% Calculate wavelength and get speed of light
[lambda,c] = freq2wavelen(freq);

% Setup sensor trajectory and simulation times
rdrht = 100;                                   % Radar platform height (m) 
rdrpos = [-L/2 0 rdrht];                       % Radar position [x y z] (m)
numPulses = 1024;                              % Number of pulses 
scenarioUpdateTime = 1/prf;                    % Scenario update time (sec) 
scenarioUpdateRate = prf;                      % Scenario update rate (Hz)
simTime = scenarioUpdateTime.*(numPulses - 1); % Overall simulation time (sec) 

二、对海面进行建模

定义方案。接下来,添加海动。保持属性默认值以使用Elfouhaily频谱。将分辨率设置为 2 米。Elfouhaily模型由海光谱和角扩散函数组成。海谱模型获取物理属性,如风速和获取。

还可以通过将属性设置为来导入自己的自定义模型。文献中的替代海光谱模型包括JONSWAP,Donelan-Pierson和Pierson-Moskovitz光谱。

% Create scenario
scene = radarScenario('UpdateRate',scenarioUpdateRate, ...
    'IsEarthCentered',false,'StopTime',simTime);

% Define Elfouhaily sea spectrum 
seaSpec = seaSpectrum('Resolution',resSurface) % See Elfouhaily reference

现在,选择一个反射率模型。雷达工具箱™为海面提供 9 种不同的反射率模型,涵盖广泛的频率、掠角和海况。星号表示默认模型。在命令窗口中键入有关每个型号的使用和适用掠角的更多信息。海水反射率模型如下。

  • APL:半经验模型支持在 1 至 100 GHz 范围内的频率上具有低掠角。 适用于海况 1 至 6。

  • GIT:半经验模型支持在 1 至 100 GHz 范围内的频率上具有低掠角。 适用于海况 1 至 6。

  • Hybrid:半经验模型支持在 500 MHz 至 35 GHz 频率范围内进行中低掠角。 适用于海况 0 至 5。

  • Masuko:支持在 8 至 40 GHz 频率范围内具有低掠角的经验模型。 适用于海况 1 至 6。

  • Nathanson:支持在 300 MHz 至 36 GHz 范围内的频率上具有低掠角的经验模型。 适用于海况 0 到 6。

  • NRL*:支持在 500 MHz 至 35 GHz 范围内频率范围内具有低掠角的经验模型。 适用于海况 0 至 6。

  • RRE:支持在 9 至 10 GHz 频率范围内实现低掠角的数学模型。 适用于海况 1 至 6。

  • Sittrop:支持在 8 至 12 GHz 频率范围内具有低掠角的经验模型。 适用于海况 0 至 7。

  • TSC:支持在 500 MHz 至 35 GHz 范围内的频率上具有低掠角的经验模型。 适用于海况 0 到 5。

对于此示例,将反射率设置为 GIT(佐治亚理工学院)模型。

% Define reflectivity model
pol = 'V'; % Polarization 
reflectModel = surfaceReflectivity('Sea','Model','GIT','SeaState',seaState,'Polarization',pol)

使用海向雷达方案添加海面。将先前定义的海光谱和反射率模型分配给海面。,和属性用于生成Elfouhaily海光谱。通过对这些特性的深思熟虑的选择和海面的分辨率,可以产生不同波龄的重力和毛细波。

毛细管波是高频、小波长的波,其嵴为圆形,V形槽小于2厘米。重力波是更长的低频波。该物体无法模拟破波,破波是达到临界振幅的波,导致波能转化为湍流动能。风速越大,传递到海面的能量就越浪越大。

取水是风畅通无阻地吹过的水的长度。Elfouhaily模型将获取与反波时代联系起来 

 海面的高程值可以通过使用海面上的方法获得。使用helperSeaSurfacePlot绘制雷达和海面。

% Configure sea surface
knots2mps = 0.514444; % Knots to meters/sec
vw = vw*knots2mps; % Wind speed (m/s)
seaSurf = seaSurface(scene,'SpectralModel',seaSpec,'RadarReflectivity',reflectModel, ...
    'WindSpeed',vw,'WindDirection',0,'Boundary',[-L/2 L/2; -L/2 L/2])
% Plot sea surface and radar 
x = -L/2:resSurface:(L/2 - 1); 
y = -L/2:resSurface:(L/2 - 1); 
[xGrid,yGrid] = meshgrid(x,y);
z = height(seaSurf,[xGrid(:).'; yGrid(:).'],scene.SimulationTime); 
helperSeaSurfacePlot(x,y,z,rdrpos)

 调查海面高程值的统计数据。首先,使用辅助海面CDF计算并绘制累积分布函数。可以使用此图来确定观测值小于或等于特定高程值的概率。例如,90% 的高程将小于或等于约 1 米。95%的海拔将小于或等于约1.5米。如果要更改生成的海面的统计数据以增加海拔,则可以增加风速以向海面输送更多能量。

% CDF
helperSeaSurfaceCDF(z)

接下来,使用助手估计显著波高估计有效波高。估计值是通过取波高的最高 1/3 的平均值获得的,其中波高从波谷到波峰定义,如图所示。

% Significant wave height
actSigHgt = helperEstimateSignificantWaveHeight(x,y,z)

 海况 4 的预期波高在 1.25 到 2.5 米之间。请注意,模拟的海面在预期值的范围内。

expectedSigHgt = [1.25 2.5]; % Sea state 4
actSigHgt >= expectedSigHgt(1) && actSigHgt <= expectedSigHgt(2)

最后,绘制海面高度随时间变化的子集,以可视化由于Elfouhaily海光谱引起的运动。请注意,雷达数据收集的模拟时间仅运行 2 秒,但绘制 10 秒的时间段以更好地了解运动。取消注释帮助程序海面运动绘图以绘制移动的海面。

% Plot sea surface motion 
plotTime = 0:0.5:10; % Plot time (sec)
% helperSeaSurfaceMotionPlot(x,y,seaSurf,plotTime); % Uncomment to plot motion

 三、配置雷达收发器

在本节中,配置雷达系统属性。定义天线和发射的线性调频 (LFM) 波形。将雷达传感器分配给雷达平台。

% Create a radar platform using the trajectory information
rdrplat = platform(scene,'Position',rdrpos);

% Create a radar sensor looking to the East
rdr = radarTransceiver('MountingAngles',[0 depang 0],'NumRepetitions',1);

% Configure the LFM signal of the radar
rdr.Waveform = phased.LinearFMWaveform('SampleRate',fs,'PulseWidth',tpd, ...
    'PRF',prf,'SweepBandwidth',bw);

% Set receiver sample rate and noise figure
rdr.Receiver.SampleRate = fs;
rdr.Receiver.NoiseFigure = 10; 

% Define transmit and receive antenna and corresponding parameters
ant = phased.SincAntennaElement('Beamwidth',azBw);
rdr.TransmitAntenna.OperatingFrequency = freq;
rdr.ReceiveAntenna.OperatingFrequency = freq;
rdr.Transmitter.Gain = antGain;
rdr.Receiver.Gain = antGain;
rdr.TransmitAntenna.Sensor = ant;
rdr.ReceiveAntenna.Sensor = ant;

% Add radar to radar platform
rdrplat.Sensors = rdr;

四、生成数据多维数据集

现在场景和雷达系统已经定义,使用该方法从海面生成返回,并使用该方法收集 IQ 数据,两者都驻留在对象中。默认情况下,模拟主瓣中的杂波返回。

使用帮助程序帮助程序 PlotRawIQ和帮助程序更新绘图原始 IQ绘制未处理的原始 IQ 数据。

% Collect clutter returns with the clutterGenerator
clutterGenerator(scene,rdr); 

% Run the scenario
numSamples = 1/prf*fs;
maxRange = 20e3; 
Trng = (0:1/fs:(numSamples-1)/fs);
rngGrid = [0 time2range(Trng(2:end),c)];
[~,idxTruncate] = min(abs(rngGrid - maxRange));
iqsig = zeros(idxTruncate,numPulses);
ii = 1; 
hRaw = helperPlotRawIQ(iqsig);
while advance(scene)
    tmp = receive(scene); % nsamp x 1
    iqsig(:,ii) = tmp{1}(1:idxTruncate); 
    if mod(ii,128) == 0
        helperUpdatePlotRawIQ(hRaw,iqsig);
    end
    ii = ii + 1;
end
helperUpdatePlotRawIQ(hRaw,iqsig);

五、处理海面回波

用于脉冲压缩返回的 IQ 数据。使用帮助程序范围时间图可视化范围时间行为。如果海面是静态的,会在绘图中看到笔直的水平线,但海面返回表现出活力。在给定的范围内,幅度随时间变化。请注意,由于几何形状(雷达高度、波束宽度和俯角),回波发生在一小部分范围内。

% Pulse compress
matchingCoeff = getMatchedFilter(rdr.Waveform);
rngresp = phased.RangeResponse('RangeMethod', 'Matched filter', ...
    'PropagationSpeed',c,'SampleRate',fs);
[pcResp,rngGrid] = rngresp(iqsig,matchingCoeff); 

% Plot
pcsigMagdB = mag2db(abs(pcResp));
[maxVal,maxIdx] = max(pcsigMagdB(:));
pcsigMagdB = pcsigMagdB - maxVal;
helperRangeTimePlot(rngGrid,prf,pcsigMagdB);

 使用最大值的范围指数,并使用帮助程序MagTimePlot可视化此范围箱的幅度与时间的关系。

% Plot magnitude versus time
[idxRange,~] = ind2sub(size(pcsigMagdB),maxIdx); 
helperMagTimePlot(pcsigMagdB(idxRange,:),numPulses,prf,rngGrid(idxRange));

 接下来,使用helperSTFTPlot生成相同范围箱的时频图。使用短时傅里叶变换函数生成绘图。

% STFT
[S,F,T] = stft(pcResp(idxRange,:),scenarioUpdateRate);
helperSTFTPlot(S,F,T,lambda,rngGrid(idxRange));

 请注意,由于海面的运动,范围箱的检测速度会随时间而变化。在较长的仿真时间内,可以检测到周期性。 最后,使用helperHistPlot,从 180 到 210 米范围内的数据量级值形成直方图。请注意,直方图的形状类似于威布尔分布。如果您有统计和机器学习工具箱™,则可以使用该函数从数据量级中获取 Weibull 分布的参数。

% Look at a subset of data in range and convert to decibel scale
[~,idxMin] = min(abs(rngGrid - 180)); 
[~,idxMax] = min(abs(rngGrid - 210)); 
pcsigMagdB = mag2db(abs(pcResp(idxMin:idxMax,:)));

% Remove any inf values
pcsigMagdB(isinf(pcsigMagdB(:))) = []; 

% Shift values to be positive
pcsigMagdB = pcsigMagdB(:) - min(pcsigMagdB(:)) + eps; 

% Weibull parameters
% Note: These values can be obtained if you use fitdist(pcsigMagdB,'weibull')
scale = 37.8589;
shape = 7.80291;

% Plot histogram with theoretical PDF overlay
helperHistPlot(pcsigMagdB,scale,shape);

 六、总结

在此示例中,学习了如何:

  • 构建雷达场景,

  • 模拟移动的海面,

  • 调查海面统计数据和行为,

  • 对模拟的 IQ 返回执行时频处理。

这个例子可以很容易地扩展到包括目标,以支持海上监视和雷达成像等应用。

七、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

打开下面的“RadarReturnsFromMovingSeaSurfacesExample.mlx”文件,点击运行,就可以看到上述效果。

关注下面公众号,点击文章《基于Matlab模拟用于海况海洋学研究的X波段雷达系统》​​​​​​​,获取下载链接。

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

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

相关文章

【操作系统】2.4 死锁

这一节也非常重要 2.4.1 死锁的概念 2.4.1 死锁的概念_StudyWinter的博客-CSDN博客 在并发环境下&#xff0c;各种进程因竞争资源而造成的一种互相等待对方手里的资源&#xff0c;导致各进程都阻塞&#xff0c;都无法向前推进的现象。这就是死锁&#xff0c;死锁发生后&#…

Jest API使用方法

如上面的知识图谱所示&#xff0c;一个常见的测试框架通常需要实现这些功能: ● before/after 钩子函数: 如beforeEach&#xff0c;afterEach&#xff0c; ● Mock方法&#xff1a; 函数Mock&#xff0c;时间mock等。 ● 断言: 判断一个描述是否正确&#xff0c;在Jest中常为 e…

你心心念念的RabbitMQ个人实践来了来了它来了

前言 MQ&#xff08;Message Queue&#xff09;就是消息队列&#xff0c;其有点有很多&#xff1a;解耦、异步、削峰等等&#xff0c;本文来聊一下RabbitMQ的一些概念以及使用。 RabbitMq 案例 Springboot整合RabbitMQ简单案例 基本概念 Exchange&#xff1a;消息交换机&a…

云原生系列 【基于CCE Kubernetes编排实战二】

✅作者简介&#xff1a; CSDN内容合伙人&#xff0c;全栈领域新星创作者&#xff0c;阿里云专家博主&#xff0c;阿里云问答板块版主&#xff0c;华为云享专家博主&#xff0c;掘金后端评审团成员 &#x1f495;前言&#xff1a; 最近云原生领域热火朝天&#xff0c;那么云原生…

Hystirx限流:信号量隔离和线程池隔离

背景&#xff1a; 最近工作中要处理服务高并发的问题&#xff0c;大流量场景下限流熔断降级可以说是必不可少的&#xff0c;打算对限流做一次改造&#xff0c;所以要先了解一下hytrix相关内容&#xff0c;比如了解一下线程池隔离和信号量隔离的区别。 **信号量&#xff1a;**信…

[网络工程师]-应用层协议-DHCP

BOOTP是最早的主机配置协议&#xff0c;动态主机配置协议&#xff08;Dynamic Host Configuration Protocol&#xff0c;DHCP&#xff09;则是在其基础上进行了改良的协议&#xff0c;是一种用于简化主机IP配置管理的IP管理标准。通过DHCP协议&#xff0c;DHCP服务器为DHCP客户…

集合学习笔记——Collection 全家桶

Collection是我们日常开发中使用频率非常高的集合&#xff0c;它的主要实现有List和Set,区别是List是有序的&#xff0c;元素可以重复;Set是无序的&#xff0c;元素不可以重复&#xff0c;我们简单看下继承关系&#xff1a; List的实现类主要线程不安全的ArrayList和LinkedList…

推挽输出和开漏输出-三极管-mos管

一、推挽输出 1.1推挽输出的概念 推挽&#xff08;push-pull&#xff09;输出是由两个MOS或者三极管组成&#xff0c;两个管子始终保持一个导通&#xff0c;另一个截止的状态。 图1 推挽电路示意图 当输入高电平时&#xff0c;叫做推&#xff1b; 上管Q1导通&#xff0c;下管…

【目标检测】Faster R-CNN论文的讲解

目录&#xff1a;Faster R-CNN论文的讲解一、前言二、回顾Fast R-CNN三、引入Faster R-CNN四、Faster R-CNN的介绍4.1 框架结构4.2 RPN如何产生候选区域的4.3 损失函数4.4 训练候选框提取网络4.5 RPN和Fast R-CNN共享特征的方法4.5.1 交替训练法4.5.2 近似联合训练法一、前言 …

C语言——学生信息管理系统

目录 功能展示 界面展示 所有功能模块&#xff1a; 功能1&#xff1a;菜单模块&#xff08;显示功能菜单&#xff09; 功能2&#xff1a;增加学生信息 功能3&#xff1a;输出学生信息&#xff08;查看所有学习信息&#xff09; 功能4&#xff1a;修改学生信息 功能5&a…

python3-GUI概述及应用

目录一、什么是GUI二、Python GUIPySimpleGUI概述一、PySimpleGUI简介二、PySimpleGUI特征三、输出设备hello,world猜数字一、玩家猜数字二、电脑猜数字21点游戏一、21点游戏简介二、程序代码一、什么是GUI 图形用户界面&#xff08;Graphical User Interface&#xff0c;简称…

十六、CANdelaStudio深入-CDD与CDDT的差异(新建自定义服务)

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的CDD与CDDT的差异与新建自定义服务,欢迎…

数字图像处理(一)——什么是数字图像

一、什么是数字图像处理&#xff1f; 一副图像可以被定义为一个二维函数f(x,y)&#xff0c;其中x和y是空间平面坐标&#xff0c;而对任意一对空间坐标(x,y)处幅值f称为图像在该点的强度或者灰度。当x和y以及灰度值f是有限的离散数值时&#xff0c;我们称该图像为数字图像。像素…

排序算法简述

一、概述 常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序、桶排序、基数排序&#xff0c;这些排序各自有各自的特点。按照时间时间复杂度可以分为 O(n^2):冒泡、插入、选择排序&#xff1b;O(nlogn):归并、快速排序&#xff1b;O(n):桶排序、计数排序、基…

[附源码]java毕业设计自治小区物业设备维护管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]Python计算机毕业设计房地产销售系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

SSM+Mysql实现的共享单车管理系统(功能包含分角色,登录、用户管理、服务点管理、单车管理、分类管理、学生信息管理、单车租赁、信息统计、系统设置等)

博客目录SSMMysql实现的共享单车管理系统实现功能截图系统功能使用技术代码完整源码SSMMysql实现的共享单车管理系统 本系统一个学校共享单车管理的项目&#xff0c;通过线上系统化的管理&#xff0c;可以为后续的运营以及单车的项目运转提供极大的帮助。 (文末查看完整源码) …

【计算机视觉(CV)】基于图像分类网络VGG实现中草药识别(二)

【计算机视觉&#xff08;CV&#xff09;】基于图像分类网络VGG实现中草药识别&#xff08;二&#xff09; 作者简介&#xff1a;在校大学生一枚&#xff0c;华为云享专家&#xff0c;阿里云专家博主&#xff0c;腾云先锋&#xff08;TDP&#xff09;成员&#xff0c;云曦智划项…

Graph (discrete mathematics)

In mathematics, and more specifically in graph theory, a graph is a structure amounting to a set of objects in which some pairs of the objects are in some sense “related”. The objects correspond to mathematical abstractions called vertices (also called n…

餐厅食材采购信息管理系统的设计与实现

摘 要 网络的广泛应用给生活带来了十分的便利。所以把餐厅食材采购信息管理与现在网络相结合&#xff0c;利用JSP技术建设餐厅食材采购信息管理系统&#xff0c;实现餐厅食材采购的信息化。则对于进一步提高餐厅食材采购信息管理发展&#xff0c;丰富餐厅食材采购信息管理经验…