BELLHOP 关于Actup冲激响应的绘制

    很多同学在BELLHOP Actup原指南中找不到 BELLHOPdata.m 文件,同时存在程序代码的缺失等问题,在利用Actup时无法很好的工作。这里提供了本人编写的Actup使用说明书点击打开链接,以及相关代码点击打开链接

    这里在Matlab代码中再次详细说明BELLHOP 关于Actup冲激响应的绘制。

(1)首先利用Actup得到幅度和相位.arr文件。详细配置方式请参考本人编写的使用说明书。

(2)利用工具箱自带的read_arrivals_asc(filename)函数(可以通过搜索的方式找到该函数)获取幅度、相位、角度等数据。如下列代码所示。

clear
clc
filename = 'Test_00100.arr';
Minimum_range=100  %(接收水听器的水平方向上接收范围最小值,m)----R 
Maximum_range=1000 %(接收水听器的水平方向上接收范围最大值,m)---RB 

[ amp1, delay, SrcAngle, RcvrAngle, NumTopBnc, NumBotBnc, narrmat, Pos ]... 
 = read_arrivals_asc(  filename );

(3)根据需要绘制单位冲激响应。注意这里amp和delay的维度。这里由于在水平方向设置了50个接收机,因此这里的amp和delay是2维数据。图中选取最大的m值,表示选取第50号接收机的幅度和时延。如果设置水平和垂直方向均有接收机,则会使得amp和delay是3维数据,这里就需要根据实际情况取自己设定位置的接收机的幅值和时延。(这里可以参考本人编写的说明书第8章内容)

%%单位冲激响应
[m,n]=size(amp1);
amp = abs(amp1); %取模  
x = delay(m,:); %获取第50个接收机的时延和幅值
y = amp(m,:);
figure(1)
stem(x,y)
grid on
xlabel('相对时延/s')
ylabel('幅度')
title('单位冲激响应')


(4)绘制归一化冲激响应。

%%归一化冲激响应
Amp_Delay = [x;y];
Amp_Delay(:,all(Amp_Delay==0,1))=[]; %去掉0值
Amp_Delay=sortrows(Amp_Delay',1);  %按照时延从小到大排序
normDelay = Amp_Delay(:,1)-Amp_Delay(1,1);%归一化时延
normAmp = Amp_Delay(:,2)/Amp_Delay(1,2);%归一化幅度
figure(2)
stem(normDelay,normAmp,'^')
grid on
xlabel('相对时延/s')
ylabel('归一化幅度')
title('归一化冲激响应')

(5)绘制距离时延图。


figure(3)
mum=1:m;
ReRange = Minimum_range+(Maximum_range-Minimum_range)/m*mum;
for i=1:min(narrmat)
plot(delay(:,i),ReRange,'o')
hold on
end
hold off
grid on
colorbar
xlabel('时延(sec)')
ylabel('Range(m)')
title(filename)



猜你喜欢

转载自blog.csdn.net/u010936286/article/details/79976435