📄 scb.m
字号:
% 仿真程序,SCB、NCCB、RCB、DCRCB对比
% Shohei Kikuchi,Hiroyuki Tsuji,Akira Sano.
% “Autocalibration Algorithm for Robust Capon Beamforming” .
% SCB
% 信号生成
clear all;
M = 7; %阵元个数
N = 1024;
d_lambda = 1/2; %两个传感器之间距离与波长的比值
f_sa = 10000; % 采样频率
d_lambda = 1/2; %两个传感器之间距离与波长的比值
% 信号频率
f_s1 = 500;
f_s2 = 500;
s1 = zeros(1,N);
s2 = zeros(1,N);
s1 = (10^(10/20))*exp(j*2*pi*f_s1*[(0:(N-1))]/f_sa);
s2 = (10^(25/20))*exp(j*2*pi*f_s2*[(0:(N-1))]/f_sa+pi/2);
% s1 = (10^(20/20))*sin(2*pi*f_s1*[(0:(N-1))]/f_sa);
% s2 = (10^(25/20))*sin(2*pi*f_s2*[(0:(N-1))]/f_sa+pi*2);
% s1 = (10^(30/20))*randn(1,N);
% s2 = (10^(25/20))*randn(1,N);
% s3 = (10^(35/20))*randn(1,N);
u_s1 = d_lambda*sin(-40*pi/180);
u_s2 = d_lambda*sin(0*pi/180); % set 0 as SOI
a1 = exp(j*2*pi*u_s1*[(0:(M-1))]');
a2 = exp(j*2*pi*u_s2*[(0:(M-1))]');
n = (randn(M,N)+j*randn(M,N))/sqrt(2);
x = a1*s1+a2*s2+n;
R = x*x'/N;
A = inv(R);
w = A*a2/(a2'*A*a2);
phi = -90:1:90;
v = zeros(M,length(phi)); % array response vector
ww = v;
for i = 1:length(phi)
v(:,i) = exp(j*2*d_lambda*pi*sin(phi(i)*pi/180)*[(0:(M-1))])/sqrt(M);
ww(:,i) = A*v(:,i)/(v(:,i)'*A*v(:,i));
sigma(i) = abs(ww(:,i)'*R*ww(:,i));
end
% w = reshape(w,1,M);
% for i = 1:length(phi)
% a = exp(j*pi*sin(phi(i)*pi/180)*[(0:(M-1))]');
% % sigma(i) = 1/(a'*A*a); % AOA
% end
y = abs(w'*v);
y = 10*log10(y/max(y));
y_out = w'*x;
plot(phi,y);
axis([-90 90 -50 10]);
xlabel('Angel(degrees)');
ylabel('Beam Pattern(dB)');
grid on ;
figure;
plot(phi,10*log10(abs(sigma)));
axis([-90 90 -40 50]);
xlabel('Angel(degrees)');
ylabel('Power Spectrum(dB)');
% plot(20*log10(abs(y)))
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -