合成孔径声纳成像仿真 单一阵元 收发合置 停走停

%% 合成孔径声纳成像仿真 单一阵元 收发合置 停走停

clear all; clc; close all;

%% %系统参数

c = 1500;   %声速1500m/s;

pulseT = 10e-3;  %发射信号脉宽10ms

f0 = 10e3;  %发射信号中心频率20kHz

B = 6e3;    %发射信号带宽8kHz

fs = 50e3; %系统采样率100kHz

d = 0.2;    %系统实孔径0.2m

v = 0.1;    %系统速度0.1m/s

Ts = 0.08;   %系统采样时长0.08s;

T = 1;      %系统采样周期1s

Y =  40;    %方位向成像范围0-40m

tr1 = 30;   %目标1距离向位置

ty1 = 20;   %目标1方位向位置

tr2 = 35;   %目标2距离向位置

ty2 = 19;   %目标2方位向位置

tr3 = 35;   %目标2距离向位置

ty3 = 20;   %目标2方位向位置

lamda = c/f0;   %信号波长

theta3dB = lamda/d; %系统3dB开角

sigT = 1/fs:1/fs:pulseT;    %信号时间点

signal = chirp(sigT, f0-B/2,pulseT, f0+B/2);    %发射信号

%===============================================================

% 仿真目标回波信号

num = floor(40/v/T); %总采样数据个数

recSigT = 1/fs:1/fs:Ts;  %采样数据时间点

recSignals = zeros(num, length(recSigT));

recSignals1 = zeros(num, length(recSigT));

recSignals2 = zeros(num, length(recSigT));

recSignals3 = zeros(num, length(recSigT));

y11 = ty1-tr1*theta3dB/2;      %声纳能够接受到目标回波信号的方位向范围

y12 = ty1+tr1*theta3dB/2;

----------------------------------------------------------------------------------

for i = 1:num

if i*v >= y11 && i*v <= y12

delay = sqrt(tr1^2+(ty1-i*v)^2)*2/c;

delayNum = round(delay*fs);

recSignals1(i,:) = [ zeros(1, delayNum), signal, zeros(1, length(recSigT)-delayNum-length(signal)) ];

end

end

---------------------------------------------------------------------------------------

y21 = ty2-tr2*theta3dB/2;      %声纳能够接受到目标回波信号的方位向范围

y22 = ty2+tr2*theta3dB/2;

-----------------------------------------------------------------------------------------------

for i = 1:num

if i*v >= y21 && i*v <= y22

delay = sqrt(tr2^2+(ty2-i*v)^2)*2/c;

delayNum = round(delay*fs);

recSignals2(i,:) = [ zeros(1, delayNum), signal, zeros(1, length(recSigT)-delayNum-length(signal)) ];

end

end

-------------------------------------------------------------------------------------------------

y31 = ty3-tr3*theta3dB/2;      %声纳能够接受到目标回波信号的方位向范围

y32 = ty3+tr3*theta3dB/2;

-------------------------------------------------------------------------------------------------

for i = 1:num

if i*v >= y31 && i*v <= y32

delay = sqrt(tr3^2+(ty3-i*v)^2)*2/c;

delayNum = round(delay*fs);

recSignals3(i,:) = [ zeros(1, delayNum), signal, zeros(1, length(recSigT)-delayNum-length(signal)) ];

end

end

% recSignals = recSignals1 + recSignals2 + recSignals3; recSignals = recSignals1;

----------------------------------------------------------------------------------------------

figure;

imagesc(recSignals);

---------------------------------------------------------------------

% 距离向匹配滤波

tempData = zeros(num, length(recSigT)*2-1);

dataR = zeros(num, length(recSigT));

---------------------------------------------------------------------------------------------------------

for i=1:num

tempData(i,:) = xcorr(recSignals(i,:), signal);

dataR(i,:) = (tempData(i,floor(length(tempData(i,:))/2+1):end));

end

----------------------------------------------------------------------------------------------------

figure;

imagesc(abs(dataR));

% 逐点成像

imgR = Ts*c/2;  %距离向成像范围

imgY = Y;       %方位向成像范围

resolution = 0.05;   %成像分辨率0.1m

imgSizeX = floor(imgR/resolution);

imgSizeY = floor(imgY/resolution);

imgData = zeros(imgSizeY, imgSizeX);

-------------------------------------------------------------------------

for row = 1:imgSizeX

for col = 1:imgSizeY

posR = row*resolution;

posY = col*resolution;

sum = 0;

for i = 1:num

y1 = posY-posR*theta3dB/2;      %声纳能够接受到目标回波信号的方位向范围

y2 = posY+posR*theta3dB/2;

if i*v < y1 || i*v > y2

continue;

end

delay = sqrt(posR^2+(posY-i*v)^2)*2/c;

if delay >= Ts

continue;

end

sum = sum + dataR(i, round(delay*fs));

end

imgData(col, row) = sum;

end

end

-------------------------------------------------------------

figure;

imagesc(imgData);

--------------------------------------------------------------

figure;

imagesc(abs(imgData));

------------------------------------------------------------------

figure;

surf(abs(imgData)); shading interp;

--------------------------------------------------------------------------

原文地址:https://www.cnblogs.com/kiki--xiunai/p/10789975.html

时间: 2024-10-11 10:41:01

合成孔径声纳成像仿真 单一阵元 收发合置 停走停的相关文章

poj 2115 (解单变元模线性方程)

http://poj.org/problem?id=2115 题意: 给出a,b,c,k,求x,使得(a+c*x)%(2^k)=b 限制: 0 <= a,b,c < 2^k; 1 <= k <= 32 思路: 拓展欧几里得单变元模线性方程 令 A=c;C=((b-a)%(2^k)+2^k)%(2^k);B=2^k 则这道题就化为Ax%n=B 对于Ax%B=C -> Ax+By=C -> d=Ext_gcd(A,B,x,y) //d其实为gcd(A,B) -> if

单链表的就地逆置问题

问题描述:编写一个单链表的成员函数,实现对带头结点的单链表的就地逆置操作 涉及变量:position:Node型变量,用于存放尚未反转的结点中首结点的位置 temp:用于标记执行反转操作的结点 涉及教材:<数据结构--Java语言描述(第2版)> 清华大学出版社 大致思路: 将头结点的指针域设为空,再将原来的结点从首结点开始依次连接在头结点之后,即可将原来位置倒置 代码如下: 以上是我对单链表就地逆置的一些理解,希望对各位有所帮助 190116 Rewivy 原文地址:https://www.

python3 元祖内置函数

元组和列表是类似的,只不过元组是对列表的二次加工列表:list,元素可以修改或增加li=[1,2,3,4,5]元组:tuple,不可修改,不能增加或删除,建议使用在数据不允许更改的地方tu=(1,2,3,4,5) 元组和列表一样也是可以被索引,切片,操作方式和列表相似 tu=(1,2,3,4,) v=tu[0] print(v) v1=tu[0:2] print(v1) 运行结果1(1, 2) #如何将字符串转化为元组#直接用tuple进行转换,不需要for循环 s="chenchao"

白扯之聊聊我们的情怀

这周科研时间占据了60%的,睡觉30%,最后那可怜的10%时间留给了前端,现在整个人处于蒙圈状态.今天我们不聊科研,不聊前端,来,来,我们聊一聊情怀. 作为一位伪文艺程序媛平时除了听周杰伦的悲伤情歌以外,最喜欢的就是民谣.为了证明这一切我还特意买了把吉他,好吧,它至今还被遗弃在宿舍的某个角落里.之所以要聊到民谣还要从今天单曲循环的一首歌曲说起, 好想被风刮走 刮遍整个地球的那种 在我爱的城市停 走 停 走 是谁把冲动 说成青春期躁动 以为还十五六 这首歌出自万岁爷的<蜜蜂>,如果你以为it i

PCIE_DMA实例二:xapp1052的EDK仿真

一:前言 这篇博客是我应一位网友之约写的,他想要学习基于FPGA的PCIe DMA控制器设计,但是手上没有合适的Xilinx开发板,而且xapp1052又没有提供仿真代码,让他的学习陷入了困境.所以我想了想,还是用EDK搭建一个微小系统,然后用modelsim来仿真xapp1052的DMA收发控制,这样应该是最全面的理解PCIe_DMA了,希望对大家都有帮助. 二:前期准备 1.Xapp1052 Demo(http://download.csdn.net/download/yuzeren48/7

STM32M CUBE实现printf打印调试信息以及实现单字节接收

在写单片机程序时我们一般喜欢使用printf来通过串口打印调试信息,但这个函数是不可以直接使用的,必须做点对库函数的改动. 详细工程下载地址: http://download.csdn.net/detail/liucheng5037/8847961 STM32M CUBE是ST官方提供的库以及初始化工具,很好很强大,但是在UART方面值提供了如下函数: HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *

SAR成像学习(五)方位向成像及matlab代码解析

1 overview overview of this blog 2 critical points 目标区域如下图: 正侧视情况 斜测视的情况 注意y轴的原点在合成孔径的中间,以下成像只研究这一个合成孔径的成像问题.请留意图中Y 0 ,Y c ,X c  等的位置.另外一个需要注意的定义是aspect angle of the radar with respect of the target area θ n (μ) : θ n (μ)=arctan(y n ?μx n  ) 它可以用来表示平

面向对象中关于元类的介绍与异常处理

一.异常处理 1. 什么是异常处理     异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常     没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止 异常包含三个部分:         1. traceback异常的追踪信息         2. 异常的类型         3. 异常的信息 错误分为两大类:         1. 语法上的错误:在程序运行前就应该立即修正         2. 逻辑上的错误 2. 为何要异常处理 避免程序因为异常而崩溃,所以在应用程

使用CSS3和JavaScript创建一个光滑,动画的全屏搜索表单

设计良好且易于访问的搜索UI可以鼓励用户更频繁地与您网站的搜索功能进行互动,从而提高用户满意度并增加页面浏览量.为此,随着小屏幕设备的主导地位,搜索盒的趋势是使它们变得非常大和大胆.在本教程中,我们将逐步介绍如何创建一个精美,精心设计的全屏搜索表单,该表单可以在所有现代浏览器和设备上运行良好. 创建标题和搜索图标界面 首先,我们将使用左侧徽标的经典图案和一些导航链接以及最右侧的搜索图标快速整理标题部分,所有内容都垂直居中.最终点击图标将触发全屏搜索框.而不是使用CSS花车,我们将转向 CSS F