LMS自适应天线阵列设计 MATLAB

在自适应天线课上刚刚学了LMS自适应阵,先出一个抢先版贴一下结果,抢先某个小朋友一步。

关于LMS的具体介绍,直接看wiki里的吧,解释的比书上简明:传送门:https://en.wikipedia.org/wiki/Least_mean_squares_filter

话不多说,先贴代码:

1 % 2 % Multi-Elements Adaptive Antennas Array Based on LMS Algotism 3 % 4 % first draft: 2019/11/27 16:45 5 % latest update: 2019/11/27 19:40 6 % 7 %---------------------------------------------------------------------- 8 close all 9 clear 10 tic 11 % ------------------------ 参数设置 ------------------------- 12 N = 18; % 阵元数 13 wd = 2 * pi * 500 * 10^6; % 工作角频率 14 theta = 0 : 0.01 : 2 * pi; % 方向角(360度) 15 theta_d = (30 / 180) * pi; % 信号来向 16 theta_i = (60 / 180) * pi; % 干扰来向 17 Ad = 1; % 信号幅度 18 Ai = 0.8; % 干扰幅度 19 R = 1; % 参考信号幅度 20 upsilon = 0; % 热噪声均值 21 sigma = 0.9; % 热噪声标准差 22 t = 6; % 时间(s) 23 24 phi_d = pi * sin(theta_d); % 25 phi_i = pi * sin(theta_i); % 26 % ------------------------ 矩阵求解 ------------------------- 27 28 Ud = zeros(N,1); % 信号导向矢量 29 Ui = zeros(N,1); % 干扰导向矢量 30 31 for i = 1 : N 32 Ud(i) = exp(-1j * i * phi_d); 33 Ui(i) = exp(-1j * i * phi_i); 34 end 35 36 PHI = Ad^2 * conj(Ud)*Ud' + Ai^2 * conj(Ui)*Ui' + sigma^2* eye(N); 37 D = abs( det(PHI) ) ; 38 S = Ad * R * conj(Ud); 39 40 W = PHI \ S; % Wopt = Φ-1*S 41 42 % ------------------------ 信噪比计算 ------------------------ 43 44 ed = Ad^2 / sigma^2; % 输入信噪比 45 ei = Ai^2 / sigma^2; % 输入干噪比 46 47 % 输出信号功率 48 Pd = 2 * ed^2 * R^2 * (1 + 2 * ei * sin((phi_d - phi_i)/2)^2) / (D / sigma^4)^2; 49 % 输出干扰功率 50 Pi = 2 * ei * ed * R^2 * cos((phi_d - phi_i)/2)^2 / (D / sigma^4)^2; 51 % 输出噪声功率 52 Pn = ed * R^2 * (2 * ei * (ei + 1) * (1- cos(phi_d - phi_i))+1) / (D / sigma^4)^2; 53 % 输出信噪比 54 SINR = Pd / (Pi + Pn); 55 56 57 58 % ---------------------- 电压方向图计算 --------------------- 59 60 X = cell(length(theta), 1); 61 SS = zeros(length(theta), 1); 62 for i = 1 : length(theta) 63 X{i, 1} = zeros(N, 1); 64 for j = 1 : N 65 X{i, 1}(j) = exp(1j * (j-1) * pi * sin(theta(i))); 66 end 67 SS(i) = W' * X{i, 1} * exp(1j * t * wd); 68 end 69 70 SS = abs(SS); SS = SS / max(SS); 71 72 % ------------------------ 结果表示 -------------------------- 73 74 figure('NumberTitle', 'off', 'Name', '电压方向图'); 75 polarplot(theta, SS, 'k','LineWidth',1.5); 76 77 78 SINR 79 80 81 disp([' 运行时间: ',num2str(toc)]);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzwyf.html