Чтобы смоделировать набор сигнала с элементом датчика или сенсорной матрицей, можно использовать phased.Collector
или phased.WideBandCollector
. Оба объекта коллектора принимают, что инцидентные сигналы распространили к местоположению элементов массива, но не были получены массивом. Другими словами, объекты коллектора не моделируют фактический прием массивом. Смотрите Предусилитель Получателя для эффектов сигнала, связанных с усилением и внутренним шумом получателя массива.
Во многих приложениях обработки матриц мало отношение пропускной способности сигнала к несущей частоте. Выраженный как процент, это отношение не превышает несколько процентов. Примеры включают радарные приложения, где импульсный сигнал модулируется несущей частотой в микроволновой области значений. Это узкополосные сигналы. Для узкополосных сигналов можно выразить держащийся вектор как функцию одной частоты, несущей частоты. Для узкополосных сигналов, phased.Collector
объект является соответствующим.
В других приложениях не выравнивается по ширине узкополосное предположение. Во многих акустических и приложения гидролокатора, волна, посягающая на массив, является волной давления, которая не модулируется. Не возможно выразить держащийся вектор как функцию одной частоты. В этих случаях подход поддиапазона реализован в phased.WidebandCollector
является соответствующим. Широкополосный коллектор разлагает вход на поддиапазоны и вычисляет держащийся вектор для каждого поддиапазона.
Когда вы используете узкополосный коллектор, phased.Collector
, необходимо задать эти аспекты коллектора:
Рабочая частота массива
Скорость распространения волны
Датчик (один элемент) или сенсорная матрица
Тип входящей волны. Выбором является 'Plane'
и 'Unspecified'
. Если вы выбираете 'Plane'
, входные сигналы являются несколькими плоскими волнами, посягающими на целый массив. Каждая плоская волна получена всеми элементами сбора. Если вы выбираете 'Unspecified'
, входной сигнал является отдельными волнами, посягающими на отдельные датчики.
Применить ли веса к сигналам, собранным различными элементами в массиве. Если вы хотите применить веса, вы задаете их, когда вы выполняете Систему object™.
Когда вы используете широкополосный коллектор, phased.WidebandCollector
, необходимо задать эти аспекты коллектора:
Несущая частота
Демодулируется ли сигнал к основной полосе
Рабочая частота массива
Скорость распространения волны
Выборка уровня
Датчик (один элемент) или сенсорная матрица
Тип входящей волны. Выбором является 'Plane'
и 'Unspecified'
. Если вы выбираете 'Plane'
, входные сигналы являются несколькими плоскими волнами, посягающими на целый массив. Каждая плоская волна получена всеми элементами сбора. Если вы выбираете 'Unspecified'
, входной сигнал является отдельными волнами, посягающими на отдельные датчики.
Применить ли веса к сигналам, собранным различными элементами в массиве. Если вы хотите применить веса, вы задаете их, когда вы выполняете Системный объект.
В этом примере показано, как создать узкополосный коллектор, который моделирует плоскую волну, посягающую на двухэлементную универсальную линейную матрицу. Массив имеет интервал элемента 0,5 м (значение по умолчанию для ULA). Рабочая частота массива составляет 300 МГц.
Создайте Системные объекты коллектора и массив.
array = phased.ULA('NumElements',2,'ElementSpacing',0.5); collector = phased.Collector('Sensor',array,... 'PropagationSpeed',physconst('LightSpeed'),... 'OperatingFrequency',3e8,'Wavefront','Plane');
Создайте сигнал и симулируйте прием от угла (45; 0).
x =[1 -1 1 -1]'; y = collector(x,[45;0])
y = 4×2 complex
0.4433 - 0.8964i 0.4433 + 0.8964i
-0.4433 + 0.8964i -0.4433 - 0.8964i
0.4433 - 0.8964i 0.4433 + 0.8964i
-0.4433 + 0.8964i -0.4433 - 0.8964i
В предыдущем случае объект коллектора умножает входной сигнал, x
, соответствующим элементом держащегося вектора для двухэлементного ULA. Следующий код производит ответ эквивалентным способом. Во-первых, создайте ULA и затем создайте держащийся вектор. Сравните с предыдущим результатом.
array = phased.ULA('NumElements',2,'ElementSpacing',0.5); steeringvec = phased.SteeringVector('SensorArray',array); sv = steeringvec(3e8,[45;0]); x =[1 -1 1 -1]'; y1 = x*sv.'
y1 = 4×2 complex
0.4433 - 0.8964i 0.4433 + 0.8964i
-0.4433 + 0.8964i -0.4433 - 0.8964i
0.4433 - 0.8964i 0.4433 + 0.8964i
-0.4433 + 0.8964i -0.4433 - 0.8964i
Sensor
свойство phased.Collector
Система object™ может указать один элемент антенны. В этом примере создайте пользовательский элемент антенны с помощью phased.CustomAntennaElement
Системный объект. Элемент антенны имеет ответ косинуса по углам вертикального изменения от (-90 °, 90 °). Постройте полярный ответ шаблона антенны на уровне 1 ГГц на сокращении вертикального изменения в азимуте на 0 °. Отобразите ответ напряжения антенны в азимуте на 0 ° и вертикальное изменение на 45 °.
Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step
синтаксис. Например, замените myObject(x)
с step(myObject,x)
.
fc = 1e9;
antenna = phased.CustomAntennaElement;
antenna.AzimuthAngles = -180:180;
antenna.ElevationAngles = -90:90;
antenna.MagnitudePattern = mag2db(...
repmat(cosd(antenna.ElevationAngles)',1,numel(antenna.AzimuthAngles)));
resp = antenna(fc,[0;45])
resp = 0.7071
pattern(antenna,fc,0,[-90:90],'Type','powerdb')
Ответ напряжения антенны в азимуте на 0 ° и вертикальное изменение на 45 ° составляют because(45 °), как ожидалось.
Примите узкополосный синусоидальный входной инцидент на элементе антенны от азимута на 0 ° и вертикального изменения на 45 °. Определите сигнал, собранный в элементе.
collector = phased.Collector('Sensor',antenna,'OperatingFrequency',fc); x =[1 -1 1 -1]'; y = collector(x,[0;45])
y = 4×1
0.7071
-0.7071
0.7071
-0.7071
В этом примере показано, как симулировать прием широкополосного акустического сигнала одним элементом ненаправленного микрофона.
Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step
синтаксис. Например, замените myObject(x)
с step(myObject,x)
.
x = randn(10,1); c = 340.0; microphone = phased.OmnidirectionalMicrophoneElement(... 'FrequencyRange',[20 20e3],'BackBaffled',true); collector = phased.WidebandCollector('Sensor',microphone,... 'PropagationSpeed',c,'SampleRate',50e3,... 'ModulatedInput',false); y = collector(x,[30;10]);