Исчезающие каналы

Обзор исчезающих каналов

Используя Communications Toolbox™ можно реализовать исчезающие объекты использования каналов или блоки. Rayleigh и Rician, исчезающий каналы, являются полезными моделями явлений реального мира в радиосвязях. Эти явления включают многопутевые эффекты рассеивания, дисперсию времени и эффекты Доплера, которые являются результатом относительного движения между передатчиком и получателем. В этом разделе приведены краткий обзор исчезающих каналов и описывает, как реализовать их использующий тулбокс.

Этот рисунок изображает прямые и крупнейшие отраженные пути между стационарным радио-передатчиком и движущимся получателем. Теневые формы представляют отражатели, такие как создания.

Крупнейшие пути приводят к прибытию задержанных версий сигнала в получателе. Кроме того, радио-сигнал подвергается рассеиванию по локальной шкале для каждого крупнейшего пути. Такое локальное рассеивание обычно следует из отражений от объектов около мобильного телефона. Эти неразрешимые компоненты объединяются в получателе и вызывают явление, известное как многопутевое исчезновение. Из-за этого явления, каждый крупнейший путь ведет себя как дискретный исчезающий путь. Как правило, процесс исчезновения характеризуется Распределением Релея для не пути угла обзора и распределением Rician для пути угла обзора.

Относительное движение между передатчиком и получателем вызывает эффекты Доплера. Локальное рассеивание обычно прибывает из многих углов вокруг мобильного телефона. Этот сценарий вызывает область значений эффектов Доплера, известных как Доплеровский спектр. Максимальный эффект Доплера соответствует локальным компонентам рассеивания, направление которых точно выступает против траектории мобильного телефона.

Фильтр канала применяет усиления пути к входному сигналу, Signal in. Усиления пути сконфигурированы на основе настроек, выбранных в исчезающем объекте канала или блоке.

Эти блоки и объекты включают вам к модели SISO или MIMO, исчезающей каналы.

Реализуйте исчезающий канал Используя объект

Основополосная модель канала для многопутевых сценариев распространения, что вы реализуете объекты использования, включает:

  • 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). Пусть {si} обозначьте набор выборок во входе к каналу. Затем выборки {yi} при выходе канала связаны с {si} через:

yi=n=N1N2singn

где {gn} набор весов касания, данных:

gn=k=1Kaksinc[τkTsn]N1nN2

В уравнениях:

  • Ts входной период расчета к каналу.

  • {τk}, где 1kK, набор задержек пути. K является общим количеством путей в многопутевом исчезающем канале.

  • {ak}, где 1kK, набор усилений сложного контура многопутевого исчезающего канала. Эти усиления пути являются некоррелироваными друг с другом.

  • N1 и N2 выбраны так, чтобы |gn| мал, когда n меньше N1 или больше, чем N2.

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

Каждый процесс усиления пути ak сгенерирован следующими шагами:

Фильтрованный гауссов шумовой метод

  1. Комплексный некоррелированый (белый) Гауссов процесс с нулевым средним значением и модульным отклонением сгенерирован в дискретное время.

  2. Комплексный Гауссов процесс отфильтрован Доплеровским фильтром с частотной характеристикой H(f)=S(f), где S(f) обозначает желаемый Доплеровский спектр мощности.

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

Метод суммы синусоид

  1. Взаимно некоррелированые формы волны Релеевского замирания сгенерированы с помощью метода, описанного в [2], где i = 1 соответствует синфазному компоненту, и i = 2 соответствует квадратурному компоненту.

    zk(t)=μk(1)(t)+jμk(2)(t),k=1,2,,Kμk(i)(t)=2Nkn=1Nkпотому что(2πfk,n(i)t+θk,n(i)),i=1,2

    Где

    • Nk указывает, что количество синусоид раньше моделировало один путь.

    • fk,n(i) дискретная Доплеровская частота и вычисляется для каждого компонента синусоиды в одном пути.

    • θk,n(i) фаза n th компонент μk(i) и i.i.d. случайная переменная, имеющая равномерное распределение на интервале (0,2π].

    • t является временем процесса исчезновения.

    При моделировании спектра Джейкса Доплера, дискретных Доплеровских частот, fk,n(i), с максимальным сдвигом f макс. дают

    fk,n(i)=fmax потому что(αk,n(i))=fmax потому что[π2Nk(n12)+αk,0(i)]

    где

    αk,0(i)(1)i1π4NkkK+2,i=1, 2    и   k=1,2,,K

  2. Чтобы усовершенствовать процесс исчезновения вовремя, начальный параметр времени, t init, введен. Исчезающие формы волны становятся

    μk(i)(t)=2Nkn=1Nkпотому что(2πfk,n(i)(t+tinit)+θk,n(i)),i=1,2

    Когда t init = 0, процесс исчезновения запускается в начальный момент времени. Положительное значение t init совершенствует процесс исчезновения относительно начального момента времени при поддержании его непрерывности.

  3. Канал, исчезающий выборки, сгенерирован с помощью алгоритма GMEDS1 [2] .

Вычислите комплексные коэффициенты

Комплексный процесс, следующий из любого метода, zk, масштабируется, чтобы получить правильное среднее усиление пути. В случае Рэлеевского канала процесс исчезновения получен как:

ak=Ωkzk

где

Ωk=E[|ak|2]

В случае канала Rician процесс исчезновения получен как:

ak=Ωk[zkKr,k+1+Kr,kKr,k+1ej(2πfd,LOS,kt+θLOS,k)]

где Kr,k K-фактор Rician k th путь, fd,LOS,k эффект Доплера компонента угла обзора k th путь (в Гц), и θLOS,k начальная фаза компонента угла обзора 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 моделирует исчезающий канал как линейный КИХ-фильтр. Фильтрация сигнала с помощью исчезающего канала включает эти шаги:

  1. Создайте объект канала, который описывает канал, который вы хотите использовать. Объект канала является типом переменной MATLAB, которая содержит информацию о канале, таком как максимальный эффект Доплера.

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

  3. Примените объект канала к своему использованию сигнала, вызвав объект.

В этом разделе описывается задать, смотреть, и управлять объектами канала. Темы:

Создание объектов канала

Чтобы создать исчезающий объект канала, подходящий для вашей ситуации с моделированием, выберите один из этих Системных объектов.

ФункцияОбъектСмоделированная ситуация

comm.RayleighChannel

Объект канала с релеевским замираниемОдин или несколько крупнейших отраженных путей

comm.RicianChannel

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 с гауссовым Доплеровским спектром

В этом примере показано, как изменить значение по умолчанию спектр Джейкса Доплера созданного 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]

Сконфигурируйте объекты канала

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

Синтаксисы для просмотра и изменения значений свойств объектов канала описаны в Определении Исчезающего Канала.

Выберите Realistic Channel Property Values

Вот некоторые советы для выбора значений свойств, которые описывают реалистические каналы:

Задержки пути

  • Условно, первая задержка обычно обнуляется. Первая задержка соответствует первому прибывающему пути.

  • Для внутренних сред задержки пути после того, как первые обычно между 1e-9 секундами и 1e-7 секундами.

  • Для наружных сред задержки пути после того, как первые обычно между 1e-7 секундами и 1e-5 секундами. Большие задержки этой области значений могут соответствовать, например, к области, окруженной горами.

  • Способность сигнала разрешить дискретные пути связана со своей пропускной способностью. Если различие между самыми большими и самыми маленькими задержками пути меньше приблизительно 1% периода символа, то сигнал испытывает канал, как будто это имело только один дискретный путь.

Средние усиления пути

  • Средние усиления пути в объекте канала указывают на среднее усиление степени каждого исчезающего пути. На практике среднее значение усиления пути является большим отрицательным значением дБ. Однако модели компьютера обычно используют средние усиления пути в области значений [-20, 0] дБ.

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

  • Чтобы гарантировать, что ожидаемая общая степень объединенных усилений пути равняется 1, можно нормировать усиления пути через NormalizePathGains свойство объекта канала.

Максимальные эффекты Доплера

  • Некоторые приложения беспроводной связи, такие как стандартный GSM (Глобальная Система для Мобильной связи) системы, предпочитают задавать эффекты Доплера в терминах скорости мобильного телефона. Если мобильные перемещения на скорости v (m/s), то максимальный эффект Доплера вычисляется можно следующим образом, где f является несущей частотой передачи в Герц и c, являются скоростью света (3e8 м/с).

    fd=vfc

  • Применение этой формулы в несущей частоте передачи 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, эмпирический по сравнению с теоретической производительностью в исчезающих условиях

Этот пример создает плоский частотой объект Канала с релеевским замиранием и вызывает его, чтобы обработать сигнал 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

Этот пример пропускает входные данные через Канал с релеевским замиранием в 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

Rician, исчезающий канал

Квазистатическое моделирование канала

Как правило, усиление пути в исчезающем канале изменяется незначительно в течение 1/(100fd) секунды, где fd максимальный эффект Доплера. Поскольку этот период соответствует очень большому количеству битов во многих современных технологиях беспроводной передачи данных, оценивание производительности в статистически значительной области значений исчезновения канала требует симуляции предельно большого объема данных. Этот пример иллюстрирует квазистатический подход моделирования канала к сбору statictically значительного количества ошибок. Квазистатическое моделирование канала обеспечивает более послушный подход, который можно реализовать использование этих шагов:

  1. Сгенерируйте случайную реализацию канала с помощью максимального эффекта Доплера 0.

  2. Процесс некоторое большое количество битов.

  3. Вычислите ошибочную статистику.

  4. Повторите эти шаги много раз, чтобы произвести распределение показателя производительности.

Создайте модулятор и системные объекты демодулятора с порядком модуляции 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 битов:

(1100fd s)( 10 Мбит/с)=(c100vf s)( 10 Мбит/с)=3×108m/s100( 1 м/с)(2.4 GHz)( 10 Мбит/с)=12,500 b

Традиционный подход Монте-Карло для вычисления коэффициента ошибок этой системы повлек бы за собой симуляцию тысячи времен, в общей сложности десятки миллионов битов. В отличие от этого, квазистатический подход моделирования канала симулировал бы несколько пакетов в каждом приблизительно 100 местах, чтобы достигнуть пространственного распределения коэффициентов ошибок. От этого распределения можно было определить, например, насколько надежный линия связи для случайного местоположения во внутреннем пробеле. Если бы каждая симуляция содержит 5 000 битов, 100 симуляций обработали бы полмиллиона битов всего. Это - существенно меньше битов по сравнению с традиционным подходом Монте-Карло.

Дополнительные примеры Используя исчезающие каналы

Эти модели включают использование исчезающих каналов: