fmincon error for DOA estimation antenna array uncertainties
4 次查看(过去 30 天)
显示 更早的评论
So I've been trying to modify MATLAB's example which you may refer to the following link:
You may also refer to the code that I tried to modified here:
Auto calibration of linear array antenna position for DOA estimation
close all
clc
format short
fc = 5.5e9;
c = physconst('Lightspeed');
lambda = c/fc;
M = 4;
array = phased.ULA(M,lambda/2);
perfect array
designed_pos = getElementPosition(array);
%designed_pos = [zeros(1,M);-(M-1)/2:(M-1)/2;zeros(1,M)]*0.5
imperfect array
rng default
pos_std = 0.02;
perturbed_pos = designed_pos + pos_std*[randn(2,M);zeros(1,M)];
%assume reference sensor has no uncertainties
perturbed_pos(:,1) = designed_pos(:,1);
%x axis is fixed down by assuming the x-location of another sensor is known
perturbed_pos(1,2) = designed_pos(1,2) ;
visualising the array imperfections
helperCompareArrayProperties2('Position',perturbed_pos,designed_pos,...
{'Perturbed Array','Deployed Array'})
view(90,90)
degradation of DOA Estimation
%generate 100K samples with 30db SNR
ncov = db2pow(-30);
K = 1e5;
incoming_az = [-20,40];
N = length(incoming_az);
[x_pert,~,Rxx] = sensorsig(perturbed_pos,K,incoming_az,ncov)
%estimate the directions of the sources
spatialspectrum = phased.BeamscanEstimator('SensorArray',array,...
"DOAOutputPort",true,'NumSignals',N)
[y,estimated_az] = spatialspectrum(x_pert);
incoming_az
estimated_az %estimated DOA based on perturbed system
self calibration
%create a function handle
fun = @(x_in)helperMUSICIteration(x_in,Rxx,designed_pos)
nvars = 2*M - 3 + N; %assume 2D uncertainties
%initial value
x0 = [0.1*randn(1,nvars - N),estimated_az]
%location tolerance
locTol = 0.1
%angle tolerance
angTol = 20
%lower bound
lb = [-locTol*ones(nvars-N,1);estimated_az.'-angTol]
%upper bound
ub = [locTol*ones(nvars-N,1);estimated_az.'+angTol]
options = optimoptions('fmincon','TolCon',1e-6,'DerivativeCheck','on',...
'Display','off')
[x,fval,exitflag] = fmincon(fun,x0,[],[],[],lb,ub,[],options)
%parse the final result
[~,perturbed_pos_est,postcal_estimated_az] = helperMUSICIteration(...
x,Rxx,designed_pos)
The error I've got was:
Row dimension of Aeq is inconsistent with length of beq.
I've been trying to troubleshoot and look for the problem in detail but i still cannot find it. I would appreciate all the help I could get.
Thanks in advance!
Murdifi
0 个评论
采纳的回答
Mary Fenelon
2020-1-2
You are missing a placeholder empty arragy argument for beq in your call to fmincon.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!