浅水声信道模型的建立(4)----只考虑海面海底一次散射,多亮点研究

我思考了一下上一个程序为什么会失败,可能还是太远了,所以这次弄近一点。把5000米改成1000米吧。。。其他的还是不变

function的持续不变,在这里就不重复写了,具体参照上一篇博客

主函数:关于亮点1

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

clc;close all;clear all;

%参考:数字信号处理:page:59p;

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

% r=0;z=10;%发射信号的位置。

% r1=1000;z1=15;%1号亮点

% r2=1010;z2=15;%2号亮点

% r3=1050;z3=15;%3号亮点

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

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

SNR = 60;            %信噪比           Unit:dB H = 100;       %水深                    Unit:m

%Sample_time = 0.1;   %采样时长         Unit:s      假设信号发射的时刻为零时刻

Re_coef_surf = -1;      %水面反射系数 

Re_coef_bottom = 0.8;   %水底反射系数 

Reflex_num =1;         %考虑最大的反射次数

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

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

fs=16000;          %采样率          Unit:Hz      

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

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

Ns=length(ts);    %50

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

Sample_time=endt;

azm=pi/6;

%============================亮点1===========================================
%第一过程:发射换能器到亮点1   % r=0;z=10;%发射信号的位置。
H1 = 10;       %发射点水深           Unit:m
H2 = 15;       %接收点水深           Unit:m
D = 1000;       %接收与发射水平距离  Unit:m
%============================================================================
signal_11=Com_Sonar_data_generation_2(c,fs,f0,T,Sample_time,SNR,H,H1,H2,D,Re_coef_surf,Re_coef_bottom,Reflex_num);
signal_11_fft=fft(signal_11);
X1=abs(fft(signal_11));
X1=X1/max(X1);

%画图
figure(1);
plot(signal_11);
xlabel('时间s');ylabel('幅度');
string = ['信号发生器—亮点1,信噪比SNR=',num2str(SNR),'dB,考虑的最大反射次数',num2str(Reflex_num),'时域'];title(string);

%---------------------------------------------------------------------------------------------------------------
figure(2);
plot(1:length(signal_11_fft),signal_11_fft);
xlabel('频率\omega');ylabel('幅度');
string = ['信号发生器—亮点1,信噪比SNR=',num2str(SNR),'dB,考虑的最大反射次数',num2str(Reflex_num),'频域'];title(string);

%--------------------------------------------------------------------------------------------------------------
figure(3);
N=length(signal_11);
f=1:N/2;   
plot(f,signal_11_fft(1:N/2));
xlabel('频率/Hz');ylabel('归一化幅值');title('频谱的一半');grid on;


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

%过程2:从亮点散射

Np=(endt-startt)*fs; %散射系数的点数48000个点,发射信号持续时间内采样的点

for th=startt:1/fs:endt-1/fs   %混响时间 Np48000个点,th共循环48000次    

r1=c*(th-T)/2;   %T=0.005    

r2=c*th/2;     %c=1500    

N=round((r2^2-r1^2)*azm/2); %azm=0.5236(pi/6)方位角     %随着混响时间的增加,混响点数也在增加    

ain=randn(1,N);     %幅度    

fai=randn(1,N)*2*pi;  %相位      

for i=1:N        

p1(i)=ain(i)*exp(1i*fai(i));       

end    

P1(round((th-startt)*fs)+1)=sum(p1)/r1^2;   %48000

end

% 得到混响信号

R1=conv(signal_11,P1); % length(signal_11)+length(P1)-1;  56000+48000-1=103999 

Rr1=real(R1);

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

figure(4);
t=startt:1/fs:endt+1240*T-6002/fs;      %: 共103999个点,这个是凑出来的
plot(t,Rr1/max(Rr1));
axis([startt endt+1240*T-6002/fs -1 1]);xlabel('时间/s');ylabel('归一化幅值');title('亮点1处--混响');

%---------------------------------------------------------------------------------------------------------------------------
figure(5);
R1_fft=fft(R1);
plot(1:length(R1_fft),R1_fft);
xlabel('\omega/\pi');ylabel('归一化幅值|e^j^\omega|');title('亮点1处--混响---相关后傅里叶');

%-------------------------------------------------------------------------------------------------------------------------
figure(6);
R1_fft=fft(R1);
plot(1:length(R1_fft)/2,R1_fft(1:length(R1_fft)/2));
xlabel('\omega/\pi');ylabel('归一化幅值|e^j^\omega|');title('亮点1处--混响---相关后傅里叶--频谱的一半');


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

%重新思考第三过程: %选取阵列第一个点为参考点,zz=20。zz=20:30,rr=0; %亮点1散射后到达阵列1  r1=5000;z1=15;%1号亮点   rr=0;zz=20:30;%接收信号

H1 = 15;       %发射点水深           Unit:m

D = 1000;       %接收与发射水平距离  Unit:m

for kkk=1:10;       %接收点水深           Unit:m        

H2=20+1*kkk;        

signal_13(kkk,:)=Com_Sonar_data_generation_2(c,fs,f0,T,Sample_time,SNR,H,H1,H2,D,Re_coef_surf,Re_coef_bottom,Reflex_num);

end    

for kkk=1:10    

zhenlie_1(kkk,:)=conv(signal_13(kkk,:),R1);

end   

total_1=zhenlie_1(1,:);

for kkk=2:10    

total_1=zhenlie_1(kkk,:)+total_1;

end

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

figure(7);
plot(1:length(total_1),total_1);
xlabel('时间‘s');ylabel('幅度');title('阵列接收到的亮点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);
doa=atan(5/1000);                                          %doa为线阵法线方向与声源的夹角
w = exp(j*2*pi*k*m'*sin(doa*pi/180));    %每个阵元的时延tow=k*m‘*sin()不同  
temp=zeros(M,length(total_1));
for kkk=1:10
    temp(kkk,1)=w(kkk,1);
end
ww=temp*total_1';     

theta = linspace(-90,90,360);                        % 扫描方位角 a = exp(-j*2*pi*k*m'*sin(theta*pi/180));           %theta是扫描角度% 导向适量

Y = abs(ww'*a); Y = 20*log10(Y/max(Y)); Y_max=max(Y);

figure(8);

plot(theta,Y);

title('未加权方向图'); axis([-90,90,-50,0]); grid on; xlabel('方位角/(\circ)');ylabel( 'P/(dB)');

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

%加权

quanzhi=[zeros(1,90) 0.5*ones(1,45) 1*ones(1,90) 0.5*ones(1,45) zeros(1,90)];

tempp=zeros(360,360);

for kkk=1:360    

tempp(1,kkk)=quanzhi(1,kkk);

end

YY = abs(Y*tempp);    

YY = 20*log10(YY/max(YY));

figure(9);

plot(theta,YY);

title('加权方向图'); axis([-90,90,-50,0]); grid on; xlabel('方位角/(\circ)');ylabel( 'P/(dB)');

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

YYY=2.^(3*Y);

YYY = 20*log10(YYY/max(YYY));

YYY_max=max(YYY);

figure(10);

plot(theta,YYY);

title('加权方向图'); axis([-90,90,-50,0]); grid on; xlabel('方位角/(\circ)');ylabel( 'P/(dB)'); 

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

 最后运行其他两个亮点的程序,得到:

还是分不开。。。。。。。。。。。。。。。。。。。。。。。。。。

猜你喜欢

转载自www.cnblogs.com/kiki--xiunai/p/10808510.html