шаг

Системный объект: поэтапный. PartitionedArray
Пакет: поэтапный

Выведите ответы подмассивов

Синтаксис

RESP = step(H,FREQ,ANG,V)
RESP = step(H,FREQ,ANG,V,STEERANGLE)
RESP = step(H,FREQ,ANG,V,WS)

Описание

Примечание

При запуске в R2016b, вместо того, чтобы использовать метод step, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

пример

RESP = step(H,FREQ,ANG,V) возвращает ответы RESP подмассивов в массиве, на рабочих частотах, заданных в FREQ и направлениях, заданных в ANG. Центр фазы каждого подмассива в его геометрическом центре. V является скоростью распространения. Элементы в каждом подмассиве соединяются с центром фазы подмассива использование канала равного пути.

RESP = step(H,FREQ,ANG,V,STEERANGLE) использование STEERANGLE как руководящее направление подмассива. Этот синтаксис доступен, когда вы устанавливаете свойство SubarraySteering или на 'Phase' или на 'Time'.

пример

RESP = step(H,FREQ,ANG,V,WS) использование WS как веса элемента подмассива. Этот синтаксис доступен, когда вы устанавливаете свойство SubarraySteering на 'Custom'.

Примечание

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

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

H

Разделенный объект массивов.

FREQ

Рабочие частоты массива в герц. FREQ является вектором - строкой из длины L. Типичные значения в области значений, заданной свойством H.Array.Element. То свойство называют FrequencyRange или FrequencyVector, в зависимости от типа элемента в массиве. Элемент имеет нулевой ответ на частотах вне той области значений.

ANG

Направления в градусах. ANG может быть или 2 M матрицей или вектором - строкой из длины M.

Если ANG является 2 M матрицей, каждый столбец матрицы задает направление в форме [азимут; повышение]. Угол азимута должен быть между –180 и 180 градусами, включительно. Угол повышения должен быть между –90 и 90 градусами, включительно.

Если ANG является вектором - строкой из длины M, каждый элемент задает угол азимута направления. В этом случае соответствующий угол повышения принят, чтобы быть 0.

V

Скорость распространения в метрах в секунду. Это значение должно быть скаляром.

STEERANGLE

Руководящее направление подмассива. STEERANGLE может быть или вектор-столбцом с 2 элементами или скаляром.

Если STEERANGLE является вектор-столбцом с 2 элементами, он имеет форму [azimuth; elevation]. Угол азимута должен быть между –180 и 180 градусами, включительно. Угол повышения должен быть между –90 и 90 градусами, включительно.

Если STEERANGLE является скаляром, он задает угол азимута направления. В этом случае угол повышения принят, чтобы быть 0.

WS

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

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

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

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

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

Зависимости

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

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

RESP

Ответы напряжения подмассивов поэтапного массива. Вывод зависит от ли поляризация поддержки массивов или нет.

  • Если массив не способен к поддержке поляризации, ответ напряжения, RESP, имеет размерности N-by-M-by-L. Размер N представляет количество подмассивов в поэтапном массиве, M, представляет количество углов, заданных в ANG, и L представляет количество частот, заданных в FREQ. Для конкретного подмассива каждый столбец RESP содержит ответы подмассива для соответствующего направления, заданного в ANG. Каждая из страниц L RESP содержит ответы подмассивов для соответствующей частоты, заданной в FREQ.

  • Если массив способен к поддержке поляризации, ответом напряжения, RESP, является MATLAB® struct, содержащий два поля, RESP.H и RESP.V. Поле RESP.H представляет горизонтальный ответ поляризации массива, в то время как RESP.V представляет вертикальный ответ поляризации массива. Каждое поле имеет размерности N-by-M-by-L. Размер N представляет количество подмассивов в поэтапном массиве, M, представляет количество углов, заданных в ANG, и L представляет количество частот, заданных в FREQ. Для конкретного подмассива каждый столбец RESP содержит ответы подмассива для соответствующего направления, заданного в ANG. Каждая из страниц L RESP содержит ответы подмассивов для соответствующей частоты, заданной в FREQ.

Примеры

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

Вычислите ответ в опорном направлении ULA с 4 элементами, разделенного в два ULAs с 2 элементами.

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

Настройте разделенный массив.

hula = phased.ULA('NumElements',4,'ElementSpacing',0.5);
partitionedarray = phased.PartitionedArray('Array',hula,...
   'SubarraySelection',[1 1 0 0;0 0 1 1]);

Вычислите ответ подмассивов в опорном направлении. Примите, что рабочая частота составляет 1 ГГц, и скорость распространения является скоростью света.

resp = partitionedarray(1.0e9,[0;0],physconst('Lightspeed'))
resp = 2×1

     2
     2

Создайте разделенный массив URA с тремя подмассивами различных размеров. Подмассивы имеют 8, 16, и 32 элемента. Используйте различные наборы весов элемента подмассива для каждого подмассива.

Создайте 4 56 элемент URA.

antenna = phased.IsotropicAntennaElement;
fc = 300e6;
c = physconst('LightSpeed');
lambda = c/fc;
n1 = 2^3;
n2 = 2^4;
n3 = 2^5;
nrows = 4;
ncols = n1 + n2 + n3;
array = phased.URA('Element',antenna,'Size',[nrows,ncols]);

Выберите эти три подмассива путем установки матрицы выбора.

sel1 = zeros(nrows,ncols);
sel2 = sel1;
sel3 = sel1;
sel = zeros(3,nrows*ncols);
for r = 1:nrows
    sel1(r,1:n1) = 1;
    sel2(r,(n1+1):(n1+n2)) = 1;
    sel3(r,((n1+n2)+1):ncols) = 1;
end
sel(1,:) = sel1(:);
sel(2,:) = sel2(:);
sel(3,:) = sel3(:);

Создайте разделенный массив.

partarray = phased.PartitionedArray('Array',array, ...
    'SubarraySelection',sel,'SubarraySteering','Custom');
viewArray(partarray,'ShowSubarray','All');

Установите веса для каждого подмассива и получите ответ каждого подмассива. Поместите веса в массив ячеек.

wts1 = ones(nrows*n1,1);
wts2 = 1.5*ones(nrows*n2,1);
wts3 = 3*ones(nrows*n3,1);
resp = partarray(fc,[30;0],c,{wts1,wts2,wts3})
resp = 3×1 complex

   0.0246 + 0.0000i
   0.0738 - 0.0000i
   0.2951 - 0.0000i

Смотрите также

|

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