sensorsig

Симулируйте принятый сигнал в массиве датчиков

Описание

x = sensorsig(pos,ns,ang) моделирует принятые узкополосные плоские сигналы на массив датчика. pos представляет положения элементов массива, каждый из которых принят изотропным. ns указывает количество снимков симулированного сигнала. ang представляет входные направления каждого плоского волнового сигнала. Сигналы плоской волны приняты как сигналы с постоянным модулем со случайными фазами.

пример

x = sensorsig(pos,ns,ang,ncov) описывает шум во всех элементах датчика. ncov задает степень шума или ковариационную матрицу. Шум является Гауссовым распределенным сигналом.

пример

x = sensorsig(pos,ns,ang,ncov,scov) задает степень или ковариационную матрицу для входящих сигналов.

x = sensorsig(pos,ns,ang,ncov,scov,'Taper',taper) задает конус массива как разделенную разделенными запятой парами, состоящую из 'Taper' и скаляр или вектор-столбец.

[x,rt] = sensorsig(___) также возвращает теоретическую ковариационную матрицу принятого сигнала, используя любой из входных параметров в предыдущих синтаксисах.

пример

[x,rt,r] = sensorsig(___) также возвращает выборочную ковариационную матрицу принятого сигнала.

Примеры

свернуть все

Симулируйте принятый сигнал в массиве и используйте данные для оценки направлений прибытия.

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

Создайте 8-элементный равномерный линейный массив, элементы которой разнесены на половину длины волны.

fc = 3e8;
c = 3e8;
lambda = c/fc;
array = phased.ULA(8,lambda/2);

Симулируйте 100 снимков принятого сигнала в массиве. Предположим, что существует два сигнала, поступающих от азимута 30 ° и 60 ° соответственно. Шум белый во всех элементах массива, и ОСШ составляет 10 дБ.

x = sensorsig(getElementPosition(array)/lambda,...
   100,[30 60],db2pow(-10));

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

estimator = phased.BeamscanEstimator('SensorArray',array,...
   'PropagationSpeed',c,'OperatingFrequency',fc,...
   'DOAOutputPort',true,'NumSignals',2);
[~,ang_est] = estimator(x);

Постройте график пространственного спектра, полученного в результате процесса оценки.

plotSpectrum(estimator)

Figure contains an axes. The axes with title Beamscan Spatial Spectrum contains an object of type line. This object represents 1 GHz.

На графике показаны peaks в 30 ° и 60 °.

Симулируйте прием двух некоррелированных входных сигналов, которые имеют различные уровни степени. Вектор с именем scov сохраняет уровни степени.

Создайте 8-элементный равномерный линейный массив, элементы которой разнесены на половину длины волны.

fc = 3e8;
c = 3e8;
lambda = c/fc;
ha = phased.ULA(8,lambda/2);

Симулируйте 100 снимков принятого сигнала в массиве. Предположим, что один входящий сигнал инициируется из 30 степеней азимута и имеет степень 3 Вт. Второй входящий сигнал инициируется из 60 степеней азимута и имеет степень 1 Вт. Эти два сигнала не коррелируют друг с другом. Шум белый во всех элементах массива, и ОСШ составляет 10 дБ.

ang = [30 60];
scov = [3 1];
x = sensorsig(getElementPosition(ha)/lambda,...
   100,ang,db2pow(-10),scov);

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

hdoa = phased.BeamscanEstimator('SensorArray',ha,...
   'PropagationSpeed',c,'OperatingFrequency',fc,...
   'DOAOutputPort',true,'NumSignals',2);
[~,ang_est] = step(hdoa,x);

Постройте график пространственного спектра, полученного в результате процесса оценки.

plotSpectrum(hdoa);

Figure contains an axes. The axes with title Beamscan Spatial Spectrum contains an object of type line. This object represents 1 GHz.

График показывает высокий пик в 30 степени и нижний пик в 60 степени.

Симулируйте прием трех сигналов, два из которых коррелированы.

Создайте ковариационную матрицу сигнала, в которой первый и третий из трех сигналов коррелируют друг с другом.

scov = [1 0 0.6;...
        0 2 0;...
        0.6 0 1];

Симулируйте прием 100 снимков трех входящих сигналов от 30 °, 40 ° и 60 ° азимута соответственно. Массив, который принимает сигналы, является однородной линейной решёткой с 8 элементами, элементы которой разнесены на половину длины волны. Шум белый во всех элементах массива, и ОСШ составляет 10 дБ.

pos = (0:7)*0.5;
ns = 100;
ang = [30 40 60];
ncov = db2pow(-10);
x = sensorsig(pos,ns,ang,ncov,scov);

Симулируйте прием сигнала в URA. Сравните теоретическую ковариацию сигнала с ее выборочной ковариацией.

Создайте равномерный прямоугольный массив 2 на 2, элементы которой разнесены на 1/4 длины волны.

pos = 0.25 * [0 0 0 0; -1 1 -1 1; -1 -1 1 1];

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

ncov = db2pow([-9 -10 -10 -11]);

Симулируйте 100 снимков принятого сигнала в массиве и сохраните теоретические и эмпирические ковариационные матрицы. Предположим, что один входящий сигнал инициируется из 30 ° азимута и 10 ° повышения. Второй входящий сигнал начинается от 50 ° азимута и 0 ° повышения. Сигналы имеют степень 1 Вт и являются некоррелированными.

ns = 100;
ang1 = [30; 10];
ang2 = [50; 0];
ang = [ang1, ang2];
rng default
[x,rt,r] = sensorsig(pos,ns,ang,ncov);

Посмотрите величины теоретической ковариации и выборочной ковариации.

abs(rt)
ans = 4×4

    2.1259    1.8181    1.9261    1.9754
    1.8181    2.1000    1.5263    1.9261
    1.9261    1.5263    2.1000    1.8181
    1.9754    1.9261    1.8181    2.0794

abs(r)
ans = 4×4

    2.2107    1.7961    2.0205    1.9813
    1.7961    1.9858    1.5163    1.8384
    2.0205    1.5163    2.1762    1.8072
    1.9813    1.8384    1.8072    2.0000

Симулируйте прием сигнала в ULA, где шум между различными датчиками коррелирует.

Создайте однородный линейный массив с 4 элементами, элементы которой разнесены на половину длины волны.

pos = 0.5 * (0:3);

Задайте шумовую ковариационную матрицу. Значение в (k,_j_) положении в ncov матрица является ковариацией между элементами k и j массива, перечисленными в массиве.

ncov = 0.1 * [1 0.1 0 0; 0.1 1 0.1 0; 0 0.1 1 0.1; 0 0 0.1 1];

Симулируйте 100 снимков принятого сигнала в массиве. Предположим, что один входящий сигнал инициируется из азимута 60 °.

ns = 100;
ang = 60;
[x,rt,r] = sensorsig(pos,ns,ang,ncov);

Просмотрите теоретические и выборочные ковариационные матрицы для принимаемого сигнала.

rt,r
rt = 4×4 complex

   1.1000 + 0.0000i  -0.9027 - 0.4086i   0.6661 + 0.7458i  -0.3033 - 0.9529i
  -0.9027 + 0.4086i   1.1000 + 0.0000i  -0.9027 - 0.4086i   0.6661 + 0.7458i
   0.6661 - 0.7458i  -0.9027 + 0.4086i   1.1000 + 0.0000i  -0.9027 - 0.4086i
  -0.3033 + 0.9529i   0.6661 - 0.7458i  -0.9027 + 0.4086i   1.1000 + 0.0000i

r = 4×4 complex

   1.1059 + 0.0000i  -0.8681 - 0.4116i   0.6550 + 0.7017i  -0.3151 - 0.9363i
  -0.8681 + 0.4116i   1.0037 + 0.0000i  -0.8458 - 0.3456i   0.6578 + 0.6750i
   0.6550 - 0.7017i  -0.8458 + 0.3456i   1.0260 + 0.0000i  -0.8775 - 0.3753i
  -0.3151 + 0.9363i   0.6578 - 0.6750i  -0.8775 + 0.3753i   1.0606 + 0.0000i

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

свернуть все

Положения элементов в массиве датчиков, заданные как вектор или матрица N-столбца. Значения в матрице указаны в единицах длины волны сигнала. Для примера, [0 1 2] описывает три элемента, которые разнесены на одну длину волны сигнала. N - количество элементов в массиве.

Размерности pos:

  • Для линейного массива вдоль оси y задайте координаты y элементов в векторе 1-by-N.

  • Для плоского массива в плоскости yz задайте координаты y и z элементов в столбцах матрицы 2-by-N.

  • Для массива произвольной формы задайте координаты x, y и z элементов в столбцах 3-by-N матрицы.

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

Количество снимков моделируемого сигнала, заданное как положительный целочисленный скаляр. Функция возвращает это количество выборок на элемент массива.

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

Направления входящих сигналов плоской волны, заданные в виде вектора M-столбца или матрицы в степенях. M - количество входящих сигналов.

Размерности ang:

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

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

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

Шумовые характеристики, заданные как неотрицательный скаляр, 1-by-N вектор положительных чисел или N-на-N положительно определенная матрица.

Размерности ncov:

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

  • Если ncov является вектором 1-by-N, каждый элемент представляет степень шума одного из элементов датчика в ваттах. Шум некоррелирован между датчиками.

  • Если ncov является N-на-N матрицей, она представляет ковариации матрицу для шума во всех элементах датчика.

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

Характеристики входящего сигнала, заданные как положительная скалярная величина, 1-by-M вектор положительных чисел или M-на-M положительная полуопределенная матрица.

Размерности scov:

  • Если scov является скаляром, он представляет степень всех входящих сигналов в ваттах. В этом случае все входящие сигналы являются некоррелированными и имеют один и тот же уровень степени.

  • Если scov является вектором 1-by-M, каждый элемент представляет степень одного из входящих сигналов в ваттах. В этом случае все входящие сигналы являются некоррелированными друг с другом.

  • Если scov является матрицей M-на-M, она представляет матрицу ковариации для всех входящих сигналов. Матрица описывает корреляцию среди входящих сигналов. В этом случае scov может быть реальным или комплексным.

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

Сужение элемента массива, заданное как скалярный или комплексно- N вектор-столбец. Размерное N является количеством элементов массива. Если taper является скаляром, все элементы массива используют одно и то же значение. Если taper является вектором, каждая запись задает конус, примененный к соответствующему элементу массива.

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

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

свернуть все

Принят сигнал в массиве, возвращен как комплексный ns-by-N матрица. Каждый столбец представляет принятый сигнал в соответствующем элементе массива. Каждая строка представляет моментальный снимок.

Теоретическая ковариационная матрица принимаемого сигнала, возвращенная как комплексная N-на-N матрица.

Выборочная ковариационная матрица принимаемого сигнала, возвращенная как комплексная N-на-N матрица. N - количество элементов массива. Функция выводит эту матрицу из x.

Примечание

Если вы задаете этот выходной аргумент, рассмотрите создание ns больше или равно N. В противном случае r имеет неполный ранг.

Подробнее о

свернуть все

Угол азимута, Угла возвышения

azimuth angle вектора является угол между осью x и ортогональной проекцией вектора на плоскость xy. Угол положителен в движении от оси x к оси y. Азимутальные углы лежат между -180 и 180 степенями. elevation angle является углом между вектором и его ортогональной проекцией на xy -плоск. Угол положителен при движении к положительной оси z от плоскости xy. По умолчанию направление boresight элемента или массива выровнено с положительной осью x -. Направление boresight является направлением основной лепестка элемента или массива.

Примечание

Угол возвышения иногда определяется в литературе как угол, который вектор делает с положительной осью z -. MATLAB® и Phased Array System Toolbox™ продукты не используют это определение.

Этот рисунок иллюстрирует угол азимута и угол возвышения для вектора, показанного в виде зеленой сплошной линии.

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

.

См. также

Введенный в R2012b