欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

BELLHOP 关于Actup冲激响应的绘制

程序员文章站 2022-07-12 14:37:50
...

    很多同学在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('单位冲激响应')

BELLHOP 关于Actup冲激响应的绘制

BELLHOP 关于Actup冲激响应的绘制

(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('归一化冲激响应')

BELLHOP 关于Actup冲激响应的绘制

(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)
BELLHOP 关于Actup冲激响应的绘制