Используя Communications Toolbox™ можно реализовать исчезающие объекты использования каналов или блоки. Rayleigh и Rician, исчезающий каналы, являются полезными моделями явлений реального мира в радиосвязях. Эти явления включают многопутевые эффекты рассеивания, дисперсию времени и эффекты Доплера, которые являются результатом относительного движения между передатчиком и получателем. В этом разделе приведены краткий обзор исчезающих каналов и описывает, как реализовать их использующий тулбокс.
Этот рисунок изображает прямые и крупнейшие отраженные пути между стационарным радио-передатчиком и движущимся получателем. Теневые формы представляют отражатели, такие как создания.
Крупнейшие пути приводят к прибытию задержанных версий сигнала в получателе. Кроме того, радио-сигнал подвергается рассеиванию по локальной шкале для каждого крупнейшего пути. Такое локальное рассеивание обычно следует из отражений от объектов около мобильного телефона. Эти неразрешимые компоненты объединяются в получателе и вызывают явление, известное как многопутевое исчезновение. Из-за этого явления, каждый крупнейший путь ведет себя как дискретный исчезающий путь. Как правило, процесс исчезновения характеризуется Распределением Релея для не пути угла обзора и распределением Rician для пути угла обзора.
Относительное движение между передатчиком и получателем вызывает эффекты Доплера. Локальное рассеивание обычно прибывает из многих углов вокруг мобильного телефона. Этот сценарий вызывает область значений эффектов Доплера, известных как Доплеровский спектр. Максимальный эффект Доплера соответствует локальным компонентам рассеивания, направление которых точно выступает против траектории мобильного телефона.
Фильтр канала применяет усиления пути к входному сигналу, Signal in
. Усиления пути сконфигурированы на основе настроек, выбранных в исчезающем объекте канала или блоке.
Эти блоки и объекты включают вам к модели SISO или MIMO, исчезающей каналы.
Инструмент | SISO | MIMO |
---|---|---|
MATLAB® | ||
Simulink® |
Основополосная модель канала для многопутевых сценариев распространения, что вы реализуете объекты использования, включает:
N дискретные исчезающие пути. Каждый путь имеет свою собственную задержку и среднее усиление степени. Канал, для которого N = 1 называется плоским частотой исчезающим каналом. Канал, для которого N> 1 испытан как выборочный частотой исчезающий канал сигналом достаточно широкой пропускной способности.
Модель Rayleigh или Rician для каждого пути.
Моделирование пути к каналу по умолчанию с помощью спектра Джейкса Доплера, эффект Доплера имеющий, который может быть задан. Другие типы Доплеровских позволенных спектров (идентичный или отличающийся для всех путей) включают: плоский, ограниченный Jakes, асимметричный Jakes, Гауссов, bi-Gaussian, округленный, и звонок.
Если максимальный эффект Доплера установлен в 0 или не использован во время конструкции объекта канала, то объектные модели канал как статический. Для этой настройки исчезновение не развивается со временем, и Доплеровский заданный спектр не оказывает влияния на процесс исчезновения.
Некоторая дополнительная информация о типичных значениях для задержек и усилений находится в Выборе Realistic Channel Property Values.
Библиотека блоков Каналов включает MIMO и блоки исчезновения SISO, которые могут симулировать явления реального мира в мобильной связи. Эти явления включают многопутевые эффекты рассеивания, в дополнение к эффектам Доплера, которые являются результатом относительного движения между передатчиком и получателем.
Чтобы смоделировать канал, который включает и исчезновение и аддитивный белый Гауссов шум, используйте исчезающий блок канала, сопровождаемый блоком AWGN Channel.
MIMO Fading Channel и блоки SISO Fading Channel могут быть установлены в распределения замираний модели Rayleigh или Rician канала. На основе типа пути прохождения сигнала выберите распределение замираний, чтобы использовать.
Путь прохождения сигнала | Распределение замираний |
---|---|
Прямой путь угла обзора с передатчика на получатель | Rician |
Один или несколько крупнейших отраженных путей с передатчика на получатель | Rayleigh |
Можно использовать один экземпляр исчезающего блока канала, сконфигурированного для распределения Релеевского замирания, чтобы смоделировать несколько крупнейших отраженных путей одновременно.
Выбор соответствующих параметров блоков для вашей ситуации важен. Для получения дополнительной информации смотрите Realistic Channel Property Values Выбора и страницы с описанием блока MIMO Fading Channel и SISO Fading Channel.
Можно просмотреть характеристики исчезающего канала с помощью инструментов визуализации канала. Для получения дополнительной информации смотрите Визуализацию Канала.
Система связи, включающая исчезающий канал обычно, требует компонентов, которые компенсируют исчезающий ответ. Типичные подходы, чтобы компенсировать исчезновение включают:
Дифференциальная модуляция или эквалайзер с одним касанием помогают компенсировать плоский частотой исчезающий канал. Для получения информации о реализации дифференциальной модуляции смотрите страницу с описанием блока M-DPSK Modulator Baseband.
Эквалайзер с несколькими касаниями помогает компенсировать выборочный частотой исчезающий канал. Смотрите Эквализацию для получения дополнительной информации.
Линия связи с Адаптивным примером Эквализации иллюстрирует, почему компенсация исчезающего канала необходима.
Rayleigh и Rician многопутевые исчезающие средства моделирования канала в Communications Toolbox используют ограниченную полосой дискретную многопутевую модель канала раздела 9.1.3.5.2 в [1]. Эта реализация принимает, что профиль степени задержки и Доплеровский спектр канала отделимы [1]. Многопутевой исчезающий канал поэтому моделируется как линейный фильтр конечной импульсной характеристики (FIR). Пусть обозначьте набор выборок во входе к каналу. Затем выборки при выходе канала связаны с через:
где набор весов касания, данных:
В уравнениях:
входной период расчета к каналу.
, где , набор задержек пути. K является общим количеством путей в многопутевом исчезающем канале.
, где , набор усилений сложного контура многопутевого исчезающего канала. Эти усиления пути являются некоррелироваными друг с другом.
и выбраны так, чтобы мал, когда n меньше или больше, чем .
Два метода, отфильтрованный Гауссов шум и сумма синусоид, используются, чтобы сгенерировать набор усилений сложного контура, .
Каждый процесс усиления пути сгенерирован следующими шагами:
Фильтрованный гауссов шумовой метод
Комплексный некоррелированый (белый) Гауссов процесс с нулевым средним значением и модульным отклонением сгенерирован в дискретное время.
Комплексный Гауссов процесс отфильтрован Доплеровским фильтром с частотной характеристикой , где обозначает желаемый Доплеровский спектр мощности.
Отфильтрованный комплексный Гауссов процесс интерполирован так, чтобы его период расчета был сопоставим с периодом расчета входного сигнала. Комбинация линейной и многофазной интерполяции используется.
Метод суммы синусоид
Взаимно некоррелированые формы волны Релеевского замирания сгенерированы с помощью метода, описанного в [2], где i = 1 соответствует синфазному компоненту, и i = 2 соответствует квадратурному компоненту.
Где
Nk указывает, что количество синусоид раньше моделировало один путь.
дискретная Доплеровская частота и вычисляется для каждого компонента синусоиды в одном пути.
фаза n th компонент и i.i.d. случайная переменная, имеющая равномерное распределение на интервале .
t является временем процесса исчезновения.
При моделировании спектра Джейкса Доплера, дискретных Доплеровских частот, , с максимальным сдвигом f макс. дают
где
Чтобы усовершенствовать процесс исчезновения вовремя, начальный параметр времени, t init, введен. Исчезающие формы волны становятся
Когда t init = 0, процесс исчезновения запускается в начальный момент времени. Положительное значение t init совершенствует процесс исчезновения относительно начального момента времени при поддержании его непрерывности.
Канал, исчезающий выборки, сгенерирован с помощью алгоритма GMEDS1 [2] .
Вычислите комплексные коэффициенты
Комплексный процесс, следующий из любого метода, , масштабируется, чтобы получить правильное среднее усиление пути. В случае Рэлеевского канала процесс исчезновения получен как:
где
В случае канала Rician процесс исчезновения получен как:
где K-фактор Rician k th путь, эффект Доплера компонента угла обзора k th путь (в Гц), и начальная фаза компонента угла обзора k th путь (в рад).
Во входе к ограниченной полосой многопутевой модели канала переданные символы должны быть сверхдискретизированы фактором, по крайней мере, равняются фактору расширения пропускной способности, введенному импульсным формированием. Например, если sinc импульсное формирование используется, для которого пропускная способность сигнала импульсной формы равна уровню символа, затем фактор расширения пропускной способности равняется 1, и по крайней мере одна выборка на символ требуется во входе к каналу. Если фильтр повышенного косинуса (RC) с фактором, больше чем 1 используется, для которого пропускная способность сигнала импульсной формы равна дважды уровню символа, то фактор расширения пропускной способности равняется 2 и по крайней мере двум выборкам на символ, требуется во входе к каналу.
Характеристики модели фильтра канала
Модель канала реализует полосовой фильтр конечной импульсной характеристики (FIR) дробной задержки (FD) с длиной 16 коэффициентов и с ошибкой задержки, ограниченной 1%. Для каждого дискретного пути КИХ-проект выбран путем выбора оптимального набора коэффициентов из числа 50 дробных задержек (0.02, 0.04, …, 0.98) наборы кандидата коэффициентов.
Каждый дискретный путь является раундами к своей выбранной дробной задержке. Чтобы достигнуть пропускной способности групповой задержки чрезмерные 80% и пропускной способности величины чрезмерные 90%, алгоритм выбирает КИХ-содействующие значения для каждой дробной задержки при удовлетворении следующим критериям:
Пульсация групповой задержки ≤ 10%
Пульсация величины ≤ 2 дБ
Величина bandedge затухание = 3 дБ
Графики показывают пропускную способность, которая удовлетворяет критериям расчета для пульсации групповой задержки, пульсации величины и величины bandedge затухание.
Для получения дополнительной информации см. статью основанный на MATLAB Объектно-ориентированный подход для Многопутевой Исчезающей Симуляции Канала в Центральном MATLAB.
[1] Jeruchim, член конгресса, Балабан, P. и Shanmugan, K. S. симуляция систем связи, Секонд-Эдайшн, Нью-Йорк, академический Kluwer / пленум, 2000.
[2] Pätzold, Мэттиас, Cheng-Сянцзян Ван и Бьорн Олав Хогштанд. “Две Новых Суммы основанных на синусоидах Методов для Эффективной Генерации Нескольких Некоррелированых Форм волны Релеевского замирания”. Транзакции IEEE на Радиосвязях. Издание 8, Номер 6, 2009, стр 3122–3131.
Communications Toolbox моделирует исчезающий канал как линейный КИХ-фильтр. Фильтрация сигнала с помощью исчезающего канала включает эти шаги:
Создайте объект канала, который описывает канал, который вы хотите использовать. Объект канала является типом переменной MATLAB, которая содержит информацию о канале, таком как максимальный эффект Доплера.
Настройте свойства объекта канала, при необходимости, адаптировать его в соответствии с вашими потребностями. Например, можно изменить задержки пути или средние усиления пути.
Примените объект канала к своему использованию сигнала, вызвав объект.
В этом разделе описывается задать, смотреть, и управлять объектами канала. Темы:
Чтобы создать исчезающий объект канала, подходящий для вашей ситуации с моделированием, выберите один из этих Системных объектов.
Функция | Объект | Смоделированная ситуация |
---|---|---|
Объект канала с релеевским замиранием | Один или несколько крупнейших отраженных путей | |
Rician, исчезающий объект канала | Один прямой путь угла обзора, возможно объединенный с одним или несколькими крупнейшими отраженными путями |
Например, эта команда создает объект канала представление Канала с релеевским замиранием, который действует на сигнал, произведенный на уровне 100 000 Гц. Максимальный эффект Доплера канала составляет 130 Гц.
rayChan1 = comm.RayleighChannel('SampleRate',1e5,... 'MaximumDopplerShift',130); % Rayleigh fading channel object
Изучить, как вызвать rayChan1
исчезающий объект канала пропустить переданный сигнал через канал, смотрите Используя Исчезающие Каналы.
Можно также создать другой объект путем дублирования существующего объекта и затем настроить свойства нового объекта при необходимости. Чтобы скопировать объект всегда используют clone
функционируйте, такие как:
rayChan2 = clone(rayChan1); % Copy rayChan1 to create an independent rayChan2.
вместо rayChan2 = rayChan1
. clone
команда создает копию rayChan1
это независимо от rayChan1
. В отличие от этого, команда rayChan2 = rayChan1
создает rayChan2
как просто ссылка на rayChan1
, так, чтобы rayChan1
и rayChan2
всегда имейте неразличимое содержимое.
Объект канала имеет многочисленные свойства, которые записывают информацию о модели канала о состоянии канала, который уже отфильтровал сигнал, и об операции канала на будущем сигнале.
Можно просмотреть свойства этими способами:
Чтобы просмотреть все свойства объекта канала, введите имя объекта в Командном окне.
Можно просмотреть свойство объекта канала или присвоить значение переменной путем ввода имени объекта, сопровождаемого точкой (период), сопровождаемый под названием свойство.
Можно изменить перезаписываемые свойства объекта канала этими способами:
Чтобы изменить значение по умолчанию свойства объекта канала, введите требуемое значение в синтаксис создания объекта.
Чтобы изменить значение writeable свойства объекта канала, выпустите оператор присваивания, который использует запись через точку на объекте канала. А именно, запись через точку означает выражение, которое состоит из имени объекта, сопровождаемого точкой, сопровождаемой под названием свойство.
Отобразите рэлеевские свойства объектов канала
Создайте Рэлеевский объект канала. Отобразите объект показать свойства, инициализированные по умолчанию, и те задали при создании объекта. Ввод rayChan
отображения все свойства объекта канала. Некоторые значения свойств были присвоены, когда объект был создан, в то время как другие свойства имеют значения по умолчанию. Для получения дополнительной информации об определенных свойствах канала, смотрите страницу с описанием для comm.RayleighChannel
объект.
rayChan = comm.RayleighChannel('SampleRate',1e5,'MaximumDopplerShift',130); rayChan % View all the properties
rayChan = comm.RayleighChannel with properties: SampleRate: 100000 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true MaximumDopplerShift: 130 DopplerSpectrum: [1x1 struct] Show all properties
g = rayChan.AveragePathGains % Retrieve the AveragePathGains property of rayChan
g = 0
Настройте свойства объектов канала Rician
Rician, исчезающий, объект канала имеет дополнительное свойство, которое не появляется для объекта Канала с релеевским замиранием, а именно, скалярного KFactor
свойство. Для получения дополнительной информации о свойствах канала Rician, смотрите страницу с описанием для comm.RicianChannel
объект.
Измените свойства объектов канала Rician
Создайте объект канала Rician. Настройка по умолчанию для Visualization
свойством является 'Off'
. Изменение настройки по умолчанию к 'Impulse response'
генерирует график импульсной характеристики выходного сигнала, когда объект называется. Выход отображает подмножество всех свойств объекта канала. Выберите all properties
видеть полный набор свойств для ricChan
.
ricChan= comm.RicianChannel; % Create object ricChan.Visualization = 'Impulse response' % Enables the impulse response channel visualization
ricChan = comm.RicianChannel with properties: SampleRate: 1 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true KFactor: 3 DirectPathDopplerShift: 0 DirectPathInitialPhase: 0 MaximumDopplerShift: 1.0000e-03 DopplerSpectrum: [1x1 struct] Show all properties
Некоторые свойства объекта канала связаны друг с другом таким образом, что, когда значение одного свойства изменяется, значение другого свойства должно измениться некоторым соответствующим способом сохранить объект канала сопоставимым. Например, если вы изменяете длину вектора PathDelays
, затем значение AveragePathGains
должен измениться так, чтобы его длина вектора равнялась длине вектора нового значения PathDelays
. Это вызвано тем, что длина каждого из этих двух векторов равняется количеству дискретных путей канала. Для получения дополнительной информации о соединенных свойствах и примере, смотрите comm.RayleighChannel
или comm.RicianChannel
.
Доплеровский спектр объекта канала задан через его DopplerSpectrum
свойство. Значение этого свойства должно быть также:
Доплеровская структура спектра. В этом случае тот же Доплеровский спектр применяется к каждому пути объекта канала.
Массив ячеек Доплеровских структур спектра той же длины как PathDelays
векторное свойство. В этом случае Доплеровский спектр каждого пути дан соответствующей Доплеровской структурой спектра в векторе.
Когда длина вектора PathDelays
свойство увеличено, длина DopplerSpectrum
автоматически увеличен, чтобы совпадать с длиной PathDelays
, путем добавления структур спектра Джейкса Доплера.
Если длина PathDelays
векторное свойство уменьшено, длина DopplerSpectrum
автоматически уменьшен, чтобы совпадать с длиной PathDelays
, путем удаления последних Доплеровских структур спектра.
Доплеровская структура спектра содержит свойства, используемые, чтобы охарактеризовать Доплеровский спектр, но максимальный эффект Доплера является свойством объекта канала. В этом разделе описывается создать и управлять Доплеровскими структурами спектра, и как присвоить их DopplerSpectrum
свойство объектов канала.
Чтобы создать Доплеровские структуры спектра, используйте doppler
функция. Единственная цель doppler
функция должна создать Доплеровские структуры спектра, используемые, чтобы задать значение DopplerSpectrum
свойство объектов канала. Выберите из следующего:
doppler('Jakes')
doppler('Flat')
doppler('Rounded', ...)
doppler('Bell', ...)
doppler('Asymmetric Jakes', ...)
doppler('Restricted Jakes', ...)
doppler('Gaussian', ...)
doppler('BiGaussian', ...)
Например, Гауссов спектр с нормированным (максимальным эффектом Доплера канала) стандартное отклонение 0,1, может быть создан как:
dopp1 = doppler('Gaussian',0.1);
При создании Доплеровской структуры спектра рассмотрите следующие зависимости:
Если вы присваиваете одну Доплеровскую структуру спектра DopplerSpectrum
, все пути имеют заданный Доплеровский спектр того же самого.
Если FadingTechnique
свойством является 'Sum of sinusoids'
, DopplerSpectrum
должен быть doppler('Jakes')
;
Если вы присваиваете массив ячейки строки различных Доплеровских структур спектра к DopplerSpectrum
, каждому пути задала Доплеровский спектр соответствующая структура в массиве ячеек. В этом случае, длина DopplerSpectrum
должно быть равно длине PathDelays
.
Чтобы сгенерировать код С, задайте DopplerSpectrum
к одной Доплеровской структуре спектра.
Создайте Доплеровскую структуру спектра путем определения типа Доплеровского спектра как 'Rounded'
, затем измените настройки полиномиального типа
Округленная Доплеровская структура спектра со свойствами по умолчанию создана и отображена, и третий элемент Polynomial
поле изменяется.
doppRound = doppler('Rounded')
doppRound = struct with fields:
SpectrumType: 'Rounded'
Polynomial: [1 -1.7200 0.7850]
Настройте третий коэффициент полинома.
doppRound.Polynomial(3) = 0.825
doppRound = struct with fields:
SpectrumType: 'Rounded'
Polynomial: [1 -1.7200 0.8250]
Следует иметь в виду, что возможно изменить Доплеровскую структуру спектра к недопустимой настройке. Валидация Доплеровских настроек структуры спектра выполняется, когда структура используется исчезающим объектом канала. doppRound
структура спектра, заданная выше, допустима.
ricianCh = comm.RicianChannel('DopplerSpectrum',doppRound)
ricianCh = comm.RicianChannel with properties: SampleRate: 1 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true KFactor: 3 DirectPathDopplerShift: 0 DirectPathInitialPhase: 0 MaximumDopplerShift: 1.0000e-03 DopplerSpectrum: [1x1 struct] Show all properties
DopplerSpectrum
свойство объекта канала может быть изменено путем присвоения ему Доплеровской структуры спектра или вектора Доплеровских структур спектра.
Этот пример иллюстрирует, как изменить значение по умолчанию спектр Джейкса Доплера созданного объекта канала Рейли к плоскому Доплеровскому спектру.
Создайте Рэлеевский объект канала
Установите частоту дискретизации на 9 600 Гц и максимальный эффект Доплера к 100 Гц.
rayChan = comm.RayleighChannel('SampleRate',9600, 'MaximumDopplerShift',100)
rayChan = comm.RayleighChannel with properties: SampleRate: 9600 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true MaximumDopplerShift: 100 DopplerSpectrum: [1x1 struct] Show all properties
rayChan.DopplerSpectrum
ans = struct with fields:
SpectrumType: 'Jakes'
Измените Доплеровский спектр
Создайте плоскую Доплеровскую структуру спектра и присвойте ее в rayChan
объект.
doppFlat = doppler('Flat')
doppFlat = struct with fields:
SpectrumType: 'Flat'
rayChan.DopplerSpectrum = doppFlat
rayChan = comm.RayleighChannel with properties: SampleRate: 9600 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true MaximumDopplerShift: 100 DopplerSpectrum: [1x1 struct] Show all properties
rayChan.DopplerSpectrum
ans = struct with fields:
SpectrumType: 'Flat'
В этом примере показано, как изменить значение по умолчанию спектр Джейкса Доплера созданного Rician образовывают канал объект к Гауссову Доплеровскому спектру с нормированным стандартным отклонением 0,3, и впоследствии отобразить DopplerSpectrum
свойство и изменение значение нормированного стандартного отклонения к 1,1.
Создайте объект канала Rician
Установите частоту дискретизации на 9 600 Гц, максимальный эффект Доплера к 100 Гц и K-фактор к 2.
ricChan = comm.RicianChannel('SampleRate',9600, 'MaximumDopplerShift',100, 'KFactor',2)
ricChan = comm.RicianChannel with properties: SampleRate: 9600 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true KFactor: 2 DirectPathDopplerShift: 0 DirectPathInitialPhase: 0 MaximumDopplerShift: 100 DopplerSpectrum: [1x1 struct] Show all properties
ricChan.DopplerSpectrum
ans = struct with fields:
SpectrumType: 'Jakes'
Измените Доплеровский спектр
Создайте Гауссову Доплеровскую структуру спектра с нормированным стандартным отклонением 0,3 и присвойте его в ricChan
объект.
doppGaus = doppler('Gaussian',0.3)
doppGaus = struct with fields:
SpectrumType: 'Gaussian'
NormalizedStandardDeviation: 0.3000
ricChan.DopplerSpectrum = doppGaus
ricChan = comm.RicianChannel with properties: SampleRate: 9600 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true KFactor: 2 DirectPathDopplerShift: 0 DirectPathInitialPhase: 0 MaximumDopplerShift: 100 DopplerSpectrum: [1x1 struct] Show all properties
ricChan.DopplerSpectrum
ans = struct with fields:
SpectrumType: 'Gaussian'
NormalizedStandardDeviation: 0.3000
ricChan.DopplerSpectrum.NormalizedStandardDeviation = 1.1; ricChan.DopplerSpectrum
ans = struct with fields:
SpectrumType: 'Gaussian'
NormalizedStandardDeviation: 1.1000
Этот пример иллюстрирует, как изменить значение по умолчанию спектр Джейкса Доплера созданного объекта канала Рейли с тремя путями к массиву ячеек различных Доплеровских спектров, и затем изменить свойства Доплеровского спектра третьего пути.
Создайте Рэлеевский объект канала
Установите частоту дискретизации на 9 600 Гц, максимальный эффект Доплера к 100 Гц, и задайте задержки пути 0
, 1e-4
, и 2.1e-4 seconds
.
rayChan = comm.RayleighChannel('SampleRate',9600, 'MaximumDopplerShift',100, 'PathDelays',[0 1e-4 2.1e-4])
rayChan = comm.RayleighChannel with properties: SampleRate: 9600 PathDelays: [0 1.0000e-04 2.1000e-04] AveragePathGains: 0 NormalizePathGains: true MaximumDopplerShift: 100 DopplerSpectrum: [1x1 struct] Show all properties
rayChan.DopplerSpectrum
ans = struct with fields:
SpectrumType: 'Jakes'
Измените Доплеровский спектр
Задайте DopplerSpectrum
свойство как массив ячеек с независимым Доплеровским спектром для каждого пути.
rayChan.DopplerSpectrum = {doppler('Flat') doppler('Flat') doppler('Rounded')}
rayChan = comm.RayleighChannel with properties: SampleRate: 9600 PathDelays: [0 1.0000e-04 2.1000e-04] AveragePathGains: 0 NormalizePathGains: true MaximumDopplerShift: 100 DopplerSpectrum: {[1x1 struct] [1x1 struct] [1x1 struct]} Show all properties
rayChan.DopplerSpectrum{:}
ans = struct with fields:
SpectrumType: 'Flat'
ans = struct with fields:
SpectrumType: 'Flat'
ans = struct with fields:
SpectrumType: 'Rounded'
Polynomial: [1 -1.7200 0.7850]
Измените Polynomial
свойство для третьего пути.
rayChan.DopplerSpectrum{3}.Polynomial = [1 -1.21 0.7]
rayChan = comm.RayleighChannel with properties: SampleRate: 9600 PathDelays: [0 1.0000e-04 2.1000e-04] AveragePathGains: 0 NormalizePathGains: true MaximumDopplerShift: 100 DopplerSpectrum: {[1x1 struct] [1x1 struct] [1x1 struct]} Show all properties
rayChan.DopplerSpectrum{:}
ans = struct with fields:
SpectrumType: 'Flat'
ans = struct with fields:
SpectrumType: 'Flat'
ans = struct with fields:
SpectrumType: 'Rounded'
Polynomial: [1 -1.2100 0.7000]
Прежде чем вы отфильтруете сигнал с помощью объекта канала, убедитесь, что свойства канала имеют подходящие значения для ситуации, которую вы хотите смоделировать. Этот раздел предлагает некоторые инструкции, чтобы помочь вам выбрать реалистические значения, которые подходят для ваших потребностей моделирования. Темы
Синтаксисы для просмотра и изменения значений свойств объектов канала описаны в Определении Исчезающего Канала.
Вот некоторые советы для выбора значений свойств, которые описывают реалистические каналы:
Задержки пути
Условно, первая задержка обычно обнуляется. Первая задержка соответствует первому прибывающему пути.
Для внутренних сред задержки пути после того, как первые обычно между 1e-9 секундами и 1e-7 секундами.
Для наружных сред задержки пути после того, как первые обычно между 1e-7 секундами и 1e-5 секундами. Большие задержки этой области значений могут соответствовать, например, к области, окруженной горами.
Способность сигнала разрешить дискретные пути связана со своей пропускной способностью. Если различие между самыми большими и самыми маленькими задержками пути меньше приблизительно 1% периода символа, то сигнал испытывает канал, как будто это имело только один дискретный путь.
Средние усиления пути
Средние усиления пути в объекте канала указывают на среднее усиление степени каждого исчезающего пути. На практике среднее значение усиления пути является большим отрицательным значением дБ. Однако модели компьютера обычно используют средние усиления пути в области значений [-20, 0] дБ.
Значения дБ в векторе средних усилений пути часто затухают примерно линейно как функция задержки, но определенный профиль задержки зависит от среды распространения.
Чтобы гарантировать, что ожидаемая общая степень объединенных усилений пути равняется 1, можно нормировать усиления пути через NormalizePathGains
свойство объекта канала.
Максимальные эффекты Доплера
Некоторые приложения беспроводной связи, такие как стандартный GSM (Глобальная Система для Мобильной связи) системы, предпочитают задавать эффекты Доплера в терминах скорости мобильного телефона. Если мобильные перемещения на скорости v (m/s), то максимальный эффект Доплера вычисляется можно следующим образом, где f является несущей частотой передачи в Герц и c, являются скоростью света (3e8 м/с).
Применение этой формулы в несущей частоте передачи 900 МГц. Сигнал от движущегося автомобиля на автостраде может испытать максимальный эффект Доплера приблизительно 80 Гц. Сигнал от движущейся пешеходной силы испытывает максимальный эффект Доплера приблизительно 4 Гц.
Максимальный эффект Доплера 0 соответствует статическому каналу, который прибывает из распределения Rayleigh или Rician.
K-фактор для Rician исчезающие каналы
K-фактор Rician задает отношение зеркальной-к-рассеянному степени для прямого пути угла обзора. Отношение выражается линейно, не в дБ.
Для исчезновения Rician K-фактор обычно находится в области значений [1, 10].
K-фактор 0 соответствует Релеевскому замиранию.
Доплеровские параметры спектра
Смотрите doppler
страница с описанием для соответствующих Доплеровских структур спектра для описаний параметров и их значения.
Советы для конфигурирования канала возражают, чтобы настроить процесс фильтрации:
Если ваши данные разделены в серию векторов (что вы обрабатываете в цикле, например), можно вызвать объект канала многократно (в каждой итерации в цикле). Информация состояния канала обновляется и сохранена после каждого вызова. Выход канала не важен тому, как данные разделены (длина вектора).
Если хотят, чтобы канал выход был повторяем, выбрал опцию seed для RandomStream
свойство объекта канала. Чтобы повторить выход, вызовите reset
возразите функции, чтобы сбросить и внутренние фильтры и внутренний генератор случайных чисел.
Если вы хотите смоделировать с перерывами передаваемые данные, установите FadingTechnique
свойство к 'Sum of sinusoids'
и InitialTimeSource
свойство к 'Input port'
для объекта канала. При вызове объекта задайте время начала каждого вектора данных / система координат, которая будет обработана каналом через вход.
Если вы хотите нормировать процесс исчезновения так, чтобы ожидаемое значение общей степени усилений пути равнялось 1 (канал не вносит дополнительное усиление степени или потерю), установите NormalizePathGains
свойство канала возражает против true
.
После того, как вы создали объект канала как описано в Определении Исчезающего Канала, можно вызвать объект передать сигнал через канал. Обеспечьте сигнал как входной параметр к объекту канала. В конце операции фильтрации объект канала сохраняет свое состояние так, чтобы можно было узнать итоговые усиления пути или общее количество выборок, которые канал обработал путем вызова функции объекта info с объектом как входной параметр.
Для примера, который иллюстрирует базовый синтаксис и задержание состояния, смотрите Степень Увядшего Сигнала.
Чтобы визуализировать характеристики канала, установите Visualization
свойство к 'Impulse response'
, 'Frequency response'
, или 'Doppler spectrum'
. Для получения дополнительной информации смотрите Визуализацию Канала.
Этот пример показывает вам, как визуализировать импульсную характеристику канала.
Создайте объект канала
При создании объекта канала используйте пары "имя-значение", чтобы установить Visualization
свойство
к 'Impulse response'
.
rayChan = comm.RayleighChannel('SampleRate',100000,'MaximumDopplerShift',130,... 'PathDelays',[0 1.5e-5 3.2e-5],'AveragePathGains',[0, -3, -3],... 'Visualization','Impulse response');
Сгенерируйте немного потока и создайте объект модулятора. Модулируйте поток битов и передайте
модулируемые DBPSK сигнализируют через канал путем вызова объекта канала.
tx = randi([0 1],500,1); dbspkMod = comm.DBPSKModulator; dpskSig = dbspkMod(tx); y = rayChan(dpskSig);
Импульсная характеристика построена, когда объект называется.
Эти примеры использование, исчезающее каналы:
Этот пример строит степень увядшего сигнала по сравнению с демонстрационным номером. Это иллюстрирует синтаксис создания и вызова comm.RayleighChannel
исчезающий объект канала и задержание состояния объекта канала.
rayChan = comm.RayleighChannel('SampleRate',10000,'MaximumDopplerShift',100); sig = j*ones(2000,1); % Signal out = rayChan(sig); % Pass signal through channel. rayChan % Display all properties of the channel object.
rayChan = comm.RayleighChannel with properties: SampleRate: 10000 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true MaximumDopplerShift: 100 DopplerSpectrum: [1x1 struct] Show all properties
Постройте степень увядшего сигнала, по сравнению с демонстрационным номером.
plot(20*log10(abs(out)))
Этот пример создает плоский частотой объект Канала с релеевским замиранием и вызывает его, чтобы обработать сигнал DBPSK, состоящий из одного вектора. Частота ошибок по битам вычисляется для различных значений отношения сигнал-шум. Исчезающий фильтр канала применяется перед AWGN. Это - рекомендуемая последовательность, чтобы использовать, когда вы комбинируете исчезновение с AWGN.
Создайте Канал с релеевским замиранием, модулятор и объекты демодулятора
chan = comm.RayleighChannel('SampleRate',1e4,'MaximumDopplerShift',100);
Создайте модулятор DBPSK и объекты демодулятора с набором порядка модуляции к 2
. Сгенерируйте модулируемые данные DBPSK и передайте их через канал.
M = 2; % DBPSK modulation order tx = randi([0 M-1],50000,1); % Generate a random bit stream mod = comm.DBPSKModulator; demod = comm.DBPSKDemodulator; dpskSig = mod(tx); fadedSig = chan(dpskSig); % Apply the channel effects
Создайте объект канала AWGN и объект калькулятора коэффициента ошибок.
awgnChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)'); errorCalc = comm.ErrorRate;
Вычислите коэффициент ошибок для различных значений ОСШ.
SNR = 0:2:20; % Range of SNR values, in dB. numSNR = length(SNR); berVec = zeros(3, numSNR); % Preallocate a vector for BER results for n = 1:numSNR awgnChan.SNR = SNR(n); rxSig = awgnChan(fadedSig); % Add Gaussian noise rx = demod(rxSig); % Demodulate reset(errorCalc) berVec(:,n) = errorCalc(tx,rx); % Compute error rate. end BER = berVec(1,:);
Вычислите теоретические результаты производительности для сравнения.
BERtheory = berfading(SNR,'dpsk',M,1);
Постройте результаты BER.
semilogy(SNR,BERtheory,'b-',SNR,BER,'r*'); legend('Theoretical BER','Empirical BER'); xlabel('SNR (dB)'); ylabel('BER'); title('Binary DPSK over Rayleigh Fading Channel');
Значение свойства ChannelFilterDelay объекта канала является количеством выборок, которыми выход канала изолирует вход. Если вы сравниваете наборы входных и выходных данных непосредственно, необходимо принять задержку во внимание при помощи соответствующего усечения или дополнения операций.
Пример иллюстрирует способ составлять задержку прежде, чем вычислить немного коэффициента ошибок.
Создайте модулятор DBPSK и объекты демодулятора с набором порядка модуляции к 2
. Сгенерируйте модулируемые данные DBPSK и передайте их через канал.
bitRate = 50000;
M = 2; % DQPSK modulation order
mod = comm.DBPSKModulator;
demod = comm.DBPSKDemodulator;
Создайте объект Канала с релеевским замиранием.
rayChan = comm.RayleighChannel('SampleRate',bitRate,'MaximumDopplerShift',4,... 'PathDelays',[0 0.5/bitRate],'AveragePathGains',[0 -10]); chInfo = info(rayChan); delay = chInfo.ChannelFilterDelay;
Сгенерируйте случайные данные о потоке битов. Модулируйте данные, передайте их через исчезающий канал и демодулируйте их.
tx = randi([0 M-1],50000,1); dpskSig = mod(tx); fadedSig = rayChan(dpskSig); rx = demod(fadedSig);
Вычислите частоту ошибок по битам, приняв задержку во внимание.
errorCalc = comm.ErrorRate('ReceiveDelay', delay);
berVec = step(errorCalc,tx,rx);
ber = berVec(1)
ber = 0.0147
num = berVec(2)
num = 737
Этот пример пропускает входные данные через Канал с релеевским замиранием в for
цикл. Это использует небольшие наборы данных от последовательных итераций, чтобы создать анимируемый эффект. Канал с релеевским замиранием имеет два дискретных крупнейших пути. Для получения информации о пропущении данных через канал многократно при поддержании непрерывности от одного вызова до следующего, смотрите, Конфигурируют Объекты Канала На основе Потребностей Симуляции.
Настройте параметры. Задайте немного уровня 50e3
Гц и количество итерации цикла 125
. Создайте модулятор QPSK и объекты Канала с релеевским замиранием.
bitRate = 50000; % Data rate is 50 kb/s numTrials = 125; % Number of iterations of loop M = 4; % QPSK modulation order qpskMod = comm.QPSKModulator; rayChan = comm.RayleighChannel('SampleRate',bitRate,'MaximumDopplerShift',4,'PathDelays',[0 2e-5],'AveragePathGains',[0 -9]);
Инициализируйте график рассеивания.
scatterPlot = comm.ConstellationDiagram;
Примените канал в цикле, обеспечив непрерывность. Отобразите на графике только текущие данные в каждой итерации.
for n = 1:numTrials tx = randi([0 M-1],500,1); % Generate random bit stream pskSig = qpskMod(tx); % PSK modulate signal fadedSig = rayChan(pskSig); % Apply channel effects % Plot the new data from this iteration. update(scatterPlot,fadedSig); end
Как правило, усиление пути в исчезающем канале изменяется незначительно в течение 1/(100fd)
секунды, где fd
максимальный эффект Доплера. Поскольку этот период соответствует очень большому количеству битов во многих современных технологиях беспроводной передачи данных, оценивание производительности в статистически значительной области значений исчезновения канала требует симуляции предельно большого объема данных. Этот пример иллюстрирует квазистатический подход моделирования канала к сбору statictically значительного количества ошибок. Квазистатическое моделирование канала обеспечивает более послушный подход, который можно реализовать использование этих шагов:
Сгенерируйте случайную реализацию канала с помощью максимального эффекта Доплера 0.
Процесс некоторое большое количество битов.
Вычислите ошибочную статистику.
Повторите эти шаги много раз, чтобы произвести распределение показателя производительности.
Создайте модулятор и системные объекты демодулятора с порядком модуляции 4
.
M = 4; dpskMod = comm.DPSKModulator('ModulationOrder', M); dpskDemod = comm.DPSKDemodulator('ModulationOrder', M); numBits = 10000; % Each trial uses 10000 bits. numTrials = 20; % Number of BER computations
Примечание: В действительности, numTrials
было бы большое количество, чтобы получить точную оценку вероятностей отключения электричества или пакетного коэффициента ошибок. Используйте 20
здесь только, чтобы сделать пример запущенным более быстро.
Создайте объект канала Rician и обнулите максимальный эффект Доплера.
ricianChan = comm.RicianChannel('KFactor',3,'MaximumDopplerShift',0);
В for
цикл, сгенерируйте случайный поток битов, DPSK модулируют сигнал, пропускают модулируемый сигнал через исчезновение Rician и каналы AWGN, и демодулируют увядший сигнал.
nErrors = zeros(1,numTrials); for n = 1:numTrials tx = randi([0 M-1],numBits,1); % Generate random bit stream dpskSig = dpskMod(tx); % DPSK modulate signal fadedSig = ricianChan(dpskSig); % Apply channel effects rxSig = awgn(fadedSig,15,'measured'); % Add Gaussian noise. rx = dpskDemod(rxSig); % Demodulate.
Вычислите количество ошибок символа. Проигнорируйте первую выборку из-за условия начальной буквы DPSK.
nErrors(n) = symerr(tx(2:end),rx(2:end))
end
nErrors = 1×20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
nErrors = 1×20
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
В то время как пример запускается, Командное окно отображает растущий список ошибочных количеств символа в векторном nErrors
. Это также отображает пакетный коэффициент ошибок в конце. Демонстрационный выход ниже показов окончательное значение nErrors
и не использует промежуточные значения. Ваши результаты могут варьироваться из-за случайности по примеру.
per = mean(nErrors > 0) % Proportion of packets that had errors
per = 0.0500
Как пример, чтобы показать, как квазистатический подход моделирования канала может сохранить расчет, рассмотрите беспроводную локальную сеть (LAN), в которой несущая частота составляет 2,4 ГГц, мобильная скорость составляет 1 м/с, и битрейт составляет 10 Мбит/с. Следующее выражение показывает, что канал изменяет незначительно более чем 12 500 битов:
Традиционный подход Монте-Карло для вычисления коэффициента ошибок этой системы повлек бы за собой симуляцию тысячи времен, в общей сложности десятки миллионов битов. В отличие от этого, квазистатический подход моделирования канала симулировал бы несколько пакетов в каждом приблизительно 100 местах, чтобы достигнуть пространственного распределения коэффициентов ошибок. От этого распределения можно было определить, например, насколько надежный линия связи для случайного местоположения во внутреннем пробеле. Если бы каждая симуляция содержит 5 000 битов, 100 симуляций обработали бы полмиллиона битов всего. Это - существенно меньше битов по сравнению с традиционным подходом Монте-Карло.
Эти модели включают использование исчезающих каналов:
Канал с релеевским замиранием, который иллюстрирует эффект канала на QPSK модулируемый сигнал