基于matlab实现的多普勒频移海底混响点散射模型程序

news2024/11/16 20:39:39

完整程序:

 %有多普勒频移的海底混响点散射模型
clear all; close all; clc    


H=100;              %海水深度
D=50;               %合置声纳深度
c=1500;             %声速
azm=pi/6;          %水平方位角
u=-27;              %垂直散射系数
v=20;              %声纳运动速度
fs=25000;           %采样频率
f0=4000;            %中心频率
T=0.001;          %仿真步长
rou=0.5; % 0.85;    %散射体密度

startt=0.08;        %混响起始时间
endt=0.5;          %混响起始时间
t=0:1/fs:endt-1/fs;
Nt=length(t);
Rb1=zeros(size(t));

R1=zeros(size(t));

t1=0.05;

ts=0:1/fs:t1-1/fs;
s1=exp(1i*2.*pi.*f0.*ts);                 %CW信号

Ns=length(ts);
% 信号时域
figure(1);
plot(ts,real(s1));
axis([0 0.06 -1 1]);    %axis([xmin xmax ymin ymax])
xlabel('时间/s');
ylabel('幅度');
title('CW信号');

%信号频谱
X1=abs(fft(s1));

figure(2);

f=fs*(0:Ns/2)/Ns;
plot(f,X1(1:Ns/2+1));
xlabel('频率/Hz');
title('CW信号频谱')
grid on;%添加网格

m=20; %m次运算取平均
for i=1:m
    for tr=startt:T:endt
        r1=tr*c/2;
        r2=(tr+T)*c/2;
        As=(r2^2-r1^2)*azm/2;
        Na=poissrnd(As*rou,1,1);  %产生均值为面积的按泊松分布的一个数
        r=r1+rand(1,Na)*(r2-r1);
        phi=rand(1,Na)*2*pi;
        alf=-pi/12+pi/6.*rand(1,Na);
        for n=1:Na
                d=r(n);
                %计算多普勒频移
                cosbt=(sqrt((r(n))^2-D^2))/r(n);
                fd1=2*v/c*f0*cos(alf(n))*cosbt;
                s1p=exp(1i*2.*pi.*(f0+fd1).*ts);%多普勒频移相当于对入射波进行了频移

                Nrt=fix(d/c*2*fs);%取整
                Sr=sqrt(10^(u/10))*(H-D)/d;     %散射损失,采用兰伯特(Lambert)定律
                Fr=1/d;                         %传播损失
                h=Sr*Fr^2*exp(1i*phi(n));                
                if Nrt+Ns>Nt
                    Rb1(Nrt+1:Nt)=Rb1(Nrt+1:Nt)+s1p(1:Nt-Nrt).*h;
                else
                    Rb1(Nrt+1:Nrt+Ns)=Rb1(Nrt+1:Nrt+Ns)+s1p.*h;
                end
        end
    end
    R1=R1+Rb1;
end
%混响时域信号
R1=R1/m;
Rr1=real(R1);

figure(3);
plot(t,Rr1);
xlabel('时间/s');
ylabel('归一化瞬时值');
title('CW信号的混响时域信号');

%混响频谱
F1=abs(fft(Rr1));                
figure(4);
f1=fs*(0:Nt/2)/Nt;
plot(f1,F1(1:Nt/2+1));
xlabel('频率/Hz');
ylabel('归一化瞬时值');
title('CW信号的混响频域信号');


%%%%%%求多普勒%%%%%%%%%%%%%%%%%%%%%%%
tao=0.002;
fai=pi/6;
%%%找底位置%%%%%%%
tc=0:1/fs:endt-1/fs;
cpy=exp(1i*2*pi*f0*tc).*(tc>0 & tc<t1);
CPY=conj(fft(cpy));

R2=fft(R1);
crr=ifft(R2.*CPY);

figure(5)
plot(t,real(crr))

[~,bt]=max(real(crr));


tn=tao*fs;
x1=R1(bt:end-tn);
x2=R1(bt+tn:end);
xout=x1*x2';
fb=abs(angle(xout)/2/pi/tao)
vout=fb*c/2/cos(fai)/f0

    
 

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

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

相关文章

Linux基础指令(四)

目录 前言1. find & which 指令1.1 find1.2 which1.3 alias1.4 where 2、grep 指令3、xargs 指令结语&#xff1a; 前言 欢迎各位伙伴来到学习 Linux 指令的 第四天&#xff01;&#xff01;&#xff01; 在上一篇文章 Linux基本指令(三) 当中&#xff0c;我们学会了通过…

Python爬虫-某网酒店评论数据

前言 本文是该专栏的第6篇,后面会持续分享python爬虫案例干货,记得关注。 本文以某网的酒店数据为例,采集对应酒店的评论数据。具体思路和方法跟着笔者直接往下看正文详细内容。(附带完整代码) 注意:本文的案例“数据集”,选用的是本专栏上一篇“Python爬虫-某网酒店数…

【JAVA-Day19】深入探讨 Java 泛型和枚举的精髓

深入探讨 Java 泛型和枚举的精髓 深入探讨 Java 泛型和枚举的精髓摘要引言一、Java 泛型二、Java 枚举三、泛型和枚举的区别和使用场景区别泛型和枚举的使用场景泛型的使用场景枚举的使用场景 四、总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&am…

后端中间件安装与启动(Redis、Nginx、Nacos、Kafka)

后端中间件安装与启动 RedisNginxNacosKafka Redis 1.打开cmd终端&#xff0c;进入redis文件目录 2.输入redis-server.exe redis.windows.conf即可启动&#xff0c;不能关闭cmd窗口 &#xff08;端口配置方式&#xff1a;redis目录下的redis.windows.conf配置文件&#xff0c;…

线程池(重点)

1.线程池的三大方法 package com.kuang.pool;import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; //Executors工具类 三大方法 //使用线程池&#xff0c;创建线程 public class Demo01 {public static void main(String[] args) { // …

RHCSA_Linux 从命令行管理文件

目录 一、文件命令规范&#xff1a; 二、创建链接文件 1、创建软链接文件 2、创建硬链接文件 三、目录操作命令 1、创建目录 -- mkdir 2、统计目录及文件的空间占用情况 -- du 3、删除目录文件 四、创建、删除普通文件 1、创建普通文件 2、删除普通文件 五、数据流和…

春秋云镜 CVE-2010-1870/CVE-2013-1965

春秋云镜 CVE-2010-1870 S2-005 远程代码执行漏洞 靶标介绍 struts2将http的每个参数名解析为OGNL语句执行(可理解为java代码)。OGNL表达式通过#来访问struts的对象&#xff0c;struts框架通过过滤#字符防止安全问题&#xff0c;然而通过unicode编码(u0023)或8漏洞(43)即绕过…

【项目经验】:elementui多选表格默认选中

一.需求 在页面刚打开就默认选中指定项。 二.方法Table Methods toggleRowSelection用于多选表格&#xff0c;切换某一行的选中状态&#xff0c;如果使用了第二个参数&#xff0c;则是设置这一行选中与否&#xff08;selected 为 true 则选中&#xff09;row, selected 详细…

Docker部署单点Elasticsearch与Kibana

一 、 创建网络 因为需要部署kibana容器&#xff0c;因此需要让es和kibana容器互联。这里创建一个网络&#xff1a; docker network create es-net # 创建一个网络名称为:es-net 二 、拉取并加载镜像 方式一 docker pull elasticsearch:7.12.1 版本为elasticsearch的7…

线性代数基础-矩阵

八、矩阵的基础概念 1.矩阵 我们忘掉之前行列式的一切&#xff0c;列一种全新的数表&#xff0c;虽然长得很像&#xff0c;但是大不相同&#xff0c;首先一个区别就是矩阵不能展开成一个值&#xff0c;这里不讨论矩阵的空间意义 { a 11 x 1 a 12 x 2 a 13 x 3 . . . a 1…

CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程

一、基础工程搭建 在上一章最后一讲的BLE蓝牙例程中&#xff0c;我们使用了沁恒官方的BLE调试助手完成数据发送&#xff0c;接下来我们使用Android Studio完成一款简易的BLE调试助手。 1、参考文章 我这里参考了CSDN中的一位博主“摸爬滚打的程序媛”的文章以及对应文章中的…

2023最新玩客云刷机armbian,部署docker并配置各种常用容器镜像

#以下安装从基于 rootonecloud:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy刷机开始 &#xff08;以下刷机教程部分资料来源于&#xff1a;玩客云刷ARMBIAN系统…

linux查看进程对应的线程(数)

首先&#xff0c;top或ps查看进程列表&#xff0c;确定要查看的进程pid&#xff0c;如下面40698 查看进程的线程情况 查看进程&#xff1a;top -p 40698 查看线程&#xff1a;top -p 40698 -d 3 -H 其中-d是刷新频率 可看到此进程共211个线程&#xff0c;运行中的是211个。…

C++基础-类和对象(下)

文章目录 前言一、构造深入1.初始化列表2.隐式类型转换1.隐式类型转换2.explicit 3.委托构造 二、类的静态成员1.静态成员声明2.静态成员定义3.静态成员特性 三、重载运算符和类型转化1.关系及算数运算符重载2.递增递减运算符重载及如何区分3.赋值运算符重载4.重载输入输出运算…

【基础篇】五、基于SpringBoot来整合SSM的案例(上)

文章目录 0、创建模块1、实体类的快速开发Lombok2、数据层开发&#xff08;CRUD&#xff09;3、分页4、条件查询5、业务层的标准开发6、业务层的快速开发&#xff08;基于MyBatisPlus&#xff09;7、表现层开发 接下来在SpringBoot下&#xff0c;把Spring、SpringMVC、MyBatis整…

项目进度管理(3-3)PERT计划评审技术详解

1 计划评审技术起源 PERT&#xff08;Program Evaluation and Review Technique&#xff0c;项目评估和审查技术&#xff09;的起源可以追溯到20世纪50年代&#xff0c;与美国国防部和美国海军的项目管理有关。 PERT的发展始于20世纪50年代初&#xff0c;当时美国国防部正面临…

ConfigMaps-2

文章目录 主要内容一.Volume 挂载 ConfigMap1.创建一个Pod&#xff0c;起挂载的内容&#xff0c;将来自下面的configmap&#xff1a;代码如下&#xff08;示例&#xff09;: 2.解释 二.环境变量 ConfigMap1.创建一个名为 mysqlpass 且包含 passwordABCabc123 的 configmap&…

第一、二题见贴图第三题 实现求1-100之间的质数?

print("模式A") while True: for i in range (1,7): for j in range(1, 7): if j < i: print(j,end"\t") print() break print() print("模式B") while True: for i in range (6,…

【测开】Java快转Python 学习路径记录

写在前面 工作后需要用python&#xff0c;记录下学习的一些资料和总结&#xff0c;仅供参考&#xff0c;希望对你有帮助。 2023/9/8 (碎碎念&#xff1a;我太懂工作要用时自己却不会的感觉了…心好累&#xff0c;问大家怎么学就说这简单…md记录一下&#xff09; Part.1 对比 …

基于Java汽车服务商城系统 设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…