Калибровка массивов с помощью экспериментальных источников
возвращает предполагаемые положения элемента, estpos
= pilotcalib(nompos
,x
,pilotang
)estpos
, из сенсорной матрицы. Аргумент nompos
представляет относительные номинальные положения сенсорной матрицы перед калибровкой. Номинальное положение относительно первого элемента массива. Аргумент x
представляет сигналы, полученные массивом, прибывающим из экспериментальных источников. Аргумент pilotang
содержит известные направления каждого из экспериментальных источников. Три или больше экспериментальных источника требуются в этом случае.
[
также возвращает предполагаемое заострение массивов, estpos
,esttaper
]
= pilotcalib(nompos
,x
,pilotang
)esttaper
. Каждый элемент esttaper
содержит предполагаемое значение заострения соответствующего элемента массива. В этом случае предшествующее номинальное заострение один для каждого элемента. Четыре или больше экспериментальных источника требуются в этом случае.
Создайте массив ULA с 7 элементами распределенной половины изотропных антенных элементов длины волны независимо. Примите, что массив геометрически встревожен в трех измерениях. Выполните экспериментальную калибровку на массиве с помощью 4 экспериментальных источников в азимуте и углах возвышения (-60,0), (10,-40), (40,0), и (120,45) степени. Для калибровочного процесса экспериментальные сигналы имеют ОСШ 30 дБ. Каждый экспериментальный сигнал содержит 10 000 выборок. Примите, что сигналы имеют частоту 600 МГц.
Настройте ULA номинальными параметрами
fc = 600e6; c = physconst('LightSpeed'); lam = c/fc; d = 0.5*lam; sIso = phased.IsotropicAntennaElement('FrequencyRange',[100,900]*1e6); Nelem = 7; NominalTaper = ones(1,Nelem); sULA = phased.ULA('Element',sIso,'NumElements',Nelem,'ElementSpacing',d,... 'Taper',NominalTaper);
Создайте экспериментальные сигналы
Случайным образом встревожьте положения элемента с Распределением Гаусса, имеющим 0,1 стандартных отклонения длины волны. Не тревожьте положение первого элемента или заострений.
posstd = 0.1;
rng default
NominalElementPositions = getElementPosition(sULA)/lam;
ReferenceElement = NominalElementPositions(:,1);
PositionPert = [zeros(3,1),posstd*randn(3,Nelem-1)];
ActualElementPositions = NominalElementPositions + PositionPert;
ActualTaper = NominalTaper;
Сгенерируйте сигналы с помощью фактических положений и заострений.
Nsamp = 10000; ncov = 0.001; PilotAng = [-60,10,40,120; 0,-40,0,45]; Npilot = size(PilotAng,2); for n = 1:Npilot X(:,:,n) = sensorsig(ActualElementPositions,... Nsamp,PilotAng(:,n),ncov,'Taper',ActualTaper.'); end
Выполните экспериментальную калибровку
estpos = pilotcalib(NominalElementPositions - ReferenceElement*ones(1,Nelem),...
X,PilotAng);
Добавьте назад положение ссылочного датчика.
estpos = estpos + NominalElementPositions(:,1)*ones(1,Nelem);
Исследуйте ошибку среднеквадратического корня (RMS) калиброванных параметров
Вычислите значение RMS ошибки исходного положения.
numpos = 3*Nelem; initposRMSE = sqrt(sum(PositionPert(:).^2)/numpos);
Вычислите значение RMS калиброванной ошибки положения.
solvposErr = ActualElementPositions - estpos; solvposRMSE = sqrt(sum(solvposErr(:).^2)/(numpos));
Сравните калиброванную ошибку положения RMS с ошибкой RMS исходного положения. Калибровка уменьшает ошибку положения RMS.
disp(solvposRMSE/initposRMSE)
2.3493e-04
Создайте массив ULA с 7 элементами распределенной половины изотропных антенных элементов длины волны независимо. Примите, что массив геометрически встревожен в трех измерениях. Выполните экспериментальную калибровку на массиве с помощью 4 экспериментальных источников в азимуте и углах возвышения (-60,0), (10,80), (40,-40), и (-80,0) степени. Для калибровочного процесса экспериментальные сигналы имеют ОСШ 30 дБ. Каждый экспериментальный сигнал содержит 10 000 выборок. Примите, что сигналы имеют частоту 600 МГц.
Настройте ULA номинальными параметрами
fc = 600e6; c = physconst('LightSpeed'); lam = c/fc; d = 0.5*lam; sIso = phased.IsotropicAntennaElement('FrequencyRange',[100,900]*1e6); Nelem = 7; NominalTaper = ones(1,Nelem); sULA = phased.ULA('Element',sIso,'NumElements',Nelem,'ElementSpacing',d,... 'Taper',NominalTaper);
Создайте экспериментальные сигналы
Случайным образом встревожьте положения элемента с помощью Распределения Гаусса, которое имеет стандартное отклонение 0,1 длин волны. Не тревожьте положение первого элемента.
posstd = 0.1;
rng default
NominalElementPositions = getElementPosition(sULA)/lam;
ReferenceElement = NominalElementPositions(:,1);
PositionPert = [zeros(3,1),posstd*randn(3,Nelem-1)];
ActualElementPositions = NominalElementPositions + PositionPert;
Встревожьте заострение в величине и фазе. Не тревожьте первое заострение.
tapermagstd = 0.15; taperphasestd = 0.15; tapermagpert = tapermagstd*[0; randn(Nelem-1,1)]; ActualTaper = NominalTaper' + tapermagpert; taperphasepert = taperphasestd*[0;randn(Nelem-1,1)]; ActualTaper = ActualTaper.*exp(1i*taperphasepert);
Сгенерируйте сигналы с помощью встревоженных положений, заострений и четырех экспериментальных источников.
Nsamp = 10000; ncov = 0.001; PilotAng = [-60,10,40,-80; 10,80,-40,0]; Npilot = size(PilotAng,2); for n = 1:Npilot X(:,:,n) = sensorsig(ActualElementPositions,Nsamp,..., PilotAng(:,n),ncov,'Taper',ActualTaper); end
Выполните экспериментальную калибровку
[estpos,esttaper] = pilotcalib(... NominalElementPositions - ReferenceElement*ones(1,Nelem),... X,PilotAng);
Добавьте назад положение ссылочного датчика.
estpos = estpos + NominalElementPositions(:,1)*ones(1,Nelem);
Исследуйте среднеквадратичную (RMS) ошибку калиброванных параметров
Вычислите значения RMS начальных возмущений заострения.
tapermagpertRMSE = sqrt(tapermagpert'*tapermagpert/Nelem); taperphasepertRMSE = sqrt(taperphasepert'*taperphasepert/Nelem);
Вычислите значение RMS калиброванной ошибки величины заострения.
diff = abs(ActualTaper) - abs(esttaper); diff2 = diff'*diff; tapermagsolvRMSE = sqrt(diff2/Nelem);
Сравните калиброванную ошибку величины RMS с начальной ошибкой величины RMS. Калибровка уменьшает ошибку величины RMS.
disp(tapermagsolvRMSE/tapermagpertRMSE)
6.7715e-04
Вычислите значение RMS калиброванной ошибки фазы заострения.
diff = unwrap(angle(ActualTaper) - angle(esttaper)); diff2 = diff'*diff; tapersolvphaseRMSE = sqrt(diff2/Nelem);
Сравните калиброванную ошибку фазы RMS с начальной ошибкой фазы RMS. Калибровка уменьшает ошибку фазы RMS.
disp(tapersolvphaseRMSE/taperphasepertRMSE)
0.0021
% Compute the RMS value of the initial position error.
numpos = 3*Nelem;
initposRMSE = sqrt(sum(PositionPert(:).^2)/numpos);
Вычислите значение RMS калиброванной ошибки положения.
solvposErr = ActualElementPositions - estpos; solvposRMSE = sqrt(sum(solvposErr(:).^2)/(numpos));
Сравните калиброванную ошибку положения RMS с ошибкой RMS исходного положения. Калибровка уменьшает ошибку положения RMS.
disp(solvposRMSE/initposRMSE)
3.6308e-04
Создайте URA с 9 элементами распределенной половины изотропных антенных элементов длины волны независимо. Примите, что массив был геометрически встревожен во всех направлениях за исключением первого элемента. Выполните экспериментальную калибровку на массиве с помощью 5 экспериментальных источников в азимуте и углах возвышения (-60,0), (10,-40), (40,0), (120,45), и (170,50) степени. Для калибровочного процесса экспериментальные сигналы имеют ОСШ 30 дБ. Каждый экспериментальный сигнал содержит 10 000 выборок. Примите, что сигналы имеют частоту 600 МГц.
Создайте массив
Для удобства используйте phased.URA
Система object™, чтобы установить номинальное положение и значения заострения.
fc = 300e6; c = physconst('LightSpeed'); lam = c/fc; d = 0.5*lam; sIso = phased.IsotropicAntennaElement('FrequencyRange',[100,900]*1e6); sURA = phased.URA('Element',sIso,'Size',[3,3],... 'ElementSpacing',d,'Taper',ones(3,3)); Nelem = getNumElements(sURA); taper = getTaper(sURA);
Создайте экспериментальные сигналы
Случайным образом встревожьте положения элемента с помощью Распределения Гаусса, которое имеет стандартное отклонение 0,1 длин волны. Не тревожьте положение первого элемента.
posstd = 0.1;
rng default
NominalElementPositions = getElementPosition(sURA)/lam;
ReferenceElement = NominalElementPositions(:,1);
PositionPert = [zeros(3,1),posstd*randn(3,Nelem-1)];
ActualElementPositions = NominalElementPositions + PositionPert;
Встревожьте заострение в величине и фазе. Не тревожьте первое заострение.
NominalTaper = getTaper(sURA); tapermagstd = 0.1; taperphasestd = 0.1; tapermagpert = tapermagstd*[0; randn(Nelem-1,1)]; ActualTaper = NominalTaper + tapermagpert; taperphasepert = taperphasestd*[0;randn(Nelem-1,1)]; ActualTaper = ActualTaper.*exp(1i*taperphasepert);
Сгенерируйте экспериментальные сигналы с помощью встревоженных положений и заострений.
Nsamp = 10000; ncov = 0.001; PilotAng = [-60,10,40,120,170; 0,-40,0,45,50]; Npilot = size(PilotAng,2); for n = 1:Npilot X(:,:,n) = sensorsig(ActualElementPositions,Nsamp,... PilotAng(:,n),ncov,'Taper',ActualTaper); end
Выполните экспериментальную калибровку
[estpos,esttaper] = pilotcalib(NominalElementPositions - ReferenceElement*ones(1,Nelem),...
X,PilotAng,NominalTaper);
Добавьте назад положение ссылочного датчика.
estpos = estpos + NominalElementPositions(:,1)*ones(1,Nelem);
Исследуйте среднеквадратичную (RMS) ошибку калиброванных параметров
Вычислите значения RMS начальных возмущений заострения, чтобы соответствовать значениям RMS калиброванных параметров.
tapermagpertRMSE = sqrt(tapermagpert'*tapermagpert/Nelem); taperphasepertRMSE = sqrt(taperphasepert'*taperphasepert/Nelem);
Вычислите значение RMS калиброванной ошибки величины заострения.
diff = abs(ActualTaper) - abs(esttaper); diff2 = diff'*diff; tapermagsolvRMSE = sqrt(diff2/Nelem);
Сравните калиброванную ошибку величины RMS с начальной ошибкой RMS. Калибровка уменьшает ошибку величины RMS.
disp(tapermagsolvRMSE/tapermagpertRMSE)
0.0014
Вычислите значение RMS калиброванной ошибки фазы заострения.
diff = unwrap(angle(ActualTaper) - angle(esttaper)); diff2 = diff'*diff; tapersolvphaseRMSE = sqrt(diff2/Nelem);
Сравните калиброванную ошибку фазы RMS с начальной ошибкой RMS. Калибровка уменьшает ошибку фазы RMS.
disp(tapersolvphaseRMSE/taperphasepertRMSE)
0.0015
Вычислите значение RMS ошибки исходного положения.
numpos = 3*Nelem; initposRMSE = sqrt(sum(PositionPert(:).^2)/numpos);
Вычислите значение RMS калиброванной ошибки положения.
solvposErr = ActualElementPositions - estpos; solvposRMSE = sqrt(sum(solvposErr(:).^2)/(numpos));
Сравните калиброванную ошибку положения RMS с ошибкой RMS исходного положения. Калибровка уменьшает ошибку положения RMS.
disp(solvposRMSE/initposRMSE)
7.1582e-04
Создайте ULA с 6 элементами изотропных антенных элементов, которые являются расположенной с интервалами половиной длины волны независимо. Примите, что массив был геометрически встревожен в x-y плоскости и содержит неизвестную ошибку заострения. Выполните экспериментальную калибровку на массиве с помощью четырех экспериментальных источников в азимуте и углах возвышения (-60,0), (10,-40), (40,0), и (120,45) степени. Для калибровочного процесса экспериментальные сигналы имеют ОСШ 30 дБ. Каждый экспериментальный сигнал содержит 10 000 выборок. Примите, что сигналы имеют частоту 600 МГц.
Настройте ULA номинальными параметрами
fc = 600e6; c = physconst('LightSpeed'); lam = c/fc; d = 0.5*lam; sIso = phased.IsotropicAntennaElement('FrequencyRange',[100,900]*1e6); Nelem = 6; NominalTaper = ones(1,Nelem); sULA = phased.ULA('Element',sIso,'NumElements',Nelem,'ElementSpacing',d,... 'Taper',NominalTaper);
Создайте экспериментальные сигналы
Случайным образом встревожьте положения элемента с помощью Распределения Гаусса, которое имеет стандартное отклонение 0,13 длин волны. Не тревожьте положение первого элемента.
posstd = 0.13;
rng default
NominalElementPositions = getElementPosition(sULA)/lam;
ReferenceElement = NominalElementPositions(:,1);
PositionPert = [zeros(3,1),posstd*randn(3,Nelem-1)];
ActualElementPositions = NominalElementPositions + PositionPert;
Встревожьте заострение в величине и фазе. Не тревожьте первое заострение.
tapermagstd = 0.15; taperphasestd = 0.15; tapermagpert = tapermagstd*[0; randn(Nelem-1,1)]; ActualTaper = NominalTaper' + tapermagpert; taperphasepert = taperphasestd*[0;randn(Nelem-1,1)]; ActualTaper = ActualTaper.*exp(1i*taperphasepert);
Сгенерируйте сигналы с помощью встревоженных положений и заострений.
Nsamp = 10000; ncov = 0.001; PilotAng = [-60,10,40,120; 0,-40,0,45]; Npilot = size(PilotAng,2); for n = 1:Npilot X(:,:,n) = sensorsig(ActualElementPositions,Nsamp,... PilotAng(:,n),ncov,'Taper',ActualTaper); end
Выполните экспериментальную калибровку
Выключите оценку весов заострения.
[estpos,esttaper] = pilotcalib(NominalElementPositions - ReferenceElement*ones(1,Nelem),...
X,PilotAng,NominalTaper.',[1,1,1,0]');
Добавьте назад положение ссылочного датчика.
estpos = estpos + NominalElementPositions(:,1)*ones(1,Nelem);
Исследуйте среднеквадратичную (RMS) ошибку калиброванных параметров
Вычислите значения RMS начальных возмущений заострения, чтобы соответствовать значениям RMS калиброванных параметров.
tapermagpertRMSE = sqrt(tapermagpert'*tapermagpert/Nelem); taperphasepertRMSE = sqrt(taperphasepert'*taperphasepert/Nelem);
Вычислите значение RMS калиброванной ошибки величины заострения.
diff = abs(ActualTaper) - abs(esttaper); diff2 = diff'*diff; tapermagsolvRMSE = sqrt(diff2/Nelem);
Сравните калиброванную ошибку величины RMS с начальной ошибкой RMS. Калибровка уменьшает ошибку величины RMS.
disp(tapermagsolvRMSE/tapermagpertRMSE)
1.0000
Вычислите значение RMS калиброванной ошибки фазы заострения.
diff = unwrap(angle(ActualTaper) - angle(esttaper)); diff2 = diff'*diff; tapersolvphaseRMSE = sqrt(diff2/Nelem);
Сравните калиброванную ошибку фазы RMS с начальной ошибкой RMS. Калибровка уменьшает ошибку фазы RMS.
disp(tapersolvphaseRMSE/taperphasepertRMSE)
1
Вычислите значение RMS ошибки исходного положения.
numpos = 3*Nelem; initposRMSE = sqrt(sum(PositionPert(:).^2)/numpos);
Вычислите значение RMS калиброванной ошибки положения.
solvposErr = ActualElementPositions - estpos; solvposRMSE = sqrt(sum(solvposErr(:).^2)/(numpos));
Сравните калиброванную ошибку положения RMS с ошибкой RMS исходного положения. Калибровка уменьшает ошибку положения RMS.
disp(solvposRMSE/initposRMSE)
0.1502
nompos
— Номинальные относительные положения элементаНоминальные относительные положения элемента в виде 3 с действительным знаком N матрицей. Размерность N является числом элементов в сенсорной матрице. Положения элементов относительно первого элемента массива и заданы в модулях длины волны сигнала. Каждый столбец nompos
представляет [x;y;z]
координаты соответствующего элемента. Номинальное положение всех датчиков должно быть в половине длины волны их фактических положений для успешной калибровки.
Типы данных: double
x
— Экспериментальные сигналыЭкспериментальные сигналы в виде L с комплексным знаком-by-N-by-M матрица. Аргумент x
представляет сигналы, полученные массивом, когда экспериментальные источники передают. Размерность L является количеством снимков состояния каждого экспериментального исходного сигнала. Размерность N является количеством элементов массива. Размерность M является количеством экспериментальных источников.
Типы данных: double
Поддержка комплексного числа: Да
pilotang
— Экспериментальные углыЭкспериментальные углы в виде 2 с действительным знаком M матрицей. Размерность M является количеством экспериментальных источников. Каждый столбец содержит направление экспериментального источника в форме [azimuth; elevation]
. Угловые модули в градусах. Угол азимута должен находиться между-180 ° и 180 °, и угол возвышения должен находиться между-90 ° и 90 °. Угол азимута измеряется от x - оси к проекции исходного направления в плоскость xy, положительную к y - ось. Угол возвышения задан как угол от плоскости xy до исходного направления, положительного к z - ось. Калибровочные исходные направления должны охватить достаточно разнообразный азимут и углы возвышения.
Типы данных: double
nomtaper
— Номинальное заострениеНоминальное заострение элементов массива в виде N с комплексным знаком-by-1 вектор-столбец. Размерность N является количеством элементов массива. Каждый компонент представляет номинальное заострение соответствующего элемента.
Типы данных: double
Поддержка комплексного числа: Да
uncerts
— Настройка оценки неопределенности
(значение по умолчанию) | вектор 1 на 4 из единиц и нулейНастройка оценки неопределенности в виде вектора 1 на 4, состоящего из 0
и 1
. Векторный uncerts
определяет который неопределенность к предполагаемому. Вектор принимает форму [xflag; yflag; zflag; taperflag]
. Установите xflag
, yflag
, или zflag
к 1
оценить неопределенность в x, y или осях z. Установите taperflag
к 1
оценить неопределенность в заострении. Количество экспериментальных источников должно больше, чем или равный количеству 1
в векторе.
Например, установите uncerts
к [0;1;1;1]
оценить неопределенность в y и компонентах положения элемента z и заострении одновременно.
Типы данных: double
estpos
— Предполагаемые положенияПредполагаемые положения элемента, возвращенные как 3 с действительным знаком N матрицей. Модули находятся в длине волны сигнала. Размерность N является количеством элементов массива. Каждый столбец estpos
представляет [x;y;z]
координаты соответствующего элемента.
esttaper
— Предполагаемое заострениеПредполагаемые значения заострения, возвращенные как N с комплексным знаком-by-1 вектор-столбец. Размерность N является количеством элементов массива. Каждый элемент esttaper
представляет заострение соответствующего элемента датчика.
Этот алгоритм требует, чтобы экспериментальные источники были независимыми узкополосными сигналами плоской волны, поступающими из далекой полевой области массива. Кроме того, сигналы не должны показывать многопутевые эффекты распространения или когерентность. Все элементы в сенсорной матрице приняты, чтобы быть изотропными.
Алгоритм калибрует относительные положения датчиков массивов относительно первого датчика. Чтобы использовать алгоритм, сначала вычтите положение первого элемента от каждого элемента, затем передайте относительный массив в функцию в качестве номинального аргумента положения к произведенному калиброванные относительные положения. Наконец, добавьте назад первое положение элемента во все относительные положения, чтобы создать полностью калиброванный массив.
[1] Н. Фистас и А. Мэникас, "Новый Общий Глобальный Калибровочный Метод Массивов", Продолжения IEEE ICASSP, IV Издания, стр 73-76, апрель 1994.
Указания и ограничения по применению:
Не поддерживает входные параметры переменного размера.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.