👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
天线阵列诊断问题在压缩感知框架中使用有关无故障天线阵列辐射方向图的先验信息制定。该框架使用与参考阵列和被测天线之间的远场辐射方向图差异相关的线性关系。通过在MATLAB中进行仿真,讨论和分析了三种基于稀疏的恢复方法,即L1的最小化、总变异(TV)范数和混合L1/lL2范数。使用10GHz的10 x 90 WR10波导天线阵列进行了仿真。因此,获得的结果符合我们的目标,即在测量点数量较少的情况下进行更快的天线阵列诊断。
📚2 运行结果
部分代码:
%% Define the initial parameters
wgElement = waveguide; % Creates a WR90 Waveguide Object
wgElement.TiltAxis ='X';
wgElement.Tilt = 90;
% show(wgElement)
f = 10*1e9;
c = physconst('LightSpeed');
lambda = c/f;
% pattern(wgElement,f)
nElement = 100; % Number of total elements.
nMeasurementPoints = 50;
A = zeros(nMeasurementPoints,nElement);
%% Define Antenna Array by using Antenna Toolbox
amplitudeTapers = ones(nElement,1); % Optional: Excitation amplitude of relevant antenna elements
wgArrayAT = rectangularArray('Element',wgElement,'Size',[10 10],'RowSpacing',lambda/2,'ColumnSpacing',lambda,'AmplitudeTaper',amplitudeTapers);
% layout(wgArrayAT);
% show(wgArrayAT);
%% Define Antenna Array by using Phased Array Toolbox
wgArrayPAT = phased.URA('Element',wgElement,'Size',[10 10],'ElementSpacing',[lambda/2 lambda],'ArrayNormal','Z');
% viewArray(wgArrayPAT)
%% Randomly Selected Measurement Points;
D = 22.86*1e-3; % Maximum dimension of the antenna (meter)
rMin = 2 * D^2 / lambda;
antennaLocations = getElementPosition(wgArrayPAT);
measurementPoints = sign(randn(3,nMeasurementPoints)) .* (1000*lambda*rand(3,nMeasurementPoints) + max(antennaLocations,[],2) + 200*rMin*ones(3,1));
%% Calculate A by using Near Field Electrical Field
for nE = 1:nElement
for nM = 1:nMeasurementPoints
antennaLocation = antennaLocations(:,nE);
measurementPoint = measurementPoints(:,nM);
d = measurementPoint - antennaLocation;
[azimuth,elevation,r] = cart2sph(d(1),d(2),d(3));
[fieldWg,~,~] = pattern(wgElement,f,azimuth,elevation,'Type','efield','Normalize',false);
A(nM,nE) = exp(-1i*2*pi/lambda*r)/(4*pi*r)*fieldWg;
end
end
%% Scaling by normalizing the rows of A (Optional)
% d = 1./sqrt(sum(A.^2,2));
% A = bsxfun(@times,A,d);
%%
%% Calculate A by using Far Field Pattern
% %% Comment Out If Needed
% amplitudeTapers = zeros(nElement,1); % Excitation amplitude of relevant antenna elements
% for nE = 1:nElement
% amplitudeTapers(nE) = 1;
% [azimuth,elevation,r] = cart2sph(measurementPoints(1,:),measurementPoints(2,:),measurementPoints(3,:));
% [fieldWgA,~,~] = pattern(wgArrayURA,f,sort(azimuth),sort(elevation),'Type','efield','Normalize',false,'Weights',amplitudeTapers);
% A(:,nE) = diag(fieldWgA);
% amplitudeTapers(nE) = 0;
% end
% % End Of Calculate A by using Far Field Field
%%
%% Calculate A by using Electric Field with Matlab Built-In Function
% %% Comment Out If Needed
% antennaLocations = getElementPosition(wgArrayURA);
% for nE = 1:nElement
% measurementPointsT = measurementPoints - antennaLocations(:,nE);
% [e,~] = EHfields(wgElement,f,measurementPointsT);
% A(:,nE) = sqrt(sum(e.^2));
% end
% % End Of Calculate A by using Matlab Electric Field
%%
%% Calculate A by using Steering Vector
% measurementAzimuth = sort(180 * rand(1,nMeasurementPoints));
% measurementElevation = 10;
% steeringVectorWgArray = phased.SteeringVector('SensorArray',wgArrayURA,...
% 'IncludeElementResponse',false,'EnablePolarization',false);
% for nM = 1:length(measurementAzimuth)
% Ang = [measurementAzimuth(nM);measurementElevation(nM)];
% A(nM,:) = steeringVectorWgArray(f,Ang);
% end
% % End Of Calculate A by using Steering Vector
%%
% %%% Calculate y by using Electrical Field
% nFaults = 5; % number of spikes
% faultyArrayTapers = ones(nElement,1);
% faultyPositions = randperm(nElement,nFaults);
% faultyArrayTapers(faultyPositions) = 0;
% y = zeros(nMeasurementPoints,1);
% for nM = 1:nMeasurementPoints
% d = measurementPoints(:,nM);
% [azimuth,elevation,r] = cart2sph(d(1),d(2),d(3));
% [fieldWg,~,~] = pattern(wgArrayURA,f,azimuth,elevation,'Type','efield','Normalize',false,'Weights',faultyArrayTapers);
% % A(nM,nE) = fieldWg;
% y(nM) = exp(-1i*2*pi/lambda*r)/(4*pi*r)*fieldWg;
% end
% [azimuthArray,elevationArray,rArray] = cart2sph(measurementLocations(1),measurementLocations(2),measurementLocations(3));
% [fieldWgArray,~,~] = pattern(wgArrayURA,f,azimuthArray,elevationArray,'Type','efield');
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]许煜辉. 基于贝叶斯学习的阵列天线故障诊断方法研究[D].南京邮电大学,2022.DOI:10.27251/d.cnki.gnjdc.2022.000977.
[2] Marco Donald Migliore,IEEE Transactions on Antennas and Propagation,Vol. 59, No. 6, June 2011
[3] O.M. Bucci, M.D. Migliore, G. Panariello, and P. Sgambato, IEEE Transactions on Antennas and Propagation, Vol. 53, No. 3, March 2005