%对混响的理解有帮助
%无多普勒频移的海底混响单元散射模型卷积法
clc;clear all;close all;
%参数设置============================================================
fs=200000; %采样频率
f0=30000; %中心频率
%k=1250000; %k =B/t =5kHz/4ms
B=5000;
c=1500; %声速
h=50; %距海底距离
u=-27;
rou=1; %密度
v=20;
azm=pi/6; %声纳水平方位角
startt=0.08; %混响起始时间
endt=0.3; %混响终止时间
T=0.005;%脉冲宽度
ts=0:1/fs:T-1/fs;%脉冲时间序列
s1=exp(j*2.*pi.*f0.*ts); %CW信号
k=B/T; %1000000
s2=exp(j*2.*pi.*(f0-B/2).*ts+j*pi.*k.*ts.*ts); %LFM信号
Ns=length(ts);%Ns 1000个点
k1=2*pi*f0/c;%波数 125.6637
k2=2*pi*(f0-B/2+k*ts)/c; %1*1000
% 信号时域=======================================================================
figure(1);
subplot(2,1,1);
plot(ts,real(s1));%取复信号的实部进行画图,如不取实部,系统自动取实部
axis([0 0.005 -1 1]); %axis([xmin xmax ymin ymax]),单轴xlim([0 5])
xlabel('时间/s');ylabel('幅度');title('CW信号');
subplot(2,1,2);
plot(ts,real(s2));
axis([0 0.005 -1 1]);xlabel('时间/s');ylabel('幅度');title('LFM信号');
%信号频谱=================================================================
s1_fft=fft(s1);
s2_fft=fft(s2);
figure(2);
subplot(211);plot(1:length(s1_fft),s1_fft);xlabel('omega/pi');ylabel('|e^j^omega|');title('CW频域');
subplot(212);plot(1:length(s2_fft),s2_fft);xlabel('omega/pi');ylabel('|e^j^omega|');title('LFM频域');
X1=abs(fft(s1));%对复信号进行傅里叶变换,然后取模
X2=abs(fft(s2));
X1=X1/max(X1);
X2=X2/max(X2);
figure(3);
subplot(2,1,1);
f=fs*(0:Ns/2)/Ns;
plot(f,X1(1:Ns/2+1));
xlabel('频率/Hz');ylabel('归一化幅值');title('CW信号频谱');grid on;%添加网格
subplot(2,1,2);
f=fs*(0:Ns/2)/Ns;
plot(f,X2(1:Ns/2+1));
xlabel('频率/Hz');ylabel('归一化幅值');title('LFM信号频谱');grid on;
%===============================================================
%散射特征函数=============================================
Np=(endt-startt)*fs; %散射系数的点数44000个点,发射信号持续时间内采样的点
for th=startt:1/fs:endt-1/fs %混响时间 Np44000个点,th共循环44000次
r2=c*th/2; %c=1500
r1=c*(th-T)/2; %T=0.005
N=round((r2^2-r1^2)*azm/2); %azm=0.5236(pi/6)方位角
%%N=As*rou;
%%A=1;%发射信号的信号强度
%th=0.08,r2=60,r1=56.25,N=114;...........th=0.3,r2=224.9963,r1=221.2463,N=438
%随着混响时间的增加,混响点数也在增加
ain=randn(1,N); %th=0.08时,产生114个随机数
fai=randn(1,N)*2*pi; %th=0.08时,产生114个随机相位
for i=1:N
p1(i)=ain(i)*exp(j*fai(i)); %th=0.08时,产生114个信号点
p2(i)=ain(i)*exp(j*fai(i)); % th=0.08时,产生114个信号点
end
P1(round((th-startt)*fs)+1)=sum(p1)/r1^2;% 散射系数的时间序列 %P1共44000个点
P2(round((th-startt)*fs)+1)=sum(p2)/r1^2;
end
% 得到混响信号
R1=conv(s1,P1);%44000+1000-1 %1x44999
R2=conv(s2,P2);
Rr1=real(R1);
Rr2=real(R2);
figure(4);
subplot(2,1,1);
%%t=(0:Ns+Np-2)/fs;
t=startt:1/fs:endt+T-2/fs;%: 共44999个点
plot(t,Rr1/max(Rr1));
axis([startt endt+T-2/fs -1 1]);xlabel('时间/s');ylabel('归一化幅值');title('CW信号的混响');
subplot(2,1,2);
plot(t,Rr2/max(Rr2));
axis([startt endt+T-2/fs -1 1]);xlabel('时间/s');ylabel('归一化幅值');title('LFM信号的混响');
%=============================================================
%混响频谱================================================
F1=abs(fft(Rr1));
F2=abs(fft(Rr2));
figure(5);
subplot(2,1,1);
f1=fs*(0:(Ns+Np)/2)/(Ns+Np-1); %1*22500
plot(f1,F1(1:(Ns+Np)/2+1)/max(F1));xlabel('频率/Hz');ylabel('归一化幅值');title('CW信号的混响频谱');
subplot(2,1,2);
f2=fs*(0:(Ns+Np)/2)/(Ns+Np-1); %1*22500
plot(f2,F2(1:(Ns+Np)/2+1)/max(F2));xlabel('频率/Hz');ylabel('归一化幅值');title('LFM信号的混响频谱');
%===============================================================
%混响功率谱==========================================================
P1=fft(Rr1).*conj(fft(Rr1))/(Ns+Np-1);
P2=fft(Rr2).*conj(fft(Rr2))/(Ns+Np-1);
figure(6);
subplot(2,1,1);
plot(f1,P1(1:(Ns+Np)/2+1)/max(P1));
xlabel('频率/Hz');ylabel('归一化幅值');title('CW信号的混响功率谱');
subplot(2,1,2);
plot(f2,P2(1:(Ns+Np)/2+1)/max(P2));
xlabel('频率/Hz');ylabel('归一化幅值');title('LFM信号的混响功率谱');
%=====================================================
%混响时间自相关===================================================
figure(7);
subplot(2,2,1);
Rx1=xcorr(Rr1);
plot(Rx1/max(Rx1));
xlabel('采样点数');ylabel('归一化幅值');title('CW信号的混响自相关');
subplot(2,2,2);
Rx2=xcorr(Rr2);
plot(Rx2/max(Rx2));
xlabel('采样点数');ylabel('归一化幅值');title('LFM信号的混响自相关');
subplot(2,2,3);
Rx1=xcorr(Rr1);
plot(Rx1/max(Rx1));
axis([33080 34120 -1 1]); %axis([xmin xmax ymin ymax]),单轴xlim([0 5])
xlabel('采样点数');ylabel('归一化幅值');title('CW信号的混响自相关局部放大');
subplot(2,2,4);
Rx2=xcorr(Rr2);
plot(Rx2/max(Rx2));
axis([33570 33630 -1 1]); %axis([xmin xmax ymin ymax]),单轴xlim([0 5])
xlabel('采样点数');ylabel('归一化幅值');title('LFM信号的混响自相关局部放大');
%================================================================
%生成混响瞬时值的概率密度,也可从工作空间的变量中直接查看
figure(8);
p=-1:0.01:1;
subplot(2,1,1);
Rr1g=Rr1/max(Rr1);
hist(Rr1g,p);
%axis([-1 1 0 1000]); %axis([xmin xmax ymin ymax])
xlim([-1 1]);xlabel('归一化幅值');ylabel('统计点数');title('CW信号混响瞬时值的概率分布');
subplot(2,1,2);
Rr2g=Rr2/max(Rr2);
hist(Rr2g,p);
%axis([-1 1 0 1000]); %axis([xmin xmax ymin ymax])
xlim([-1 1]);xlabel('归一化幅值');ylabel('统计点数');title('CW信号混响瞬时值的概率分布');
%==================================================================
%生成混响包络的概率密度函数
figure(9);
q=0:0.01:1;
subplot(2,1,1);
hist(abs(R1)/max(abs(R1)),q);
%axis([0 1 0 1000]); %axis([xmin xmax ymin ymax])
xlim([0 1]);
xlabel('归一化幅值');ylabel('统计点数');title('CW信号混响包络的概率分布');
subplot(2,1,2);
hist(abs(R2)/max(abs(R2)),q);
%axis([0 1 0 1000]); %axis([xmin xmax ymin ymax])
xlim([0 1]);
xlabel('归一化幅值');ylabel('统计点数');title('CW信号混响包络的概率分布');
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:无多普勒频移的海底混响单元散射模型卷积法 - Python技术站