通过少量远场测量实现快速天线阵列诊断(Matlab代码实现)

本文探讨了在压缩感知框架下利用无故障天线阵列的辐射方向图信息进行故障诊断的方法。通过MATLAB仿真,比较分析了L1最小化、TV范数和混合L1/lL2范数三种稀疏恢复技术在10x90WR10波导天线阵列中的性能,展示了在少量测量点情况下实现快速诊断的可能性。
摘要由CSDN通过智能技术生成

👨‍🎓个人主页:研学社的博客  

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥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

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值