exponenta event banner

коммуникация. ChannelFilter

Фильтрация сигнала с использованием коэффициентов усиления многолучевого распространения при определенных задержках тракта

Описание

Используйте comm.ChannelFilter Система object™ фильтровать сигнал с использованием коэффициентов усиления многолучевого распространения при определенных задержках тракта.

Для фильтрации сигнала с использованием коэффициентов усиления многолучевого распространения:

  1. Создать comm.ChannelFilter и задайте его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

chanFilt = comm.ChannelFilter создает объект фильтра многолучевого канала System для фильтрации входного сигнала с усилением тракта при указанных задержках тракта

chanFilt = comm.ChannelFilter(Name,Value) задает свойства, используя одну или несколько пар имя-значение. Например, 'SampleRate',1e6 устанавливает частоту выборки равной 1 МГц. Заключите каждое имя свойства в кавычки.

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Частота дискретизации входного сигнала, заданная как действительный положительный скаляр.

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

Задержки дискретных путей в секундах, заданные как действительный скаляр или вектор.

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

Источник задержки канального фильтра, указанный как 'Auto' или 'Custom'.

  • Набор FilterDelaySource кому 'Auto' для указания задержки канального фильтра в качестве минимально возможного значения.

  • Набор FilterDelaySource кому 'Custom' для указания задержки канального фильтра в качестве пользовательского значения. Пользовательское значение не может быть меньше минимально возможного значения.

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

Задержка канального фильтра в выборках, заданная как действительный, неотрицательный, целочисленный скаляр.

Зависимости

Чтобы включить это свойство, установите значение FilterDelaySource свойство для 'Custom'. Указанное значение не должно быть меньше автоматически определяемой задержки канального фильтра при установке FilterDelaySource кому 'Auto'.

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

Нормализовать выходные сигналы по количеству приемных антенн, указанных как 'true' (1) или 'false' (0).

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

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

Синтаксис

Описание

y = chanFilt(x,g) входной сигнал фильтров x, через многолучевой канал с усилением тракта g, в местоположениях задержки пути, указанных свойством StartDelays.

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

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

Входной сигнал, заданный как матрица. Аргумент x должна быть матрицей Ns-by-Nt, где Ns - количество выборок, а Nt - количество передающих антенн.

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

Усиление пути, указанное как массив. Входной сигнал G должен быть массивом Ns-by-Np-by-Nt-by-Nr или 1-by-Np-by-Nt-by-Nr, где Nr - количество приемных антенн, а Np - количество трактов, то есть длина свойства StartDelays.

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

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

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

Выход канала, возвращаемый в виде матрицы Ns-by-Nr.

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

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

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

release(obj)

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

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

Примеры

свернуть все

В распределенной системе MIMO исследуют пространственное разнесение путем передачи одного и того же сигнала от двух географически разделенных передатчиков и объединения принятых сигналов в одном приемнике. Используйте трассировку лучей для анализа путей распространения и коэффициентов усиления от каждого передатчика к приемнику.

Выполнить трассировку лучей

Импорт данных по зданиям из Чикаго в siteviewer из файла OpenStreetMap (osm). Для получения дополнительной информации о файле osm см. [1]. Разместите два передатчика и один приемник в городе.

sv = siteviewer('buildings','Chicago.osm'); 
rx = rxsite('Name','Receiver', ...
    'Latitude',41.878543,'Longitude',-87.630599, ...
    'AntennaHeight',1.5);
show(rx);
tx1 = txsite('Name','Transmitter #1', ...
    'Latitude',41.878996,'Longitude',-87.629361); 
show(tx1);
tx2 = txsite('Name','Transmitter #2', ...
    'Latitude',41.880142,'Longitude',-87.630850);
show(tx2);

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

rays  = raytrace([tx1, tx2],rx);
plot([rays{:}]);

Трассировка лучей находит семь путей лучей к приемнику. Имеется четыре пути лучей от первого участка передатчика и три пути лучей от второго участка передатчика. На карте видно, что первый передатчик ближе к приемнику, чем второй передатчик. Лучи, связанные с первым передатчиком, имеют меньшие задержки распространения, чем второй передатчик.

pd1 = [rays{1}.PropagationDelay]
pd1 = 1×4
10-6 ×

    0.3830    0.3839    0.5476    0.6482

pd2 = [rays{2}.PropagationDelay]
pd2 = 1×3
10-6 ×

    0.5967    0.5973    0.6059

Создайте один канальный фильтр для каждого узла передатчика. Укажите частоту дискретизации 30 МГц и используйте минимальную задержку среди семи лучей в качестве отсчета времени 0.

chanFilt1 = comm.ChannelFilter('SampleRate',30e6, ...
    'PathDelays',pd1-min([pd1, pd2]))
chanFilt1 = 
  comm.ChannelFilter with properties:

                 SampleRate: 30000000
                 PathDelays: [0 8.7600e-10 1.6459e-07 2.6516e-07]
          FilterDelaySource: 'Auto'
    NormalizeChannelOutputs: true

chanFilt2 = comm.ChannelFilter('SampleRate',30e6, ...
    'PathDelays',pd2-min([pd1, pd2]))
chanFilt2 = 
  comm.ChannelFilter with properties:

                 SampleRate: 30000000
                 PathDelays: [2.1372e-07 2.1434e-07 2.2294e-07]
          FilterDelaySource: 'Auto'
    NormalizeChannelOutputs: true

Канальные фильтры дают различные значения задержки фильтра. Используйте info объектная функция comm.ChannelFilter для отображения задержки фильтра двух канальных фильтров.

fd1 = chanFilt1.info.ChannelFilterDelay
fd1 = 7
fd2 = chanFilt2.info.ChannelFilterDelay
fd2 = 1

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

set(chanFilt1,"FilterDelaySource",'Custom', ...
    "FilterDelay",max(fd1,fd2));
set(chanFilt2, ...
    "FilterDelaySource",'Custom', ...
    "FilterDelay",max(fd1,fd2));

Применение объединения сигналов приема

Настройте системные параметры, назначив только одну изотропную антенну на каждом объекте.

Nt = 1;    % Number of transmit elements
Ns = 1000; % Samples per frame
M  = 64;   % Modulation order 

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

pg1  = 10.^(-[rays{1}.PathLoss]/20) .* exp(1i*[rays{1}.PhaseShift]);
pg2  = 10.^(-[rays{2}.PathLoss]/20) .* exp(1i*[rays{2}.PhaseShift]);

Формирование кадра случайных 64-QAM сигналов. Выполните канальную фильтрацию для каждого узла передатчика и объединения сигналов приема. Объединенный 2x1 распределенный канал MIMO имеет задержку фильтра не более (fd1,fd2).

x  = qammod(randi([0, M-1],Ns,Nt),M);
y = chanFilt1(x,pg1) + chanFilt2(x,pg2);

Приложение

[1] OSM-файл загружается из https://www.openstreetmap.org, что обеспечивает доступ к данным карты, полученным от толпы, по всему миру. Данные лицензированы по лицензии Open Data Commons Open Database License (ODbL), https://opendatacommons.org/licenses/odbl/.

Создайте объект канального фильтра с профилем задержки модели LTE Extended Vehicular A (EVA).

chanFilt = comm.ChannelFilter( ...
    'SampleRate', 30.72e6, ...
    'PathDelays', [0 30 150 310 370 710 1090 1730 2510]*1e-9);

Настройка параметров системы. Имеется две передающие и приемные антенны.

[Nt, Nr] = deal(2);
Ns = 30720;
Np = length(chanFilt.PathDelays);
M  = 256;

Генерировать случайный 256-QAM сигнал и сложные коэффициенты усиления тракта.

x = qammod(randi([0, M-1], Ns, Nt), M);
g = complex(rand(Ns, Np, Nt, Nr), rand(Ns, Np, Nt, Nr));

Фильтрация сигнала с усилением тракта для профиля задержки EVA.

y = chanFilt(x, g);

Алгоритмы

Канальный фильтр реализует полосовой фильтр с дробной задержкой (FD) с конечной импульсной характеристикой (FIR) с длиной 16 коэффициентов для каждой возможной дробной задержки при 0, 0,02, 0,04,..., 0,98.

Каждый дискретный тракт округляется до его ближайшей возможной дробной задержки, так что предел ошибки задержки составляет 1% времени выборки. Для достижения полосы пропускания групповой задержки, превышающей 80%, и полосы пропускания величины, превышающей 90%, алгоритм выбирает оптимальные значения коэффициента КИХ для каждой дробной задержки, удовлетворяя при этом следующим критериям:

  • Пульсация задержки группы ≤ 10%

  • Величина пульсации ≤ 2 дБ

  • Затухание полосы частот = 3 дБ

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

Дополнительные сведения см. в статье A Объектно-ориентированный подход к моделированию многоканального канала замирания в MATLAB ® Central.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2020b