Можно использовать phased.Radiator
и phased.Collector
объекты для моделирования узкополосного излучения сигнала и набора с массивом. Решётка может быть одним микрофоном или антенным элементом или массивом элементов датчика.
Чтобы излучить сигнал от сенсорного массива, используйте phased.Radiator
. Когда вы используете этот объект, необходимо задать следующие аспекты излучателя:
Объединяется ли выход всех элементов датчика
Рабочая частота массива
Скорость распространения волны
Сенсор (один элемент) или массив
Применять ли веса к сигналам, излучаемым различными элементами массива. При выполнении системной object™ применяются веса.
Создайте излучателя с помощью двухэлементного ULA с элементами, разнесенными на 0,5 метра (ULA по умолчанию). Рабочая частота составляет 300 МГц, скорость распространения - это скорость света, и выходы элемента объединяются, чтобы симулировать диаграмму направленности излучения поля.
Примечание.Этот пример выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов функции на эквивалентный step
синтаксис. Для примера замените myObject(x)
с step(myObject,x)
.
array = phased.ULA('NumElements',2,'ElementSpacing',0.5); radiator = phased.Radiator('Sensor',array,... 'OperatingFrequency',300e6,... 'PropagationSpeed',physconst('LightSpeed'),... 'CombineRadiatedSignals',true);
Создайте сигнал для излучения и распространения на дальнее поле под углом (45 °, 0 °).
x = [1 -1 1 -1]'; y = radiator(x,[45;0]);
Сигнал дальнего поля возникает в результате умножения сигнала на шаблон массива. Шаблон массива является продуктом шаблона элемента массива и фактора массива. Для равномерного линейного массива коэффициент массива является суперпозицией элементов в векторе управления phased.SteeringVector
.
Следующий код формирует идентичный сигнал дальнего поля при явном использовании коэффициента массива.
array = phased.ULA('NumElements',2,'ElementSpacing',0.5); steervec = phased.SteeringVector('SensorArray',array,... 'IncludeElementResponse',true); sv = steervec(300e6,[45;0]); y1 = x*sum(sv);
Сравните y1 с y.
disp(y1-y)
0 0 0 0