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

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

Используя 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, Исчезающий Канал и SISO, Исчезающий блоки Канала, может быть установлен в распределения замираний модели 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, исчезающий объект канала пропустить переданный сигнал через канал, смотрите Используя Исчезающие Каналы.

Копия и объекты копии

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

rayChan2 = copy(rayChan1); % Copy rayChan1 to create an independent rayChan2.

вместо rayChan2 = rayChan1. Команда copy создает копию 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 к одной Доплеровской структуре спектра.

Копируйте Доплеровские объекты

Как в случае объектов канала, Доплеровские объекты могут быть дублированы с помощью функции copy. Команда:

dopp2 = copy(dopp1);

создает Доплеровский объект dopp2 с теми же свойствами как тот из dopp1. dopp1 и dopp2 являются затем отдельными экземплярами Доплеровского объекта, в том изменении любого не будет влиять на другой. Используя dopp1 = dopp2 вместо этого заставит и dopp1 и dopp2 ссылаться на тот же экземпляр Доплеровского объекта, в том изменении любого вызовет ту же модификацию к другому.

Просмотрите и измените Доплеровские свойства объектов

Синтаксис для просмотра и изменения Доплеровских свойств объектов эквивалентен для случая объектов канала (см. Отображение и Изменение Свойств объектов).

Создайте, измените и просмотрите объект doppler

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

Свойство SpectrumType, которое характерно для всех Доплеровских объектов, только для чтения. Это автоматически задано при объектной конструкции и не может быть изменено. Если вы хотите использовать различный Доплеровский тип спектра, необходимо создать новый Доплеровский объект желаемого типа.

Используйте Доплеровские объекты в объектах канала

Свойство 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

  • На основе этой формулы с точки зрения скорости мобильного телефона сигнал от движущегося автомобиля на автостраде может испытать максимальный эффект Доплера приблизительно 80 Гц, в то время как сигнал от движущейся пешеходной силы испытывает максимальный эффект Доплера приблизительно 4 Гц. Эти фигуры принимают несущую частоту передачи 900 МГц.

  • Максимальный эффект Доплера 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.

Используйте исчезающие каналы

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

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

Чтобы визуализировать характеристики канала устанавливает свойство 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 симуляций обработали бы полмиллиона битов всего. Это - существенно меньше битов по сравнению с традиционным подходом Монте-Карло.

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

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