comm.RayleighChannel

Пропустите входной сигнал через многопутевой Канал с релеевским замиранием

Описание

comm.RayleighChannel Система object™ пропускает входной сигнал через многопутевой Канал с релеевским замиранием. Для получения дополнительной информации об исчезающей обработке модели смотрите Методологию для Симуляции Многопутевых Исчезающих Каналов.

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

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

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

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

Создание

Описание

rayleighchan = comm.RayleighChannel создает выборочный частотой или плоский частотой многопутевой Системный объект Канала с релеевским замиранием. Этот объект пропускает действительный или комплексный входной сигнал через многопутевой канал, чтобы получить поврежденный каналом сигнал.

пример

rayleighchan = comm.RayleighChannel(Name,Value) свойства наборов с помощью одного или нескольких аргументов пары "имя-значение". Заключите каждое имя свойства в кавычки. Например, коммуникация. RayleighChannel ('SampleRate',2) устанавливает частоту дискретизации входного сигнала на 2.

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

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

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

Дискретная задержка пути в секундах в виде числового скаляра или числового вектора-строки.

  • Когда PathDelays скаляр, канал является плоской частотой.

  • Когда PathDelays вектор, канал является выборочной частотой.

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

Средние усиления дискретных путей в децибелах в виде числового скаляра или числового вектора-строки. AveragePathGains должен быть одного размера с PathDelays свойство.

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

Нормируйте средние усиления пути к 0 дБ в виде логического 1 TRUE) или 0 ложь).

  • Когда NormalizePathGains true, процессы исчезновения нормированы так, чтобы общая степень усилений пути, усредняемых в зависимости от времени, составила 0 дБ.

  • Когда NormalizePathGains false, общая степень усилений пути не нормирована.

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

Максимальный эффект Доплера для всех путей к каналу в виде неотрицательного скаляра. Модули находятся в герц.

Максимальный предел эффекта Доплера применяется к каждому пути к каналу. Когда вы устанавливаете это свойство на 0, канал остается статическим для целого входа. Можно использовать reset возразите функции, чтобы сгенерировать новую реализацию канала. MaximumDopplerShift значение свойства должно быть меньшим, чем SampleRate/10/fc для каждого пути. f c представляет фактор частоты среза пути. Для большинства Доплеровских типов спектра значение f c равняется 1. Для Гауссовых и biGaussian Доплеровских типов спектра f c зависит от Доплеровских полей структуры спектра. Для получения дополнительной информации о том, как f c задан, смотрите Фактор Частоты среза.

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

Доплеровский спектр формирует для всех путей к каналу в виде Доплеровской структуры спектра или 1 NP массивом ячеек Доплеровских структур спектра. Этими Доплеровскими структурами спектра должны быть выходные параметры формы, возвращенной в doppler функция. N P является количеством дискретных путей к задержке, то есть, длины PathDelays свойство.

  • Когда DopplerSpectrum задан одной Доплеровской структурой спектра, все пути имеют заданный Доплеровский спектр того же самого.

  • Когда DopplerSpectrum задан массивом ячеек Доплеровских структур спектра, каждому пути задала Доплеровский спектр соответствующая структура в массиве ячеек.

Опции для типа спектра заданы specType введите к doppler функция. Если вы устанавливаете FadingTechnique свойство к 'Sum of sinusoids', необходимо установить DopplerSpectrum к doppler('Jakes').

Зависимости

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

Типы данных: struct | cell

Модель канала исчезающий метод в виде 'Filtered Gaussian noise' или 'Sum of sinusoids'.

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

Количество синусоид раньше моделировало процесс исчезновения в виде положительного целого числа.

Зависимости

Чтобы включить это свойство, установите FadingTechnique свойство к 'Sum of sinusoids'.

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

Источник, чтобы управлять временем начала процесса исчезновения в виде 'Property' или 'Input port'.

  • Когда InitialTimeSource установлен в 'Property', используйте InitialTime свойство установить начальное смещение времени.

  • Когда InitialTimeSource установлен в 'Input port', задайте время начала процесса исчезновения при помощи itime введите к Системному объекту. Входное значение может измениться в последовательных вызовах Системного объекта.

Зависимости

Чтобы включить это свойство, установите FadingTechnique свойство к 'Sum of sinusoids'.

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

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

Зависимости

Чтобы включить это свойство, установите FadingTechnique свойство к 'Sum of sinusoids' и InitialTimeSource свойство к 'Property'.

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

Источник потока случайных чисел в виде 'Global stream' или 'mt19937ar with seed'.

  • 'Global stream' — Текущий глобальный поток случайных чисел используется в нормально распределенной генерации случайных чисел. В этом случае, reset возразите, что функция сбрасывает фильтры канала только.

  • 'mt19937ar with seed' — mt19937ar алгоритм используется в нормально распределенной генерации случайных чисел. В этом случае, reset возразите, что функция сбрасывает фильтры канала и повторно инициализирует поток случайных чисел к значению Seed свойство.

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

Начальный seed mt19937ar потокового алгоритма генератора случайных чисел в виде неотрицательного целого числа. Когда reset объектная функция вызвана, mt19937ar поток случайных чисел повторно инициализируется к Seed значение свойства.

Зависимости

Чтобы включить это свойство, установите RandomStream свойство к 'mt19937ar with seed'.

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

Опция к выходу path получает в виде 0 ложь) или 1 TRUE). Установите это свойство на 1 TRUE) выводить усиления пути к каналу базового процесса исчезновения.

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

Визуализация канала в виде 'Off', 'Impulse response', 'Frequency response', 'Impulse and frequency responses', или 'Doppler spectrum'. Для получения дополнительной информации смотрите Визуализацию Канала.

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

Процент выборок, чтобы отобразиться в виде '25%', '10%', '50%', или '100%'. Отображение меньшего количества выборок улучшается (уменьшает) частоту обновления отображения за счет уменьшения визуализируемой точности.

Зависимости

Чтобы включить это свойство, установите Visualization свойство к 'Impulse response', 'Frequency response', или 'Impulse and frequency responses'.

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

Путь для Доплера отображается в виде положительного целого числа. Используйте это свойство выбрать дискретный путь, используемый в построении Доплеровского графика спектра. Заданный путь должен быть элементом {1, 2..., N P}. В этом наборе N P является количеством дискретных путей к задержке, то есть, длины PathDelays значение свойства.

Зависимости

Чтобы включить это свойство, установите Visualization свойство к 'Doppler spectrum'.

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

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

Описание

y = rayleighchan(x) входной сигнал фильтров x через многопутевой Канал с релеевским замиранием и возвращает выходной сигнал в y.

[y,pathgains] = rayleighchan(x) возвращает усиления пути к каналу базового многопутевого процесса Релеевского замирания в pathgains. Чтобы включить этот синтаксис устанавливает PathGainsOutputPort набор свойств к 1 TRUE).

___ = rayleighchan(x,itime) данные о передачах через многопутевой Канал с релеевским замиранием, начинающийся в начальное время, заданы itime. Чтобы включить этот синтаксис, установите FadingTechnique свойство к 'Sum of sinusoids' и InitialTimeSource свойство к 'Input port'.

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

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

Входной сигнал в виде S-1 N числовой вектор, где N S является количеством выборок.

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

Начальное время в секундах в виде неотрицательного скаляра. itime введите должен быть больше времени окончания последней системы координат. Когда itime не кратное 1/SampleRate, это окружено к самой близкой демонстрационной позиции.

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

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

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

Выходной сигнал, возвращенный как S-1 N числовой вектор комплексных чисел с той же точностью данных как входной сигнал x. N S является количеством выборок.

Усиления пути, возвращенные как массив S-by-NP N. N S является количеством выборок. N P является количеством дискретных путей к задержке, то есть, длины PathDelays значение свойства. pathgains содержит комплексные числа с той же точностью как входной сигнал x.

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

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

release(obj)

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

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

Примеры

свернуть все

В этом примере показано, как произвести тот же многопутевой ответ Канала с релеевским замиранием при помощи двух различных методов для генерации случайных чисел. Многопутевая Система Канала с релеевским замиранием object™ включает два метода для генерации случайных чисел. Можно использовать текущий глобальный поток или mt19937ar алгоритм с заданным seed. Путем взаимодействия с глобальным потоком Системный объект может произвести те же выходные параметры из этих двух методов.

Создайте Системный объект модулятора PSK, чтобы модулировать случайным образом сгенерированные данные.

pskModulator = comm.PSKModulator;
channelInput = pskModulator(randi([0 pskModulator.ModulationOrder-1],1024,1));

Создайте многопутевой Системный объект Канала с релеевским замиранием, задав метод генерации случайных чисел как my19937ar алгоритм и seed случайных чисел как 22.

rayleighchan = comm.RayleighChannel(...
    'SampleRate',10e3, ...
    'PathDelays',[0 1.5e-4], ...
    'AveragePathGains',[2 3], ...
    'NormalizePathGains',true, ...
    'MaximumDopplerShift',30, ...
    'DopplerSpectrum',{doppler('Gaussian',0.6),doppler('Flat')}, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',22, ...
    'PathGainsOutputPort',true);

Отфильтруйте модулируемые данные при помощи многопутевого Системного объекта Канала с релеевским замиранием.

[chanOut1,pathGains1] = rayleighchan(channelInput);

Установите Системный объект использовать глобальный поток в генерации случайных чисел.

release(rayleighchan);
rayleighchan.RandomStream = 'Global stream';

Установите глобальный поток иметь тот же seed, который был задан при создании многопутевого Системного объекта Канала с релеевским замиранием.

rng(22)

Отфильтруйте модулируемые данные при помощи многопутевого Системного объекта Канала с релеевским замиранием снова.

[chanOut2,pathGains2] = rayleighchan(channelInput);

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

isequal(chanOut1,chanOut2)
ans = logical
   1

isequal(pathGains1,pathGains2)
ans = logical
   1

В этом примере показано, как создать выборочный частотой многопутевой Системный объект Канала с релеевским замиранием и отобразить его импульсные и частотные характеристики.

Установите частоту дискретизации на 3,84 МГц. Задайте задержки пути и усиления при помощи настройки B-канала пешехода ITU. Установите максимальный эффект Доплера на 50 Гц.

fs = 3.84e6; % Hz
pathDelays = [0 200 800 1200 2300 3700]*1e-9; % sec
avgPathGains = [0 -0.9 -4.9 -8 -7.8 -23.9]; % dB
fD = 50; % Hz

Создайте многопутевой Системный объект Канала с релеевским замиранием при помощи ранее заданных свойств и визуализировать импульсную характеристику и графики частотных характеристик.

rayleighchan = comm.RayleighChannel('SampleRate',fs, ...
    'PathDelays',pathDelays, ...
    'AveragePathGains',avgPathGains, ...
    'MaximumDopplerShift',fD, ...
    'Visualization','Impulse and frequency responses');

Сгенерируйте случайные двоичные данные и передайте его через многопутевой Канал с релеевским замиранием. График импульсной характеристики позволяет вам идентифицировать отдельные пути и их соответствующие коэффициенты фильтра. График частотной характеристики показывает выборочную частотой природу B-канала пешехода ITU.

x = randi([0 1],1000,1);
y = rayleighchan(x);

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

Установите свойства канала.

fs = 1000; % Sample rate (Hz)
pathDelays = [0 2.5e-3]; % Path delays (s)
pathPower = [0 -6]; % Path power (dB)
fD = 5; % Maximum Doppler shift (Hz)
ns = 1000; % Number of samples
nsdel = 100; % Number of samples for delayed paths

Задайте полное время симуляции и в три раза сегменты, для которых должны быть переданы данные. В этом случае канал симулирован в течение 1 с с 1 000 Гц, производящими уровень. Одна последовательность текущих данных с 1000 выборками передается во время 0. Три пакета с 100 выборочными данными время от времени передаются 0,1 с, 0,4 с и 0,7 с, соответственно.

to0 = 0.0;
to1 = 0.1;
to2 = 0.4;
to3 = 0.7;
t0 = (to0:ns-1)/fs; % Transmission 0
t1 = to1+(0:nsdel-1)/fs; % Transmission 1
t2 = to2+(0:nsdel-1)/fs; % Transmission 2
t3 = to3+(0:nsdel-1)/fs; % Transmission 3

Сгенерируйте случайные двоичные данные, соответствующие ранее заданным временным интервалам.

d0 = randi([0 1],ns,1);
d1 = randi([0 1],nsdel,1);
d2 = randi([0 1],nsdel,1);
d3 = randi([0 1],nsdel,1);

Создайте плоский частотой многопутевой Системный объект Релеевского замирания, задав сумму синусоид, исчезающую метод. Таким образом, это заканчивается, может быть повторен, задать значение seed. Используйте InitialTime по умолчанию установка свойства так, чтобы исчезающий канал был симулирован со времени 0. Включите усилениям пути выход.

rayleighchan1 = comm.RayleighChannel('SampleRate',fs, ...
    'MaximumDopplerShift',5, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',17, ...
    'FadingTechnique','Sum of sinusoids', ...
    'PathGainsOutputPort',true);

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

rayleighchan2 = clone(rayleighchan1);
rayleighchan2.InitialTimeSource = 'Input port';

Передайте случайные двоичные данные через первый многопутевой Системный объект Канала с релеевским замиранием, rayleighchan1. Данные передаются за все 1 000 раз выборки. В данном примере только усиление сложного контура необходимо.

[~,pg0] = rayleighchan1(d0);

Передайте случайные данные через второй многопутевой Системный объект Канала с релеевским замиранием, rayleighchan2, где начальные смещения времени обеспечиваются как входные параметры.

[~,pg1] = rayleighchan2(d1,to1);
[~,pg2] = rayleighchan2(d2,to2);
[~,pg3] = rayleighchan2(d3,to3);

Сравните количество выборок, обработанных двумя каналами при помощи info объектная функция. rayleighchan1 объект обработал 1 000 выборок, в то время как rayleighchan2 возразите только обработанный 300 выборок.

G = info(rayleighchan1);
H = info(rayleighchan2);
[G.NumSamplesProcessed H.NumSamplesProcessed]
ans = 1×2

        1000         300

Преобразуйте усиления пути в децибелы.

pathGain0 = 20*log10(abs(pg0));
pathGain1 = 20*log10(abs(pg1));
pathGain2 = 20*log10(abs(pg2));
pathGain3 = 20*log10(abs(pg3));

Постройте усиления пути для непрерывных и прерывистых случаев. Усиления для этих трех сегментов совпадают с усилением для непрерывного случая. Выравнивание двух подсветок, что метод суммы синусоид подходит для симуляции packetized данных как характеристики канала, обеспечено, даже когда данные не передаются.

plot(t0,pathGain0,'r--')
hold on
plot(t1,pathGain1,'b')
plot(t2,pathGain2,'b')
plot(t3,pathGain3,'b')
grid
xlabel('Time (sec)')
ylabel('Path Gain (dB)')
legend('Continuous','Discontinuous','location','nw')
title('Continous and Discontinuous Transmission Path Gains')

Пример показывает, как использовать ChannelFilterCoefficients свойство возвращено info объектная функция comm.RayleighChannel Системный объект, чтобы воспроизвести многопутевой Канал с релеевским замиранием выход.

Создайте многопутевой Системный объект Канала с релеевским замиранием, задав два пути и задав данные, чтобы пройти через канал.

rayleighchan = comm.RayleighChannel('SampleRate',1000,'PathDelays',[0 1.5e-3], ...
    'AveragePathGains',[0 -3],'PathGainsOutputPort',true)
rayleighchan = 
  comm.RayleighChannel with properties:

             SampleRate: 1000
             PathDelays: [0 0.0015]
       AveragePathGains: [0 -3]
     NormalizePathGains: true
    MaximumDopplerShift: 1.0000e-03
        DopplerSpectrum: [1x1 struct]

  Show all properties

data = randi([0 1],600,1);

Передайте данные через канал. Присвойте ChannelFilterCoefficients значение свойства к переменной coeff.

[chanout1,pg] = rayleighchan(data);
chaninfo = info(rayleighchan)
chaninfo = struct with fields:
           ChannelFilterDelay: 6
    ChannelFilterCoefficients: [2x16 double]
          NumSamplesProcessed: 600

coeff = chaninfo.ChannelFilterCoefficients;

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

Np = length(rayleighchan.PathDelays);
fracdelaydata = zeros(size(data,1),Np);
for ii = 1:Np
    fracdelaydata(:,ii) = filter(coeff(ii,:),1,data);
end

Примените усиления пути и суммируйте результаты для всех путей.

chanout2 = sum(pg .* fracdelaydata,2);

Сравните выход многопутевого Системного объекта Канала с релеевским замиранием к выходу, воспроизведенному с помощью усилений пути и ChannelFilterCoefficients свойство многопутевого Системного объекта Канала с релеевским замиранием.

isequal(chanout1,chanout2)
ans = logical
   1

Больше о

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

Ссылки

[1] Oestges, Клод и Бруно Клерккс. Радиосвязи MIMO: От Реального Распространения до Пространственно-временного Проекта Кода. 1-й редактор Бостон, MA: Elsevier, 2007.

[2] Correia, Луис М. и европейское Сотрудничество в области Научно-технического Исследования (Организация), редакторы Мобильные Широкополосные Мультимедийные Сети: Методы, Модели и Инструменты для 4G. 1-й редактор Амстердам  ; Бостон: Нажатие Elsevier/Academic, 2006.

[3] Kermoal, J.P., Л. Шумахер, К.И. Педерсен, П. Модженсен и Ф. Фредериксен. “Стохастическая Модель Канала Радио MIMO с Экспериментальной Валидацией”. Журнал IEEE на Выбранных областях в Коммуникациях 20, № 6 (август 2002): 1211–26. https://doi.org/10.1109/JSAC.2002.801223.

[4] Jeruchim, Мишель К., Филип Балабан и К. Сэм Шэнмугэн. Симуляция Систем связи. Второй выпуск. Бостон, MA: Спрингер УС, 2000.

[5] Patzold, M., Cheng-Сянцзян Ван и Б. Хогстэд. “Две Новых Суммы основанных на синусоидах Методов для Эффективной Генерации Нескольких Некоррелированых Форм волны Релеевского замирания”. Транзакции IEEE на Радиосвязях 8, № 6 (июнь 2009): 3122–31. https://doi.org/10.1109/TWC.2009.080769.

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

Смотрите также

Объекты

Функции

Блоки

Введенный в R2013b

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