zoukankan      html  css  js  c++  java
  • 浅水声信道模型的建立(5)----自由场,没有散射,3个目标研究

    clc;close all;clear all;

    %参考论文:声呐目标回波的亮点模型

    %自由场下的回波

    %发射信号:(z=0,r=10)

    %目标:% r1=5000;z1=15;%1号亮点% r2=5010;z2=15;%2号亮点% r3=5050;z3=15;%3号亮点

    %接收信号: rr=0;zz=20:30;

    %1号目标假设为直径a=4的球体

    %参数==================================

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

    SNR = 60;            %信噪比           Unit:dB

    f0=1000;             %信号频率         Unit:Hz

    fs=10000;            %采样率          Unit:Hz     

    T=5/f0;              %信号脉宽         Unit:s

    ts=0:1/fs:T-1/fs;    %一个脉冲包络的持续时间序列

    Ns=length(ts);  

    startt=0.5;endt=8;   %混响持续时间

    w=2*pi*f0;

    k=w/c;

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

    Sample_time=endt;

    Ts = 1/fs;      %采样时间间隔

    sample_num = fix(Sample_time*fs);       %采样总点数 FIX:让x向0靠近取整 

    nTs = (0:sample_num-1)/fs;              %离散的采样时刻    s

    ample_num1 = fix(T*fs);              %信号的采样点数 

    nTs1 = (0:sample_num1-1)/fs;            %信号的离散的采样时刻 

    receive_signal = [zeros(size(nTs))];      %用于存储水听器接收的信号 

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

    %发射信号(z0=0,r0=10)

    z0=0;

    r0=10;

    p=sin(2*pi*f0*ts);       %发射信号

    p_fft=fft(p);

    %目标1============================================

    %目标1位置:r1=5000,z1=15;

    %目标1为球形,采用球形的传递函数的幅度反射因子

    %求回波

    %解决三个参数问题:幅度反射因子Am; 时延taom,相位跳变faim

    R1=2;  %目标1的半径为2

    r1=5000;z1=15;

    distance1=sqrt((r1-r0)^2+(z1-z0)^2);  %声源与目标1等效中心的距离

    Am1=0.5*sqrt(R1^2)/sqrt(1+R1/r1)^2;   %球的传递函数幅度反射因子

    taom1=(distance1-R1)/c;

    faim1=pi;

    pb1_fft=exp(1i*k*r1)/r1*Am1*exp(1i*w*taom1)*exp(1i*faim1).*p_fft;   %目标1回波

    pb1=ifft(pb1_fft); real_time =(distance1-R1)/c;                                                 %信号的实际到达时刻 3.3333s

    signal_start_time = fix(real_time*fs)+1;                                     %信号第一个采样点的时刻

    phase = (signal_start_time*Ts-real_time)/Ts*2*pi;                            %得到信号的第一个采样点的相位

    receive_signal(signal_start_time:(signal_start_time+sample_num1-1)) =pb1;    %模拟采样

    pb1 = receive_signal;

    %目标1---------------------------------------------------

    %散射信号:

    sanshe1=conv(p,pb1);

    sanshe1_fft=fft(sanshe1);

    N=length(sanshe1);

    t=startt:1/fs:startt+(N-1)/fs;

    %目标1--------------------------------------------------

    %阵列接收 rr=0,zz=21:30;

    rr=0;

    for kkk=1:10    

    zz=20+kkk;    

    distance1_temp=sqrt((zz-z1)^2+(rr-r1)^2);    %阵元i与目标1的距离    

    Am1=0.5*sqrt(R1^2)/sqrt(1+R1/r1)^2;   %球的传递函数幅度反射因子    

    taom1=(distance1_temp-R1)/c;    

    faim1=pi;    

    pb1__fft=exp(1i*k*r1)/r1*Am1*exp(1i*w*taom1)*exp(1i*faim1).*p_fft;   %目标1回波    

    pb1__=ifft(pb1__fft);    %1x80049    

    %%%%%%%%%%    

    real_time =(distance1_temp-R1)/c;                                                    

    signal_start_time = fix(real_time*fs)+1;                                        

    phase = (signal_start_time*Ts-real_time)/Ts*2*pi;                               

    receive_signal(signal_start_time:(signal_start_time+sample_num1-1)) =pb1__;     %signal_start_time:33321,sample_num1=50    

    pb1_(kkk,:) = receive_signal;  %阵列接收到的信号 end %得到的阵列接收到的信号与散射信号相关。

    %这里有一个问题,我在

    for kkk=1:10    

    total1(kkk,:)=conv(pb1_(kkk,:),sanshe1);      %10x160048    

    total1_fft=fft(total1);

    end

     %目标1===================================================================

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

    D=1;                %阵元的距离

    M = 10;             % 阵元数

    m=[0:M-1];          %阵元序号

    d=0.2;           %系统实孔径0.2

    T=5/f0;              %信号脉宽         Unit:s %0.0031

    k=d/(c*T);

    doa1=atan(5/100);                                  %doa为线阵法线方向与声源的夹角

    theta = linspace(-90,90,360);                        % 扫描方位角   1X360矩阵 %要构造一个160048的矩阵放drive的数值

    drive_=zeros(M,length(total1));

    for kkk = 1:length(theta)          %1:360    

    tow=sin(theta(kkk)*pi/180)*D/c;          

    for kk=1:M                           %M个阵元        

    Dtheta = exp(-1i*2*pi*f0*tow*(kk-1)); %补偿    %每一个角度,与每一个阵元形成一个信号补偿        

    drive(kk,1) = Dtheta;    %10x1矩阵   %在该扫描角度下,阵列接收的信号补偿            

    for temp=1:length(total1)                

    drive_(kk,temp)=drive(kk,1);              

    end                    

    end                  

    tempbeamout1(kkk) = sum(abs(sum(total1.*drive_))); %输出   %10x160048矩阵乘以10*160048的矩阵

    end

    Y1 = 20*log10(tempbeamout1/max(tempbeamout1));

    Y1_max=max(Y1);

    %目标2===========================================================

    %目标2位置:r2=5010,z1=15;

    %目标2为球形,采用球形的传递函数的幅度反射因子

    %2号目标假设为直径a=8的球体

    %求回波

    %解决三个参数问题:幅度反射因子Am; 时延taom,相位跳变faim

    r2=5010;z2=15;%目标二的位置(圆心所在的位置)

    R2=4;         %目标2的半径为4

    distance2=sqrt((r2-r0)^2+(z2-z0)^2);

    Am2=0.5*sqrt(R2^2)/sqrt(1+R2/r2)^2;   %球的传递函数幅度反射因子

    taom2=(distance2-R2)/c;

    faim2=pi;

    pb2_fft=exp(1i*k*r2)/r2*Am2*exp(1i*w*taom2)*exp(1i*faim2).*p_fft;  %目标2回波

    pb2=ifft(pb2_fft); real_time = (distance2-R2)/c;                                                            %信号的实际到达时刻 3.3333s

    signal_start_time = fix(real_time*fs)+1;                                     %信号第一个采样点的时刻

    phase = (signal_start_time*Ts-real_time)/Ts*2*pi;                            %得到信号的第一个采样点的相位

    receive_signal(signal_start_time:(signal_start_time+sample_num1-1)) =pb2; %模拟采样

    pb2 = receive_signal ;

    %目标2------------------------------------------------

    sanshe2=conv(p,pb2);

    sanshe2_fft=fft(sanshe2);

    %目标2------------------------------------------------

    %阵列接收 rr=0,zz=21:30;

    rr=0;

    for kkk=1:10    

    zz=20+kkk;    

    distance2_temp=sqrt((zz-z2)^2+(rr-r2)^2);    %阵元i与目标1的距离    

    Am1=0.5*sqrt(R2^2)/sqrt(1+R2/r2)^2;   %球的传递函数幅度反射因子    

    taom2=(distance2_temp-R2)/c;    

    faim1=pi;    

    pb2__fft=exp(1i*k*r2)/r2*Am2*exp(1i*w*taom2)*exp(1i*faim2).*p_fft;   %目标1回波    

    pb2__=ifft(pb2__fft);    %1x80049    

    %%%%%%%%%%    

    real_time =(distance1_temp-R2)/c;                                                    

    signal_start_time = fix(real_time*fs)+1;                                        

    phase = (signal_start_time*Ts-real_time)/Ts*2*pi;                               

    receive_signal(signal_start_time:(signal_start_time+sample_num1-1)) =pb2__;     %signal_start_time:33321,sample_num1=50    

    pb2_(kkk,:) = receive_signal;  %阵列接收到的信号

    end

    %得到的阵列接收到的信号与散射信号相关。

    for kkk=1:10    

    total2(kkk,:)=conv(pb2_(kkk,:),sanshe2);      %10x160048    

    total2_fft=fft(total2);

    end

     %目标2===================================================================

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

    D=1;                %阵元的距离

    M = 10;             % 阵元数

    m=[0:M-1];          %阵元序号

    d=0.2;           %系统实孔径0.2

    T=5/f0;              %信号脉宽         Unit:s %0.0031

    k=d/(c*T);

    doa2=atan(5/5010);                                  %doa为线阵法线方向与声源的夹角

    theta = linspace(-90,90,360);                        % 扫描方位角   1X360矩阵 %要构造一个160048的矩阵放drive的数值

    drive_=zeros(M,length(total2));

    for kkk = 1:length(theta)          %1:360    

    tow=sin(theta(kkk)*pi/180)*D/c;          

    for kk=1:M                           %M个阵元        

    Dtheta = exp(-1i*2*pi*f0*tow*(kk-1)); %补偿    %每一个角度,与每一个阵元形成一个信号补偿        

    drive(kk,1) = Dtheta;    %10x1矩阵   %在该扫描角度下,阵列接收的信号补偿            

    for temp=1:length(total2)                

    drive_(kk,temp)=drive(kk,1);              

    end                    

    end                  

    tempbeamout2(kkk) = sum(abs(sum(total2.*drive_))); %输出   %10x160048矩阵乘以10*160048的矩阵

    end

    Y2 = 20*log10(tempbeamout2/max(tempbeamout2));

    Y2_max=max(Y2);

    %目标3==============================================

    %目标3位置:r3=5050,z3=15;

    %目标3为球形,采用球形的传递函数的幅度反射因子

    %3号目标假设为直径a=4的球体 %求回波

    %解决三个参数问题:幅度反射因子Am; 时延taom,相位跳变faim

    r3=5050;z3=15;         %目标3的位置(圆心所在的位置)

    R3=2;         %目标3的半径为2

    distance3=sqrt((r3-r0)^2+(z3-z0)^2);

    Am3=0.5*sqrt(R3^2)/sqrt(1+R3/r3)^2;   %球的传递函数幅度反射因子

    taom3=(distance3-R3)/c;

    faim3=pi;

    pb3_fft=exp(1i*k*r3)/r3*Am3*exp(1i*w*taom3)*exp(1i*faim3).*p_fft;  %目标2回波

    pb3=ifft(pb3_fft); real_time = (distance3-R3)/c;                                                            %信号的实际到达时刻 3.3333s

    signal_start_time = fix(real_time*fs)+1;                                     %信号第一个采样点的时刻

    phase = (signal_start_time*Ts-real_time)/Ts*2*pi;                            %得到信号的第一个采样点的相位

    receive_signal(signal_start_time:(signal_start_time+sample_num1-1)) =pb3; %模拟采样

    pb3= receive_signal ;

    %目标3------------------------------------------------

    sanshe3=conv(p,pb3); sanshe3_fft=fft(sanshe3);

    %目标3------------------------------------------------------------------------

    %阵列接收 rr=0,zz=21:30;

    rr=0;

    for kkk=1:10    

    zz=20+kkk;    

    distance3_temp=sqrt((zz-z3)^2+(rr-r3)^2);    %阵元i与目标1的距离    

    Am3=0.5*sqrt(R3^2)/sqrt(1+R3/r3)^2;   %球的传递函数幅度反射因子    

    taom3=(distance3_temp-R3)/c;    

    faim3=pi;    

    pb3__fft=exp(1i*k*r3)/r3*Am3*exp(1i*w*taom3)*exp(1i*faim3).*p_fft;   %目标1回波    

    pb3__=ifft(pb3__fft);    %1x80049    

    %%%%%%%%%%    

    real_time =(distance3_temp-R3)/c;                                                    

    signal_start_time = fix(real_time*fs)+1;                                        

    phase = (signal_start_time*Ts-real_time)/Ts*2*pi;                               

    receive_signal(signal_start_time:(signal_start_time+sample_num1-1)) =pb3__;     %signal_start_time:33321,sample_num1=50    

    pb3_(kkk,:) = receive_signal;  %阵列接收到的信号

    end

    %得到的阵列接收到的信号与散射信号相关。

    for kkk=1:10   

      total3(kkk,:)=conv(pb3_(kkk,:),sanshe3);      %10x160048    

    total3_fft=fft(total3);

    end

     %目标3===================================================================

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

    D=1;                %阵元的距离

    M = 10;             % 阵元数

    m=[0:M-1];          %阵元序号

    d=0.2;           %系统实孔径0.2

    T=5/f0;              %信号脉宽         Unit:s %0.0031

    k=d/(c*T);

    doa3=atan(5/5050);                                  %doa为线阵法线方向与声源的夹角

    theta = linspace(-90,90,360);                        % 扫描方位角   1X360矩阵 %要构造一个160048的矩阵放drive的数值

    drive_=zeros(M,length(total1));

    for kkk = 1:length(theta)          %1:360    

    tow=sin(theta(kkk)*pi/180)*D/c;          

    for kk=1:M                           %M个阵元       

      Dtheta = exp(-1i*2*pi*f0*tow*(kk-1)); %补偿    %每一个角度,与每一个阵元形成一个信号补偿       

      drive(kk,1) = Dtheta;    %10x1矩阵   %在该扫描角度下,阵列接收的信号补偿            

    for temp=1:length(total1)                

    drive_(kk,temp)=drive(kk,1);             

      end                    

    end                 

      tempbeamout3(kkk) = sum(abs(sum(total3.*drive_))); %输出   %10x160048矩阵乘以10*160048的矩阵

    end

    Y3 = 20*log10(tempbeamout3/max(tempbeamout3));

    Y3_max=max(Y3);

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

    %画图:

    figure(1);

    subplot(321);plot(1:length(pb1_fft),abs(pb1_fft)); title('目标1--回波信号--频域');xlabel('omega/pi');ylabel('幅值');

    subplot(322);plot(1:length(pb1),pb1); title('目标1--回波信号--时域');xlabel('时间');ylabel('幅值');

    subplot(323);plot(1:length(pb2_fft),abs(pb2_fft)); title('目标2---回波信号-频域');xlabel('omega/pi');ylabel('幅值');

    subplot(324);plot(1:length(pb2),pb2); title('目标2---回波信号--时域');xlabel('时间');ylabel('幅值');

    subplot(325);plot(1:length(pb3_fft),abs(pb3_fft)); title('目标3---回波信号-频域');xlabel('omega/pi');ylabel('幅值');

    subplot(326);plot(1:length(pb3),pb3); title('目标3---回波信号--时域');xlabel('时间');ylabel('幅值');

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

    figure(2);

    subplot(321);plot(t,sanshe1);xlabel('时间');ylabel('幅值');title('目标1--散射回波--时域');

    subplot(322);plot(1:length(sanshe1_fft),sanshe1_fft);xlabel('omega/pi');ylabel('|e^j^omega|');title('目标1--散射回波--频域');

    subplot(323);plot(t,sanshe2);xlabel('时间');ylabel('幅值');title('目标2--散射回波--时域');

    subplot(324);plot(1:length(sanshe2_fft),sanshe2_fft);xlabel('omega/pi');ylabel('|e^j^omega|');title('目标2--散射回波--频域');

    subplot(325);plot(t,sanshe3);xlabel('时间');ylabel('幅值');title('目标3--散射回波--时域');

    subplot(326);plot(1:length(sanshe3_fft),sanshe3_fft);xlabel('omega/pi');ylabel('|e^j^omega|');title('目标3--散射回波--频域');

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

    figure(3);

    subplot(321);plot(1:length(pb1(1,:)),pb1(1,:)); xlabel('omega/pi');ylabel('|e^j^omega|');title('阵元1接收到的信号--时域');

    subplot(322);plot(1:length(pb1_fft(1,:)),abs(pb1_fft(1,:))); xlabel('omega/pi');ylabel('|e^j^omega|');title('阵元1接收到的信号--频域');

    subplot(323);plot(1:length(pb2(1,:)),pb2(1,:)); xlabel('omega/pi');ylabel('|e^j^omega|');title('阵元2接收到的信号--时域');

    subplot(324);plot(1:length(pb2_fft(1,:)),abs(pb2_fft(1,:))); xlabel('omega/pi');ylabel('|e^j^omega|');title('阵元2接收到的信号--频域');

    subplot(325);plot(1:length(pb3(1,:)),pb3(1,:)); xlabel('omega/pi');ylabel('|e^j^omega|');title('阵元3接收到的信号--时域');

    subplot(326);plot(1:length(pb3_fft(1,:)),abs(pb3_fft(1,:))); xlabel('omega/pi');ylabel('|e^j^omega|');title('阵元3接收到的信号--频域');

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

    figure(4);

    subplot(321);plot(1:length(total1(1,:)),total1(1,:)); xlabel('时间');ylabel('幅值');title('阵元1接收到的信号与散射信号相关--total1--时域');

    subplot(322);plot(1:length(total1_fft(1,:)),abs(total1_fft(1,:))); xlabel('omega/pi');ylabel('|e^j^omega|');title('阵元1接收到的信号与散射信号相关--total1_fft--频域');

    subplot(323);plot(1:length(total2(1,:)),total2(1,:)); xlabel('时间');ylabel('幅值');title('阵元2接收到的信号与散射信号相关--total2--时域');

    subplot(324);plot(1:length(total2_fft(1,:)),abs(total2_fft(1,:))); xlabel('omega/pi');ylabel('|e^j^omega|');title('阵元2接收到的信号与散射信号相关--total2_fft--频域');

    subplot(325);plot(1:length(total3(1,:)),total3(1,:)); xlabel('时间');ylabel('幅值');title('阵元3接收到的信号与散射信号相关--total3--时域');

    subplot(326);plot(1:length(total3_fft(1,:)),abs(total3_fft(1,:))); xlabel('omega/pi');ylabel('|e^j^omega|');title('阵元3接收到的信号与散射信号相关--total3_fft--频域');

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

    figure(5);

    subplot(311);plot(theta,Y1);title('目标1的指向性');

    subplot(312);plot(theta,Y2);title('目标2的指向性');

    subplot(313);plot(theta,Y3);title('目标3的指向性');

  • 相关阅读:
    [Android Training视频系列]2.3 Stopping and Restarting an Activity
    [Android Training视频系列]2.1 Starting an Activity
    【Android每日一讲】2012.11.29 自定义下拉菜单模式 Spinner与setDropDownViewResource
    【Android每日一讲】2012.11.28 快速地搜索手机文件引擎 Java IO的应用
    [Android Samples视频系列之ApiDemos] AppActivityTranslucent
    [Android Samples视频系列之ApiDemos] AppActivityTranslucentBlur和Wallpaper
    [Android Training视频系列]2.2 Pausing and Resuming an Activity
    [Android Training视频系列]1.4 Starting Another Activity
    [Android Samples视频系列之ApiDemos] AppActivitySaveRestore State
    [Android Samples视频系列之ApiDemos] AppActivitySetWallpaper
  • 原文地址:https://www.cnblogs.com/kiki--xiunai/p/10848249.html
Copyright © 2011-2022 走看看