• 海洋中不同阶数简正波的传播


    clear all;close all;clc;

    %%%--------------------------------------------------------------------------

    %硬质均匀浅海声场的波束传播 (海面绝对软,海底绝对硬)

    %参考资料:水声学原理

    f=5;         

    j=(-1).^(1/2);

    w=2*pi*f;          %发射频率

    z0=15;             %声源深度

    c0=1500;          %海水中的声速

    k=w/c0;            %波数

    H=1000;             %海深度 N=round(H*w/(pi*c0)+1/2);     %最大简正波阶次

    f_min=(N-1/2)*c0/(2*H);  %最小简正频率

    r=5000;z=35;             %测试点距离声原的长度以及距水面的深度

    fs=300;

    T=1;t=1/fs:1/fs:T;

    %------------------固定r=500;z=35接收的各号简正波---------------------------- 

    for n=1:N An=(k.^2-((n-1/2)*pi/H).^2).^(1/2);       %波数k0的水平分量

    Kzn=(k.^2-An.^2).^(1/2);                  %本征值,波数k0的竖直分量

    xishu=(-j*2/H*(2*pi/(An*r)).^(1/2))*sin(Kzn*z0)*exp(-j*(An*r-pi/4));%中间系数设置

    p(n,:)=xishu*sin(Kzn*z)*exp(j*w*t); %各号简正波信号传播

    plot(t,p(n,:));hold on;   %简正波的时域波形

    end

    legend('各号简正波的时域波形');

    %-----------------群速度设置------------------------------------------------

    %各阶简正波的方向,波的阶数越高,则偏离z轴的角度越小,则群速度越小,越晚到达同一点

    %--------------------------------------------------------------------------

    A1=(k.^2-((1-1/2)*pi/H).^2).^(1/2);

    theta_1=asin(A1/k);

    Cg(1)=c0*A1/k;         %阶数1的群速度

    tao(1)=0;

    A2=(k.^2-((2-1/2)*pi/H).^2).^(1/2);

    theta_2=asin(A2/k);

    Cg(2)=c0*A2/k;               %阶数2的群速度

    tao(2)=round(fs*abs(r/Cg(1)-r/Cg(2)));   %阶数1,2的时间延迟点数

    p2=[p(2,:),zeros(1,tao(2))];         %阶数1的信号波形,因为考虑到矩阵维数相同才可相加

    %--------------------------------------------------------------------------

    %我其实对接下来这个循环抱有疑问,首先,不同阶数的简正波,阶数越大,时延点数越多,tao=[0,23,76,172,353,767,3498]

    %p(n,:)原本是一个7*300的矩阵,代表7个阶数的简正波的传播。后面补零是合理的,因为理论上是n阶简正波,但是我们取了7阶,所以后面是零,补零是合适的

    %自己这几天觉得自己好辣鸡,难过。jpg

    for n=2:N

     An=(k.^2-((n-1/2)*pi/H).^2).^(1/2);       %波数k0的水平分量

    theta_n=asin(An/k);                          %各阶简正波的方向,波的阶数越高,则偏离z轴的角度越小,则群速度越小

    Cg(n)=c0*An/k;               %n阶群速度

    tao(n)=round(fs*abs(r/Cg(1)-r/Cg(n)));    %n阶波与n-1阶波的时延差

    pn=[zeros(1,tao(n)),p(n,:)];

    p2=[p2,zeros(1,length(pn)-length(p2))]+pn;  %矩阵相加维数须相同

    end

    figure;plot(p2);title('各号简正波的时域波形到达同一点延时相加频率相位图');

    figure;plot(1:3647,p2);title('各号简正波的时域波形到达同一点延时相加频率相位图');%把上图的x轴设为1:3647,得到不一样的图

    figure;plot(abs(p2));title('各号简正波的时域波形到达同一点延时相加频率相位图');

    自己按照这个程序的思路,编写了亮点模型的程序,将亮点看做两个点源,将两个点源的简正波时延后,相同阶数相加,得到结果,不知道对不对。

    %水声传播简正波计算程序 %设置两个亮点,一个在(0,15),一个在(10,15),代表一个目标的两个亮点

    clear all;close all;clc;

    %%%--------------------------------------------------------------------------

    %硬质均匀浅海声场的波束传播(海面绝对软海底绝对硬)

    f=5;         

    w=2*pi*f;          %发射频率

    z0=15;             %深度

    c0=1500;          %海水中的声速

    k=w/c0;            %波数

    H=1000;             %海深度

    N=round(H*w/(pi*c0)+1/2);     %最大简正波阶次

    f_min=(N-1/2)*c0/(2*H);  %最小简正频率

    fs=300;T=1;

    t=1/fs:1/fs:T;

    %------------------1号亮点(0,15),固定r=5000;z=35接收的各号简正波---------------------------- 

    figure(1); z01=15;             %1号亮点在(r1,z01)=(0,15)

    r1=5000;z1=35;             %信号接收点距离声原的长度以及距水面的深度

    for n=1:N

    An=(k.^2-((n-1/2)*pi/H).^2).^(1/2);       %波数k0的水平分量

    Kzn=(k.^2-An.^2).^(1/2);                  %本征值,波数k0的竖直分量

    xishu1=(-j*2/H*(2*pi/(An*r1)).^(1/2))*sin(Kzn*z01)*exp(-j*(An*r1-pi/4));%中间系数设置

    p1(n,:)=xishu1*sin(Kzn*z1)*exp(j*w*t); %各号简正波信号传播

    plot(t,p1(n,:));hold on;   %简正波的时域波形

    end

    legend('1号亮点(0,15),简正波阶数N=7,各号简正波的时域波形');

    %------------------2号亮点(10,15),固定r=5000;z=35接收的各号简正波---------------------------- 

    figure(2);

    z02=15;             %2号亮点在(r1,z01)=(0,15)

    r2=4990;z2=35;             %信号接收点距离声原的长度以及距水面的深度

    for n=1:N

    An=(k.^2-((n-1/2)*pi/H).^2).^(1/2);       %波数k0的水平分量

    Kzn=(k.^2-An.^2).^(1/2);                  %本征值,波数k0的竖直分量

    xishu2=(-j*2/H*(2*pi/(An*r2)).^(1/2))*sin(Kzn*z02)*exp(-j*(An*r2-pi/4));%中间系数设置

    p2(n,:)=xishu2*sin(Kzn*z2)*exp(j*w*t); %各号简正波信号传播

    plot(t,p2(n,:));hold on;   %简正波的时域波形

    end

    legend('2号亮点(10,15),简正波阶数N=7,各号简正波的时域波形');

    %%--求同一时刻的在信号接收点接受到的信号---------------------------------------

    %对1号亮点进行处理----------------------------

    %群速度设置:各阶简正波的方向,波的阶数越高,则偏离z轴的角度越小,则群速度越小,越晚到达同一点 %--------------------------------------------------------------------------

    for n=1:N

     A1(n)=(k.^2-((n-1/2)*pi/H).^2).^(1/2);       %波数k0的水平分量

    theta1_(n)=asin(A1(n)/k);                          %各阶简正波的方向,波的阶数越高,则偏离z轴的角度越小,则群速度越小

    Cg1(n)=c0*A1(n)/k;               %n阶群速度

    tao1(n)=round(fs*abs(r1/Cg1(1)-r1/Cg1(n)));    %n阶波与n-1阶波的时延差

    end

    for n=1:N    

    pp1(n,:)=[zeros(1,tao1(n)) p1(n,:)

    zeros(1,tao1(7)-tao1(n))];

    end

    %对2号亮点进行处理----------------------------

    %群速度设置:各阶简正波的方向,波的阶数越高,则偏离z轴的角度越小,则群速度越小,越晚到达同一点 %--------------------------------------------------------------------------

    for n=1:N  

    A2(n)=(k.^2-((n-1/2)*pi/H).^2).^(1/2);       %波数k0的水平分量

    theta2_(n)=asin(A2(n)/k);                          %各阶简正波的方向,波的阶数越高,则偏离z轴的角度越小,则群速度越小

    Cg2(n)=c0*A2(n)/k;               %n阶群速度

    tao2(n)=round(fs*abs(r2/Cg2(1)-r2/Cg2(n)));    %n阶波与n-1阶波的时延差

    end

    for n=1:N    

    pp2(n,:)=[zeros(1,tao2(n)) p2(n,:) zeros(1,tao2(7)-tao2(n))];

    end

    %-----------------相同阶数的简正波加在一起。

    figure;

    for n=1:N  

       pp_2(n,:)=[pp2(n,:)

    zeros(1,length(pp1)-length(pp2))];    

    ppp(n,:)=pp1(n,:)+pp_2(n,:);  

       plot(1:3798,ppp(n,:));hold on;   %简正波的时域波形

    end

    legend('两个亮点,简正波阶数N=7,各号简正波的时域波形');

    虽然不知道对不对,可喜可贺,忙活了两天,终于懂了一些简正波的知识,去年学水声学原理的时候编写海洋分层的程序,简直要吐血,现在觉得还是很简单的,加油吧。

  • 相关阅读:
    CSS3:三个矩形,一个宽200px,其余宽相等且自适应满铺
    pidera安装node.js(树莓派)
    深入JavaScript模块化编程
    c# 多显示器设置主屏幕(Set primary screen for multiple monitors)
    c# 获取移动硬盘信息、监听移动设备的弹出与插入事件
    C# 弹出USB外接硬盘(U盘)
    log4net 自定义Appender
    Scrum 思考
    监控浏览器关闭事件
    判断地图的点是否在面内 腾讯地图
  • 原文地址:https://www.cnblogs.com/kiki--xiunai/p/10727625.html
Copyright © 2020-2023  润新知