关于阵列信号处理的一些东西(一)

空间匹配滤波

阵列方向图函数
F ( θ ) = W H ∗ α ( θ ) F(\theta) = W^{H}*\alpha(\theta) F(θ)=WHα(θ)
当权重矢量 W = α ( θ 0 ) W=\alpha(\theta_0) W=α(θ0)时,阵列方向图增益G(θ)在θ0处增益达到最大。

f0 = 16e9;  % 雷达工作频率16GHz
c = 3e8;
lambda = c/f0;
d = lambda/2;   % 阵元距离
sita = -5/9*pi:0.01:5/9*pi;
sita0 = pi/6;
n = 16;
N = 0:16-1;     % 16个阵元
move_sita = exp(1j*N'*2*pi*d*sin(sita0)/lambda);    % 权重
alpha_sita = exp(1j*N'*2*pi*d*sin(sita)/lambda);    % 导向矢量
F = move_sita'*alpha_sita;
refer = sin(pi*d*n*(sin(sita))/lambda)/n./sin(pi*d*(sin(sita))/lambda);
figure('Name','空域匹配滤波');
plot(sita/2/pi*360,20*log10(abs(F)/max(abs(F))));
hold on
plot(sita/2/pi*360,20*log10(abs(refer)/max(abs(refer))),'--');
xticks(-100:20:100);
xlabel('角度');
ylabel('归一化功率增益');
hold off

在30°获得最大增益

最优波束形成

最大信干噪比(MINR)准则

在这里插入图片描述
在这里插入图片描述

%% MSINR准则下使用带功率的协方差公式
clc;clear;close;
N = 16;
n = 0:N-1;
f0 = 10e9;  % 雷达工作频率16GHz
c = 3e8;
lambda = c/f0;
d = lambda/2;   % 阵元距离
sita0 = 0;      % 期望信号方向
signal_e = 10^5;    % 信号能量
sita1 = deg2rad(-35);
sita2 = deg2rad(-19);
sita3 = deg2rad(45);
sita = [sita1 sita2 sita3];     % 干扰方向
INR1 = 10^(40/10);
INR2 = 10^(35/10);
INR3 = 10^(50/10);
INR = [INR1 INR2 INR3];         % 干扰强度
A = exp(1j*2*pi*n'*sin(sita)*d/lambda);     % 干扰信号的导向矢量
alpha0 = exp(1j*2*pi*n'*sin(sita0)*d/lambda);   % 期望信号的导向矢量值
Rin = zeros(N,N);
for i = 1:length(sita)
    Rin = Rin + INR(i)*A(:,i)*A(:,i)';          % 干噪协方差矩阵
end
Rin = Rin + eye(N);                         % 加入噪声
RS = signal_e*(alpha0*alpha0');
[V,D] = eig(RS,Rin);        % 得到广义特征值与特征向量
[~,I] = max(diag(D));
w = V(:,I);              % 最大特征值所对应的特征向量就是最优权矢量
angle = -5/9*pi:0.01:5/9*pi;
A1 = exp(1j*2*pi*n'*sin(angle)*d/lambda);
CBF = db(abs(sum(A1)).^2/N/N)/2;          % 权重全为1时的增益方向图
MSINR = abs(w'*A1);
MSINR = db(MSINR/max(MSINR));

CBF(CBF < -80) = -80;
MSINR(MSINR < -80) = -80;

[~,ind1] = min(abs(angle-sita1));
[~,ind2] = min(abs(angle-sita2));
[~,ind3] = min(abs(angle-sita3));

figure('Name','最优化波束形成');
plot(rad2deg(angle),CBF);
hold on
plot(rad2deg(angle),MSINR,'--');
plot(rad2deg(sita1), MSINR(ind1),'ro', 'MarkerFaceColor', 'r');
text(rad2deg(sita1), MSINR(ind1), '\leftarrow干扰1');
plot(rad2deg(sita2), MSINR(ind2),'ro', 'MarkerFaceColor', 'r');
text(rad2deg(sita2), MSINR(ind2), '\leftarrow干扰2');
plot(rad2deg(sita3), MSINR(ind3),'ro', 'MarkerFaceColor', 'r');
text(rad2deg(sita3), MSINR(ind3), '\leftarrow干扰3');
xlabel('角度');
ylabel('归一化功率增益');
legend('CBF','MSINR');
hold off

在这里插入图片描述
MSINR的图像相比于匹配滤波在干扰处确实有塌陷,但没有书上给的图效果好。

%% MSINR准则下使用快拍的方式求协方差矩阵
clc;clear;close;
N = 16;
n = 0:N-1;
f0 = 16e9;  % 雷达工作频率16GHz
c = 3e8;
lambda = c/f0;
d = lambda/2;   % 阵元距离
INR = [40 35 50];
SNR = 40;
theta = [-40 -15 35];
theta0 = 20;
snap = 1024;        % 快拍数
signal = exp(1j*2*pi*f0*(0:snap-1)/(2*snap));
INR = 10.^(INR/10)/2;
A = exp(1j*2*pi*n'*sin(deg2rad(theta))*d/lambda);
alpha0 = exp(1j*2*pi*n'*sin(deg2rad(theta0))*d/lambda);
xs = sqrt(10^(SNR/10))*alpha0*signal;
kj = length(theta);     % 干扰数
rs = zeros(kj,snap);
for i = 1:kj
    for j = 1:snap
        rs(i,j) = sqrt(INR(i))*(randn(1)+1j*randn(1))*signal(j);
    end
end
noise = (randn(N,snap)+1j*randn(N,snap))/sqrt(2);
Rs = 1/snap*(xs*xs');
J = A*rs;
Rin = 1/snap*(J*J'+noise*noise');
[V,D] = eig(Rs,Rin);
[~,I] = max(diag(D));
w = V(:,I);
w0 = exp(1j*2*pi*n'*sin(deg2rad(theta0))*d/lambda);
angle = -5/9*pi:0.001:5/9*pi;
F = w'*exp(1j*2*pi*n'*sin(angle)*d/lambda);
F0 = w0'*exp(1j*2*pi*n'*sin(angle)*d/lambda);
figure('Name','MSINR');
F1 = db(abs(F)/max(abs(F)));
plot(rad2deg(angle),F1);
hold on
plot(rad2deg(angle),db(abs(F0)/max(abs(F0))),'--');

angle = rad2deg(angle);
[~,ind1] = min(abs(angle-theta(1)));
[~,ind2] = min(abs(angle-theta(2)));
[~,ind3] = min(abs(angle-theta(3)));

text(theta(1),F1(ind1),'\leftarrow干扰1');
plot(theta(1),F1(ind1),'ro','MarkerFaceColor','r');
text(theta(2),F1(ind2),'\leftarrow干扰2');
plot(theta(2),F1(ind2),'ro','MarkerFaceColor','r');
text(theta(3),F1(ind3),'\leftarrow干扰3');
plot(theta(3),F1(ind3),'ro','MarkerFaceColor','r');

legend('最优化','匹配滤波');
title('MSINR,干扰方向[-40 -15 35]');
hold off

在这里插入图片描述
效果明显更好,但目前不知道这两种方式为什么会有这么大的差异。

线性约束最小方差准则(LCMV)与最小方差无失真响应(MVDR)

在这里插入图片描述
在这里插入图片描述

%% MVDR
clc;clear;close;
N = 16;
n = 0:N-1;
f0 = 16e9;  % 雷达工作频率16GHz
c = 3e8;
lambda = c/f0;
d = lambda/2;   % 阵元距离
INR = [40 35 50];
SNR = 40;
theta = [-40 -15 35];
theta0 = 20;
snap = 1024;        % 快拍数
signal = exp(1j*2*pi*f0*(0:snap-1)/(2*snap));
INR = 10.^(INR/10)/2;
A = exp(1j*2*pi*n'*sin(deg2rad(theta))*d/lambda);
alpha0 = exp(1j*2*pi*n'*sin(deg2rad(theta0))*d/lambda);
xs = sqrt(10^(SNR/10))*alpha0*signal;
kj = length(theta);     % 干扰数
rs = zeros(kj,snap);
for i = 1:kj
    for j = 1:snap
        rs(i,j) = sqrt(INR(i))*(randn(1)+1j*randn(1))*signal(j);
    end
end
noise = (randn(N,snap)+1j*randn(N,snap))/sqrt(2);
X = A*rs + noise;          
Rx_pinv = pinv(1/snap*(X*X'));
% J = A*rs;
% Rx_pinv = 1/snap*pinv(J*J'+noise*noise');
w = Rx_pinv*alpha0/(alpha0'*Rx_pinv*alpha0);
w0 = exp(1j*2*pi*n'*sin(deg2rad(theta0))*d/lambda);
angle = -5/9*pi:0.001:5/9*pi;
F = w'*exp(1j*2*pi*n'*sin(angle)*d/lambda);
F0 = w0'*exp(1j*2*pi*n'*sin(angle)*d/lambda);
figure('Name','MVDR');
F1 = db(abs(F)/max(abs(F)));
plot(rad2deg(angle),F1);
hold on
plot(rad2deg(angle),db(abs(F0)/max(abs(F0))),'--');

angle = rad2deg(angle);
[~,ind1] = min(abs(angle-theta(1)));
[~,ind2] = min(abs(angle-theta(2)));
[~,ind3] = min(abs(angle-theta(3)));

text(theta(1),F1(ind1),'\leftarrow干扰1');
plot(theta(1),F1(ind1),'ro','MarkerFaceColor','r');
text(theta(2),F1(ind2),'\leftarrow干扰2');
plot(theta(2),F1(ind2),'ro','MarkerFaceColor','r');
text(theta(3),F1(ind3),'\leftarrow干扰3');
plot(theta(3),F1(ind3),'ro','MarkerFaceColor','r');

legend('最优化','匹配滤波');
title('MVDR,干扰方向[-40 -15 35]');
hold off

在这里插入图片描述
比较MSINR和MVDR的图像可以推断两者在Ri+n和θ0已知并相等的情况下确实是等价的。
在这里插入图片描述

%% LCMV
clc;clear;close;
N = 16;
n = 0:N-1;
f0 = 16e9;  % 雷达工作频率16GHz
c = 3e8;
lambda = c/f0;
d = lambda/2;   % 阵元距离
INR = [40 35 50];
SNR = 40;
theta = [-40 -15 35];
theta0 = 20;
theta1 = -10;
snap = 1024;        % 快拍数
signal = exp(1j*2*pi*f0*(0:snap-1)/(2*snap));
INR = 10.^(INR/10)/2;
A = exp(1j*2*pi*n'*sin(deg2rad(theta))*d/lambda);
alpha0 = exp(1j*2*pi*n'*sin(deg2rad(theta0))*d/lambda);
alpha1 = exp(1j*2*pi*n'*sin(deg2rad(theta1))*d/lambda);
C = [alpha0 alpha1];			% 约束矩阵
[~,L] = size(C);
f = ones(L,1);
kj = length(theta);     % 干扰数
rs = zeros(kj,snap);
for i = 1:kj
    for j = 1:snap
        rs(i,j) = sqrt(INR(i))*(randn(1)+1j*randn(1))*signal(j);
    end
end
noise = (randn(N,snap)+1j*randn(N,snap))/sqrt(2);
X = A*rs + noise;          
% X = A*rs + noise + C*[signal;signal]; 	%将Rin替换成Rx
Rx_pinv = pinv(1/snap*(X*X'));
w = Rx_pinv*C/(C'*Rx_pinv*C)*f;
angle = -5/9*pi:0.001:5/9*pi;
F = w'*exp(1j*2*pi*n'*sin(angle)*d/lambda);
figure('Name','LCMV');
F1 = db(abs(F)/max(abs(F)));
plot(rad2deg(angle),F1);
hold on
angle = rad2deg(angle);
[~,ind1] = min(abs(angle-theta(1)));
[~,ind2] = min(abs(angle-theta(2)));
[~,ind3] = min(abs(angle-theta(3)));
[~,ind4] = min(abs(angle-theta0));
[~,ind5] = min(abs(angle-theta1));

text(theta(1),F1(ind1),'\leftarrow干扰1');
plot(theta(1),F1(ind1),'ro','MarkerFaceColor','r');
text(theta(2),F1(ind2),'\leftarrow干扰2');
plot(theta(2),F1(ind2),'ro','MarkerFaceColor','r');
text(theta(3),F1(ind3),'\leftarrow干扰3');
plot(theta(3),F1(ind3),'ro','MarkerFaceColor','r');
text(theta0,F1(ind4),'目标1');
plot(theta0,F1(ind4),'ro','MarkerFaceColor','r');
text(theta1,F1(ind5),'目标2');
plot(theta1,F1(ind5),'ro','MarkerFaceColor','r');
title('LCMV,干扰方向[-40 -15 35] 目标方向[-15 20]');
hold off

在这里插入图片描述

若将上述代码的 f 改为[1 0]',则图像如下图所示。
在这里插入图片描述
将代码中的Ri+n替换成Rx,方向图旁瓣上升。在这里插入图片描述

均方误差最小准则(MSE)

在这里插入图片描述
在这里插入图片描述

三种准则比较

在这里插入图片描述

SMI(采样协方差矩阵求逆)

在这里插入图片描述
有限次快拍下的方向图副瓣较高,且快拍数越少,副瓣越高。

%% SMI
clc;clear;close;
N = 16;
n = 0:N-1; 
f0 = 16e9;  % 雷达工作频率16GHz
c = 3e8;
lambda = c/f0;
d = lambda/2;   % 阵元距离
INR = [40 35 50];
SNR = 40;
theta = [-40 -15 35];
theta0 = 20;
INR = 10.^(INR/10)/2;
A = exp(1j*2*pi*n'*sin(deg2rad(theta))*d/lambda);
alpha0 = exp(1j*2*pi*n'*sin(deg2rad(theta0))*d/lambda);
kj = length(theta);     % 干扰数
snaps = [32 128 1024];
times = 50;         % 统计次数
figure('Name','SMI');
hold on
for k = 1:length(snaps)
    sumF = 0;
    for t = 1:times
        snap = snaps(k);        % 快拍数
        signal = exp(1j*2*pi*f0*(0:snap-1)/(2*snap));
        rs = zeros(kj,snap);
        for i = 1:kj
            for j = 1:snap
                rs(i,j) = sqrt(INR(i))*(randn(1)+1j*randn(1))*signal(j);
            end
        end
        noise = (randn(N,snap)+1j*randn(N,snap))/sqrt(2);
        X = A*rs + noise;          
        Rx_pinv = pinv(1/snap*(X*X'));
        w = Rx_pinv*alpha0/(alpha0'*Rx_pinv*alpha0);
        angle = -5/9*pi:0.001:5/9*pi;
        F = w'*exp(1j*2*pi*n'*sin(angle)*d/lambda);
        F1 = db(abs(F)/max(abs(F)));
        sumF = sumF + F1;
    end
    sumF = sumF/times;
    plot(rad2deg(angle),sumF);
end

angle = rad2deg(angle);
[~,ind1] = min(abs(angle-theta(1)));
[~,ind2] = min(abs(angle-theta(2)));
[~,ind3] = min(abs(angle-theta(3)));

text(theta(1),sumF(ind1),'\leftarrow干扰1');
plot(theta(1),sumF(ind1),'ro','MarkerFaceColor','r');
text(theta(2),sumF(ind2),'\leftarrow干扰2');
plot(theta(2),sumF(ind2),'ro','MarkerFaceColor','r');
text(theta(3),sumF(ind3),'\leftarrow干扰3');
plot(theta(3),sumF(ind3),'ro','MarkerFaceColor','r');
legend('snap = 32','snap = 128','snap = 1024');
title('SMI,干扰方向[-40 -15 35]');
hold off

在这里插入图片描述

对角加载技术

在这里插入图片描述

%% SMI
clc;clear;close;
N = 16;
n = 0:N-1; 
f0 = 16e9;  % 雷达工作频率16GHz
c = 3e8;
lambda = c/f0;
d = lambda/2;   % 阵元距离
DL = [0 10];        % 10db对角加载,这里是真值
INR = [40 35 50];
SNR = 40;
theta = [-40 -15 35];
theta0 = 20;
INR = 10.^(INR/10)/2;
A = exp(1j*2*pi*n'*sin(deg2rad(theta))*d/lambda);
alpha0 = exp(1j*2*pi*n'*sin(deg2rad(theta0))*d/lambda);
kj = length(theta);     % 干扰数
snaps = [32,1024];
times = 50;         % 统计次数
figure('Name','SMI');
hold on
sumF = 0;
for s = 1:length(snaps)
    snap = snaps(s);
    if s == 2
        DL = [0];
    end
    for k = 1:length(DL)
        for t = 1:times
            signal = exp(1j*2*pi*f0*(0:snap-1)/(2*snap));
            rs = zeros(kj,snap);
            for i = 1:kj
                for j = 1:snap
                    rs(i,j) = sqrt(INR(i))*(randn(1)+1j*randn(1))*signal(j);
                end
            end
            noise = (randn(N,snap)+1j*randn(N,snap))/sqrt(2);
            X = A*rs + noise;          
            Rx_pinv = pinv(1/snap*(X*X') + DL(k)*eye(N));			%对角加载
            w = Rx_pinv*alpha0/(alpha0'*Rx_pinv*alpha0);
            angle = -5/9*pi:0.001:5/9*pi;
            F = w'*exp(1j*2*pi*n'*sin(angle)*d/lambda);
            F1 = db(abs(F)/max(abs(F)));
            sumF = sumF + F1;
        end
        sumF = sumF/times;
        plot(rad2deg(angle),sumF);
    end
end
angle = rad2deg(angle);
[~,ind1] = min(abs(angle-theta(1)));
[~,ind2] = min(abs(angle-theta(2)));
[~,ind3] = min(abs(angle-theta(3)));

text(theta(1),sumF(ind1),'\leftarrow干扰1');
plot(theta(1),sumF(ind1),'ro','MarkerFaceColor','r');
text(theta(2),sumF(ind2),'\leftarrow干扰2');
plot(theta(2),sumF(ind2),'ro','MarkerFaceColor','r');
text(theta(3),sumF(ind3),'\leftarrow干扰3');
plot(theta(3),sumF(ind3),'ro','MarkerFaceColor','r');
legend('snap = 32','对角加载DL','snap = 1024');
title('SMI,干扰方向[-40 -15 35]');
hold off

在这里插入图片描述
在这里插入图片描述

广义旁瓣相消器(GSC)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最终得到计算公式如下所示
在这里插入图片描述

参考

线性最优离散滤波器——维纳滤波器及LCMV MVDR GSC (自适应滤波)

波束形成算法综述

b站视频

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值