fmincon error for DOA estimation antenna array uncertainties

5 visualizzazioni (ultimi 30 giorni)
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:
Error using fmincon (line 301)
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

Risposta accettata

Mary Fenelon
Mary Fenelon il 2 Gen 2020
You are missing a placeholder empty arragy argument for beq in your call to fmincon.

Più risposte (0)

Categorie

Scopri di più su Phased Array Design and Analysis in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by