поэтапный. SteeringVector

Руководящий вектор сенсорной матрицы

Описание

Системный объект SteeringVector создает держащиеся векторы для сенсорной матрицы для нескольких направлений и частот.

Вычислить держащийся вектор для массива для заданных направлений и частоты

  1. Создайте объект phased.SteeringVector и установите его свойства.

  2. Вызовите объект с аргументами, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

steervec = phased.SteeringVector
steervec = phased.SteeringVector(Name,Value)

Описание

steervec = phased.SteeringVector создает держащуюся векторную Систему object™, steervec, со значениями свойств по умолчанию.

steervec = phased.SteeringVector(Name,Value) создает держащийся вектор с каждым набором свойства Name к заданному Value. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN). Заключите каждое имя свойства в одинарные кавычки.

Пример: steervec = phased.SteeringVector('SensorArray',phased.URA,'PropagationSpeed',physconst('LightSpeed')) создает держащийся векторный объект для универсального прямоугольного массива (URA) со значениями свойств URA по умолчанию и устанавливает скорость распространения на скорость света.

Свойства

развернуть все

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Сенсорная матрица, заданная как Системный объект массивов, принадлежащий Phased Array System Toolbox. Сенсорная матрица может содержать подмассивы.

Пример: phased.URA

Скорость распространения сигнала, заданная как положительная скалярная величина. Модули исчисляются в метрах в секунду. Скорость распространения по умолчанию является значением, возвращенным physconst('LightSpeed'). Смотрите physconst.

Пример: 3e8

Типы данных: double

Опция, чтобы включать ответы отдельного элемента в держащийся вектор, заданный как false или true. Если это свойство установлено в true, держащийся вектор включает ответы отдельного элемента массива. Если это свойство установлено в false, держащийся вектор вычисляется, принимая, что элементы являются изотропными, независимо от того, как элементы указаны. Установите это свойство на true к поляризованным сигналам модели.

Когда массив, заданный в свойстве SensorArray, содержит подмассивы, держащийся вектор применяется к подмассивам. Если SensorArray не содержит подмассивы, держащийся вектор применяется к элементам массива.

Типы данных: логический

Количество битов квантования фазовращателя, заданных как неотрицательное целое число. Это количество битов используется, чтобы квантовать компонент сдвига фазы формирователя луча или регулирующий векторные веса. Значение нуля указывает, что никакое квантование не выполняется.

Типы данных: double

Опция, чтобы включить поляризованные поля, заданные как false или true. Установите это свойство на true включать поляризацию. Установите это свойство на false игнорировать поляризацию. Включение поляризации требует, чтобы сенсорная матрица, заданная в свойстве SensorArray, могла моделировать поляризацию.

Если вы устанавливаете это свойство на false для массива, который на самом деле поддерживает поляризацию, то вся информация о поляризации отбрасывается. Объединенный шаблон от H и компонентов поляризации V используется в каждом элементе, чтобы вычислить держащийся вектор.

Типы данных: логический

Использование

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

SV = steervec(FREQ,ANG)
SV = steervec(FREQ,ANG,STEERANG)
SV = steervec(FREQ,ANG,STEERANG,WS)

Описание

пример

SV = steervec(FREQ,ANG) возвращает держащийся вектор, SV, указывающий в направлениях, заданных ANG и для рабочих частот, заданных в FREQ. Значение SV зависит от свойства IncludeElementResponse, можно следующим образом:

  • Если IncludeElementResponse является true, компоненты SV включают ответы отдельного элемента.

  • Если IncludeElementResponse является false, вычисление принимает, что элементы являются изотропными, и SV не включает ответы отдельного элемента. Если массив содержит подмассивы, SV является фактором массивов среди подмассивов. Центр фазы каждого подмассива в его геометрическом центре. Если SensorArray не содержит подмассивы, SV является фактором массивов среди элементов.

SV = steervec(FREQ,ANG,STEERANG) также задает руководящий угол подмассива, STEERANG. Чтобы использовать этот синтаксис, установите свойство SensorArray на тип массива, который содержит подмассивы и устанавливает IncludeElementResponse на true. Массивами, которые содержат подмассивы, является phased.PartitionedArray и phased.ReplicatedSubarray. В этом случае установите свойство SubarraySteering этих массивов или к 'Phase' или к 'Time'.

SV = steervec(FREQ,ANG,STEERANG,WS) также задает WS, когда веса применились к каждому элементу в каждом подмассиве. Чтобы использовать этот синтаксис, установите свойство SensorArray на массив, который поддерживает подмассивы и устанавливает свойство SubarraySteering массива к 'Custom'.

Входные параметры

развернуть все

Регулируя векторные направления, заданные как вектор длины-M с действительным знаком или 2 с действительным знаком M матрицей. M является количеством держащихся направлений. Когда ANG является 2 M матрицей, каждый столбец матрицы задает направление на пробеле в форме [azimuth; elevation]. Угол азимута должен быть между-180 ° и 180 °, и угол повышения должен быть между-90 ° и 90 °. Когда ANG является вектором длины-M, его значения соответствуют углам азимута держащегося векторного направления с обнуленными углами повышения. Угловые модули в градусах.

Пример: [50.0,17.0,-24.5;0.4,4.0,23.9]

Типы данных: single | double

Рабочие частоты, заданные как 1 L вектором положительных значений. Модули находятся в Гц.

Пример: [4100.0,4200.0]

Типы данных: single | double

Руководящее направление подмассива, заданное как скаляр или с действительным знаком 2 1 вектор. Когда STEERANG 2 1 вектор, он задает руководящее направление подмассива в форме [azimuth;elevation]. Угол азимута должен быть между-180 ° и 180 °, и угол повышения должен быть между-90 ° и 90 °. Когда STEERANG является скаляром, его значение соответствует углу азимута руководящего направления подмассива с обнуленными углами повышения. Угловые модули в градусах.

Пример: [50.0;10.0]

Типы данных: single | double

Веса элемента подмассива, заданные как N с комплексным знаком матрица SE-by-N или 1 N массивом ячеек, где N является количеством подмассивов. Эти веса применяются к отдельным элементам в подмассиве.

Веса элемента подмассива

Сенсорная матрицаВеса подмассива
phased.ReplicatedSubarray

Все подмассивы имеют те же размерности и размеры. Затем веса подмассива формируют матрицу SE-by-N N. N SE является числом элементов в каждом подмассиве и N, является количеством подмассивов. Каждый столбец WS задает веса для соответствующего подмассива.

phased.PartitionedArray

Подмассивы не могут иметь тех же размерностей и размеров. В этом случае можно задать веса подмассива как

  • матрица SE-by-N N, где N SE является теперь числом элементов в самом большом подмассиве. Первые записи Q в каждом столбце являются весами элемента для подмассива, где Q является числом элементов в подмассиве.

  • 1 N массивом ячеек. Каждая ячейка содержит вектор-столбец весов для соответствующего подмассива. Вектор-столбцы имеют длины, равные числу элементов в соответствующем подмассиве.

Зависимости

Чтобы включить этот аргумент, установите свойство Sensor на массив, который содержит подмассивы и устанавливает свойство SubarraySteering массива к 'Custom'.

Типы данных: single | double
Поддержка комплексного числа: Да

Выходные аргументы

развернуть все

Регулирование вектора, возвращенного как N с комплексным знаком-by-M-by-L массив или структура, содержащая массивы.

Форма держащегося вектора зависит от того, установлено ли свойство EnablePolarization в true или false.

  • Если EnablePolarization установлен в false, держащимся вектором, SV, является N-by-M-by-L массив. Длина первой размерности, N, является числом элементов поэтапного массива. Если SensorArray содержит подмассивы, N является количеством подмассивов. Длина второго измерения, M, соответствуя количеству держащихся направлений задана в аргументе ANG. Длина третьей размерности, L, является количеством частот, заданных в аргументе FREQ.

  • Если EnablePolarization установлен в true, SV является struct MATLAB, содержащий два поля, SV.H и SV.V. Эти два поля представляют горизонталь (H) и вертикальный (V) компоненты поляризации держащегося вектора. Каждым полем является N-by-M-by-L массив. Длина первой размерности, N, является числом элементов поэтапного массива. Если SensorArray содержит подмассивы, N является количеством подмассивов. Длина второго измерения, M, соответствует количеству держащихся направлений, заданных в аргументе ANG. Длина третьей размерности, L, является количеством частот, заданных в аргументе FREQ.

    Симуляция поляризации также требует, чтобы сенсорная матрица, заданная в свойстве SensorArray, могла моделировать поляризацию, и что свойство IncludeElementResponse установлено в true.

Типы данных: single | double

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

развернуть все

Вычислите и отобразите держащийся вектор для универсальной линейной матрицы с 4 элементами в направлении 30 азимутов степеней и 20 повышений степеней. Примите, что рабочая частота массива составляет 300 МГц.

array = phased.ULA('NumElements',4);
steervec = phased.SteeringVector('SensorArray',array);
fc = 3e8;
ang = [30; 20];
sv = steervec(fc,ang)
sv = 4×1 complex

  -0.6011 - 0.7992i
   0.7394 - 0.6732i
   0.7394 + 0.6732i
  -0.6011 + 0.7992i

Вычислите держащийся вектор для универсальной линейной матрицы (ULA) с 4 элементами в направлении 30 азимутов степеней и 20 повышений степеней. Примите массив, рабочая частота составляет 300 МГц.

fc = 300e6;
c = physconst('LightSpeed');
array = phased.ULA('NumElements',4);
steervec = phased.SteeringVector('SensorArray',array);
sv = steervec(fc,[30;20]);

Постройте диаграммы направленности для универсальной линейной матрицы, когда никакой руководящий вектор не применяется (управляемый разворот) и когда держащийся вектор применяется.

subplot(211)
pattern(array,fc,-180:180,0,'CoordinateSystem','rectangular', ...
    'PropagationSpeed',c,'Type','powerdb')
title('Without steering')
subplot(212)
pattern(array,fc,-180:180,0,'CoordinateSystem','rectangular', ...
    'PropagationSpeed',c,'Type','powerdb','Weights',sv)
title('With steering')

Вычислите держащийся вектор для универсальной линейной матрицы в направлении азимута на 30 ° и повышения на 20 °. Примите, что массив’ действует на уровне 300 МГц.

Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным синтаксисом step. Например, замените myObject(x) на step(myObject,x).

array = phased.ULA('NumElements',2);
steeringvector = phased.SteeringVector('SensorArray',array);
fc = 300.0e6;
ang = [30;20];
sv = steeringvector(fc,ang);

Ссылки

[1] Деревья фургона, H. Оптимальная обработка матриц. Нью-Йорк: Wiley-межнаука, 2002.

Расширенные возможности

Представленный в R2012a

Для просмотра документации необходимо авторизоваться на сайте