MATLAB在使用相控阵列工具箱的时候,遇到了警告问题:
clc;clear;close all;
fc = 1e3; %中心频率频率50kHz
lambda = 1500/fc;
%antenna = phased.IsotropicAntennaElement('FrequencyRange',[50e2 10e4]);%设置频率范围
array = phased.ULA('NumElements',20,'ElementSpacing',lambda/2); %均匀线阵,阵元间距半波长
array.Element.FrequencyRange = [500 1e4];
plotResponse(array,fc,1500);
axis([-25 25 -30 0]);
ang1 = [30; 0];
ang2 = [40; 0];
Nsnapshots = 1000;
rng default
npower = 0.01;
rxsig = sensorsig(getElementPosition(array)/lambda, Nsnapshots,[ang1 ang2],npower);
estimator = phased.BeamscanEstimator('SensorArray',array,'OperatingFrequency',fc,'ScanAngles',-90:90,'DOAOutputPort',true,'NumSignals',2);
[~,sigang] = estimator(rxsig);
plotSpectrum(estimator);
出现以下报错:
警告: No source signal found in the data.
位置:phased.internal/AbstractULASpectralDOA/stepImpl (第 189 行)
位置: test1 (第 19 行)
该问题的解决方案是在使用BeamscanEstimator算法估计信号到达角度之前,需要先设置信号源。可以使用Phased Array System Toolbox中的phased.Platform或phased.IsotropicSource函数设置信号源。示例如下:
% Set up signal source txPos = [100; 100; 0]; % Source position txVel = [0; 0; 0]; % Source velocity (stationary) fc = 1e9; % Carrier frequency fs = 10*fc; % Sample rate
platform = phased.Platform('InitialPosition',txPos,'Velocity',txVel); sigSrc = phased.Transmitter('Platform',platform,'PeakPower',1,'CarrierFrequency',fc); sig = sigSrc();
% Use BeamscanEstimator algorithm and plot spectrum estimator = phased.BeamscanEstimator('SensorArray',ha,'OperatingFrequency',fc,'DOAOutputPort',true,'NumSignals',1); [~,doas] = estimator(rx); spectrumScope = phased.WidebandSpectrumAnalyzer('SampleRate',fs,'SpectralAverages',1); spectrumScope(rx); % Set input signal spectrumScope.SpectrumType = 'Power density'; spectrumScope.PlotAsTwoSidedSpectrum = false; spectrumScope.SpectralAverages = 1; spectrumScope.Title = 'Beamscan Spectrum'; spectrumScope(doas); % Set DOA output as spectrum input spectrumScope; % Display spectrum
注意:信号源的设置需要根据具体的需求进行调整,并且需要保证信号源和接收阵列的参数匹配,否则可能会导致其他错误。