Skip to content

Commit 2715b3d

Browse files
committedAug 1, 2018
add test code
1 parent 60d03e2 commit 2715b3d

File tree

6 files changed

+85
-4
lines changed

6 files changed

+85
-4
lines changed
 

‎README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
# GCC-PHAT
1+
# DOA
22
Estimate the direction of arrival using the SRP-PHAT and GCC-PHAT algorithm.

‎matlab/ArrayTest/DS_ULA.m

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
M=8; % 阵元数
2+
c=340; % 声速
3+
f = 2125; % 信号频率
4+
d = 0.08; % 阵元间距
5+
theta=linspace(-pi/2,pi/2,200);% 入射信号角度范围
6+
theta0=30*pi/180; % 注视方向
7+
w=exp(1j*2*pi*f*sin(theta0)*[0:M-1]'*d/c); % 导向向量
8+
p = zeros(length(1:length(theta)),1);
9+
for j=1:length(theta) % 角度扫描
10+
a=exp(-1j*2*pi*f*sin(theta(j))*[0:M-1]'*d/c);% 入射信号方向向量
11+
p(j)=sum(w.*a)/M; % 延时-求和
12+
end
13+
% 画图
14+
figure;
15+
plot(theta/pi*180,abs(p)),grid on
16+
xlabel('degree')
17+
ylabel('amplitude')
18+
title('8阵元均匀线阵方向图')

‎matlab/ArrayTest/DS_URA_2D.m

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
M=8; % 阵元数
2+
c=340; % 声速
3+
f = 2125; % 信号频率
4+
r = 0.08; % 阵元间距
5+
phi=linspace(0,2*pi,360);% 入射信号角度范围
6+
7+
theta = 80*pi/180; %固定一个俯仰角
8+
gamma = (0:360/M:360-360/M)*pi/180;%麦克风位置
9+
10+
tao = r*sin(theta)*cos(angle(1)-gamma)/c; %方位角 0 < angle <360
11+
12+
phi0=60*pi/180; % 注视方向
13+
w=exp(1j*2*pi*f*r*cos(phi0-gamma)*sin(theta)/c); % 导向向量
14+
p = zeros(length(1:length(phi)),1);
15+
for j=1:length(phi) % 角度扫描
16+
a=exp(-1j*2*pi*f*r*cos(phi(j)-gamma)*sin(theta)/c);% 入射信号方向向量
17+
p(j)=sum(w.*a)/M; % 延时-求和
18+
end
19+
% 画图
20+
figure;
21+
plot(phi/pi*180,abs(p)),grid on
22+
xlabel('degree')
23+
ylabel('amplitude')
24+
title('均匀圆阵方向图')
25+
26+
figure,polarplot(phi,abs(p))

‎matlab/ArrayTest/DS_URA_3D.m

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
M=8; % 阵元数
2+
c=340; % 声速
3+
f = 2125; % 信号频率
4+
r = 0.08; % 阵元间距
5+
phi=linspace(0,2*pi,360);% 入射信号方位角范围
6+
7+
theta = linspace(0,pi/2,90);% 入射信号俯仰角范围
8+
9+
gamma = (0:360/M:360-360/M)*pi/180;%麦克风位置
10+
11+
12+
phi0=130*pi/180; % 注视方向
13+
theta0 = 80*pi/180;
14+
15+
w=exp(1j*2*pi*f*r*cos(phi0-gamma)*sin(theta0)/c); % 导向向量
16+
p = zeros(length(1:length(phi)),length(theta));
17+
for i = 1:length(theta)
18+
for j=1:length(phi) % 角度扫描
19+
a=exp(-1j*2*pi*f*r*cos(phi(j)-gamma)*sin(theta(i))/c);% 入射信号方向向量
20+
p(j,i)=sum(a.*w)/M; % 延时-求和
21+
end
22+
end
23+
% 画图
24+
% figure;
25+
% plot(phi/pi*180,abs(p)),grid on
26+
% xlabel('degree')
27+
% ylabel('amplitude')
28+
% title('均匀圆阵方向图')
29+
figure,mesh(abs(p))

‎matlab/README.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# A simple DOA GUI
2+
a simple GUI to show the direction of arrival of a signal
3+
4+
5+
## usage
6+
1. run DispAngle.m
7+
2. select your multi-channel soundcard number in command window
8+
3. click Update button to see the real time direction

‎matlab/SRP-PHAT/DelaySumURA.m

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,21 @@
1919
c = 340;
2020
Nele = size(x,2);
2121
omega = zeros(frameLength,1);
22-
H = zeros(N/2+1,Nele);
22+
H = ones(N/2+1,Nele);
2323

2424
theta = 85*pi/180; %固定一个俯仰角
2525
gamma = [0 90 180 270]*pi/180;%麦克风位置
2626
tao = r*sin(theta)*cos(angle(1)-gamma)/c; %方位角 0 < angle <360
2727
yds = zeros(length(x(:,1)),1);
2828
x1 = zeros(size(x));
2929
for i = 1:inc:length(x(:,1))-frameLength
30-
for k = 2:N/2+1
30+
for k = 2:4:N/2+1
3131
omega(k) = 2*pi*(k-1)*fs/N;
3232

3333
% steering vector
3434
H(k,:) = exp(-1j*omega(k)*tao);
3535
end
36-
d = fft(bsxfun(@times, x(i:i+frameLength-1,:),hamming(frameLength)));
36+
d = fft(bsxfun(@times, x(i:i+frameLength-1,:),hamming(frameLength)'));
3737
% d = fft(x(i:i+frameLength-1,:).*hamming(frameLength)');
3838
% x_fft = d(1:129,:).*H;%./abs(d(1:129,:));
3939
x_fft=bsxfun(@times, d(1:N/2+1,:),H);

0 commit comments

Comments
 (0)
Please sign in to comment.