comm.ChannelFilter

Отфильтруйте сигнал с помощью многопутевых усилений в заданных задержках пути

Описание

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

Отфильтровать сигнал с помощью многопутевых усилений:

  1. Создайте comm.ChannelFilter объект и набор его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.

Создание

Описание

пример

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

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 ).

Типы данных: логический

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

Синтаксис

Описание

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

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

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

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

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

Усиление пути в виде массива. Входом G должен быть N s Np Nt Nr или 1 Np Nt Nr массивом, где N r является количеством, получают антенны, и N p является количеством путей, i.e., длина свойства PathDelays.

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

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

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

Канал выходной параметр, возвращенный как N s-by-Nr матрица.

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

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

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

release(obj)

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

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

Примеры

свернуть все

В распределенной системе 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, который обеспечивает доступ к полученным толпой данным о карте во всем мире. Данные лицензируются под Открытыми Данными палата общин Открытая Лицензия Базы данных (ODbL), https://opendatacommons.org/licenses/odbl/.

Создайте объект фильтра канала с LTE, Расширенным Автомобильный модель (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);

Алгоритмы

Фильтр канала реализует полосовой фильтр конечной импульсной характеристики (FIR) дробной задержки (FD) с длиной 16 коэффициентов для каждого кандидата дробная задержка в 0, 0.02, 0.04, …, 0.98.

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

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

  • Пульсация величины ≤ 2 дБ

  • Величина bandedge затухание = 3 дБ

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

Для получения дополнительной информации см. статью основанный на MATLAB Объектно-ориентированный подход для Многопутевой Исчезающей Симуляции Канала в MATLAB® Central.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

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