Пропустите входной сигнал через многопутевой Канал с релеевским замиранием
comm.RayleighChannel
Система object™ пропускает входной сигнал через многопутевой Канал с релеевским замиранием. Для получения дополнительной информации об исчезающей обработке модели смотрите раздел Methodology for Simulating Multipath Fading Channels.
Пропускать входной сигнал через многопутевой Канал с релеевским замиранием:
Создайте comm.RayleighChannel
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?
создает выборочный частотой или плоский частотой многопутевой Системный объект Канала с релеевским замиранием. Этот объект пропускает действительный или комплексный входной сигнал через многопутевой канал, чтобы получить поврежденный каналом сигнал.rayleighchan
= comm.RayleighChannel
свойства наборов с помощью одних или нескольких аргументов name-value. Например, rayleighchan
= comm.RayleighChannel(Name,Value)'SampleRate',2
устанавливает частоту дискретизации входного сигнала на 2.
Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.
SampleRate
— Частота дискретизации входного сигнала
(значение по умолчанию) | положительная скалярная величинаЧастота дискретизации входного сигнала в герц в виде положительной скалярной величины.
Типы данных: double
PathDelays
— Дискретная задержка пути
(значение по умолчанию) | скаляр | вектор-строкаДискретная задержка пути в секундах в виде скалярного или вектора-строки.
Когда вы устанавливаете PathDelays
к скаляру канал является плоской частотой.
Когда вы устанавливаете PathDelays
к вектору канал является выборочной частотой.
PathDelays
и AveragePathGains
свойства должны быть той же длиной.
Типы данных: double
AveragePathGains
— Средние усиления дискретных путей
(значение по умолчанию) | скаляр | вектор-строкаСредние усиления дискретных путей в децибелах в виде скалярного или вектора-строки. AveragePathGains
и PathDelays
свойства должны быть той же длиной.
Типы данных: double
NormalizePathGains
— Нормируйте средние усиления путиtrue
или 1
(значение по умолчанию) | false
или 0
Нормируйте средние усиления пути в виде одного из этих логических значений:
1
TRUE
) — Процессы исчезновения нормированы так, чтобы общая степень усилений пути, усредняемых в зависимости от времени, составила 0 дБ.
0
ложь
) — Общая степень усилений пути не нормирована.
AveragePathGains
свойство задает средние степени усилений пути.
Типы данных: логический
MaximumDopplerShift
— Максимальный эффект Доплера для всех путей к каналу
(значение по умолчанию) | неотрицательный скалярМаксимальный эффект Доплера для всех путей к каналу в виде неотрицательного скаляра. Модули находятся в герц.
Максимальный предел эффекта Доплера применяется к каждому пути к каналу. Когда вы устанавливаете это свойство на 0
, канал остается статическим для целого входа. Можно использовать reset
возразите функции, чтобы сгенерировать новую реализацию канала. MaximumDopplerShift
значение свойства должно быть меньшим, чем SampleRate
/10/fc для каждого пути. f c является фактором частоты среза пути. Для большинства Доплеровских типов спектра значение f c равняется 1. Для Гауссовых и bi-Gaussian Доплеровских типов спектра f c зависит от Доплеровских полей структуры спектра. Для получения дополнительной информации о том, как f c задан, смотрите раздел Cutoff Frequency Factor.
Типы данных: double
DopplerSpectrum
— Доплеровский спектр формирует для всех путей к каналуdoppler('Jakes')
(значение по умолчанию) | Доплеровская структура спектра | 1 NP массивом ячеек Доплеровских структур спектраДоплеровский спектр формирует для всех путей к каналу в виде Доплеровской структуры спектра или 1 NP массивом ячеек Доплеровских структур спектра. Этими Доплеровскими структурами спектра должны быть выходные параметры формы, возвращенной из doppler
функция. N P является количеством дискретных путей к задержке, заданных PathDelays
свойство. MaximumDopplerShift
свойство задает максимальное значение эффекта Доплера что DopplerSpectrum
свойство разрешает, когда вы задаете Доплеровский спектр..
Когда вы устанавливаете DopplerSpectrum
к одной Доплеровской структуре спектра все пути имеют заданный Доплеровский спектр того же самого.
Когда вы устанавливаете DopplerSpectrum
к массиву ячеек Доплеровских структур спектра каждому пути задала Доплеровский спектр соответствующая структура в массиве ячеек.
Задайте опции для типа спектра при помощи specType
введите к doppler
функция. Если вы устанавливаете FadingTechnique
свойство к 'Sum of sinusoids'
, необходимо установить DopplerSpectrum
к doppler('Jakes')
.
Чтобы включить это свойство, установите MaximumDopplerShift
свойство к положительной скалярной величине.
Типы данных: struct |
cell
ChannelFiltering
— Фильтрация каналаtrue
или 1
(значение по умолчанию) | false
или 0
Фильтрация канала в виде одного из этих логических значений:
1
TRUE
) — Канал принимает входной сигнал и производит отфильтрованный выходной сигнал.
0
ложь
) — Объект не принимает входной сигнал, не производит отфильтрованного выходного сигнала, и выходные параметры только образовывают канал усиления пути. Необходимо задать длительность процесса исчезновения при помощи NumSamples
свойство.
Типы данных: логический
PathGainsOutputPort
— Выведите усиления пути к каналуfalse
или 0
(значение по умолчанию) | true
или 1
Выведите усиления пути к каналу в виде логического 0
ложь
) или 1
TRUE
). Установите это свойство на true
выводить усиления пути к каналу базового процесса исчезновения.
Чтобы включить это свойство, установите ChannelFiltering
свойство к true
.
Типы данных: логический
NumSamples
— Количество отсчетов
(значение по умолчанию) | неотрицательное целое числоКоличество отсчетов используется для длительности процесса исчезновения в виде неотрицательного целого числа.
Настраиваемый: да
Чтобы включить это свойство, установите ChannelFiltering
свойство к false
.
Типы данных: double
OutputDataType
— Тип выходных данных усиления пути'double'
(значение по умолчанию) | 'single'
Выходные данные усиления пути вводят в виде 'double'
или 'single'
.
Чтобы включить это свойство, установите ChannelFiltering
свойство к false
.
Типы данных: char |
string
FadingTechnique
— Модель канала исчезающий метод'Filtered Gaussian noise'
(значение по умолчанию) | 'Sum of sinusoids'
Модель канала исчезающий метод в виде 'Filtered Gaussian noise'
или 'Sum of sinusoids'
.
Типы данных: char |
string
NumSinusoids
— Количество синусоид используется
(значение по умолчанию) | положительное целое числоКоличество синусоид раньше моделировало процесс исчезновения в виде положительного целого числа.
Чтобы включить это свойство, установите FadingTechnique
свойство к 'Sum of sinusoids'
.
Типы данных: double
InitialTimeSource
— Источник, чтобы управлять временем начала исчезающего процесса'Property'
(значение по умолчанию) | 'Input port'
Источник, чтобы управлять временем начала процесса исчезновения в виде 'Property'
или 'Input port'
.
Когда вы устанавливаете InitialTimeSource
к 'Property'
, установите начальное смещение времени при помощи InitialTime
свойство.
Когда вы устанавливаете InitialTimeSource
к 'Input port'
, задайте время начала процесса исчезновения при помощи inittime
входной параметр. Входное значение может измениться в последовательных вызовах объекта.
Чтобы включить это свойство, установите FadingTechnique
свойство к 'Sum of sinusoids'
.
Типы данных: char |
string
InitialTime
— Начальное время возмещено
(значение по умолчанию) | неотрицательный скалярНачальное время возмещено для исчезающей модели в секундах в виде неотрицательного скаляра.
Когда mod
(InitialTime
/SampleRate
) является ненулевым, начальное смещение времени окружено к самой близкой демонстрационной позиции.
Чтобы включить это свойство, установите FadingTechnique
свойство к 'Sum of sinusoids'
и InitialTimeSource
свойство к 'Property'
.
Типы данных: double
RandomStream
— Источник потока случайных чисел'Global stream'
(значение по умолчанию) | 'mt19937ar with seed'
Источник потока случайных чисел в виде 'Global stream'
или 'mt19937ar with seed'
.
Когда вы задаете 'Global stream'
, объект использует текущий глобальный поток случайных чисел для нормально распределенной генерации случайных чисел. В этом случае, reset
возразите, что функция сбрасывает только фильтры.
Когда вы задаете 'mt19937ar with seed'
, объект использует mt19937ar алгоритм для нормально распределенной генерации случайных чисел. В этом случае, reset
возразите, что функция сбрасывает фильтры и повторно инициализирует поток случайных чисел к значению Seed
свойство.
Типы данных: char |
string
Seed
— Начальный seed mt19937ar потока случайных чисел
(значение по умолчанию) | неотрицательное целое числоНачальный seed mt19937ar потокового алгоритма генератора случайных чисел в виде неотрицательного целого числа. Когда вы вызываете reset
возразите функции, она повторно инициализирует mt19937ar поток случайных чисел к Seed
значение.
Чтобы включить это свойство, установите RandomStream
свойство к 'mt19937ar with seed'
.
Типы данных: double
Visualization
— Визуализация канала'Off'
(значение по умолчанию) | 'Impulse response'
| 'Frequency response'
| 'Impulse and frequency responses'
| 'Doppler spectrum'
Визуализация канала в виде 'Off'
, 'Impulse response'
, 'Frequency response'
, 'Impulse and frequency responses'
, или 'Doppler spectrum'
. Для получения дополнительной информации смотрите раздел Channel Visualization.
Чтобы включить это свойство, установите FadingTechnique
свойство к 'Filtered Gaussian noise'
.
Типы данных: char |
string
PathsForDopplerDisplay
— Путь используется для отображения Доплеровского спектра
(значение по умолчанию) | положительное целое число Путь, используемый для отображения Доплеровского спектра в виде положительного целого числа в области значений [1, N P]. N P является количеством дискретных путей к задержке, заданных PathDelays
свойство. Используйте это свойство выбрать дискретный путь, используемый в построении Доплеровского графика спектра.
Чтобы включить это свойство, установите Visualization
свойство к 'Doppler spectrum'
.
Типы данных: double
SamplesToDisplay
— Процент выборок, чтобы отобразиться
(значение по умолчанию) | '10%'
| '50%'
| '100%'
Процент выборок, чтобы отобразиться в виде '25%'
, '10%', '50%'
, или
'100%'
. Увеличение процента улучшает точность отображения за счет скорости симуляции.
Чтобы включить это свойство, установите Visualization
свойство к 'Impulse response'
, 'Frequency response'
, или 'Impulse and frequency responses'
.
Типы данных: char |
string
фильтрует входной сигнал y
= rayleighchan(x
)x
через многопутевой Канал с релеевским замиранием и возвращает результат в y
.
Чтобы включить этот синтаксис, установите ChannelFiltering
свойство к true
.
задает время начала для процесса исчезновения.y
= rayleighchan(x
,inittime
)
Чтобы включить этот синтаксис, установите FadingTechnique
свойство к 'Sum of sinusoids'
и InitialTimeSource
свойство к 'Input port'
.
[
также возвращает усиления пути к каналу базового многопутевого процесса Релеевского замирания в y
,pathgains
] = rayleighchan(___)pathgains
использование любой из комбинаций входных аргументов в предыдущих синтаксисах.
Чтобы включить этот синтаксис, установите PathGainsOutputPort
набор свойств к true
.
возвращает усиления пути к каналу базового процесса исчезновения. В этом случае канал не требует никакого входного сигнала и действует как источник усилений пути.pathgains
= rayleighchan()
Чтобы включить этот синтаксис, установите ChannelFiltering
свойство к false
.
возвращает усиления пути к каналу базового процесса исчезновения, начинающегося в заданное начальное время. В этом случае канал не требует никакого входного сигнала и действует как источник усилений пути.pathgains
= rayleighchan(inittime
)
Чтобы включить этот синтаксис, установите FadingTechnique
свойство к 'Sum of sinusoids'
, InitialTimeSource
свойство к 'Input port'
, и ChannelFiltering
свойство к false
.
x
— Входной сигналВходной сигнал в виде вектора S-1 N, где N S является количеством отсчетов.
Типы данных: single
| double
Поддержка комплексного числа: Да
inittime
— Начальное время возмещено
| неотрицательный скалярНачальное время возмещено в секундах в виде неотрицательного скаляра.
Когда mod
(inittime
/SampleRate
) является ненулевым, начальное смещение времени окружено к самой близкой демонстрационной позиции.
Типы данных: single
| double
y
— Выходной сигналВыходной сигнал, возвращенный как вектор S-1 N из комплексных чисел с той же точностью данных как входной сигнал x
. N S является количеством отсчетов.
pathgains
— Выходные path усиленияВыходные path усиления, возвращенные как матрица S-by-NP N. N S является количеством отсчетов. N P является количеством дискретных путей к задержке, заданных PathDelays
свойство. pathgains
содержит комплексные числа.
Когда вы устанавливаете ChannelFiltering
свойство к false
, тип данных этого выхода имеет ту же точность как входной сигнал x
. Когда вы устанавливаете ChannelFiltering
свойство к true
, тип данных этого выхода задан OutputDataType
свойство.
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
comm.RayleighChannel
info | Характеристическая информация об исчезающем объекте канала |
Произведите тот же многопутевой ответ Канала с релеевским замиранием при помощи двух различных методов для генерации случайных чисел. Многопутевой Системный объект Канала с релеевским замиранием включает два метода для генерации случайных чисел. Можно использовать текущий глобальный поток или mt19937ar алгоритм с заданным seed. Путем взаимодействия с глобальным потоком Системный объект может произвести те же выходные параметры из этих двух методов.
Создайте Системный объект модулятора PSK, чтобы модулировать случайным образом сгенерированные данные.
pskModulator = comm.PSKModulator; insig = randi([0,pskModulator.ModulationOrder-1],1024,1); channelInput = pskModulator(insig);
Создайте многопутевой Системный объект Канала с релеевским замиранием, задав метод генерации случайных чисел как 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
Отобразите импульсные и частотные характеристики выборочного частотой многопутевого Канала с релеевским замиранием, который сконфигурирован, чтобы отключить фильтрацию канала.
Задайте переменные симуляции. Задайте задержки пути и усиления при помощи настройки B-канала пешехода ITU.
fs = 3.84e6; % Sample rate in Hz pathDelays = [0 200 800 1200 2300 3700]*1e-9; % in seconds avgPathGains = [0 -0.9 -4.9 -8 -7.8 -23.9]; % dB fD = 50; % Max Doppler shift in Hz
Создайте многопутевой Системный объект Канала с релеевским замиранием, чтобы визуализировать импульсную характеристику и графики частотных характеристик.
rayleighchan = comm.RayleighChannel('SampleRate',fs, ... 'PathDelays',pathDelays, ... 'AveragePathGains',avgPathGains, ... 'MaximumDopplerShift',fD, ... 'ChannelFiltering',false, ... 'Visualization','Impulse and frequency responses');
Визуализируйте ответ канала путем выполнения многопутевого Системного объекта Канала с релеевским замиранием без входного сигнала. График импульсной характеристики позволяет вам идентифицировать отдельные пути и их соответствующие коэффициенты фильтра. График частотной характеристики показывает выборочную частотой природу B-канала пешехода ITU.
rayleighchan();
Покажите, что состояние канала обеспечено для прерывистых передач при помощи многопутевых Системных объектов Канала с релеевским замиранием, которые используют метод суммы синусоид. Наблюдайте прерывистые сегменты ответа канала, наложенные относительно непрерывного ответа канала.
Установите свойства канала.
fs = 1000; % Sample rate (Hz) pathDelays = [0 2.5e-3]; % In seconds pathPower = [0 -6]; % In dB fD = 5; % Maximum Doppler shift (Hz) ns = 1000; % Number of samples nsdel = 100; % Number of samples for delayed paths
Задайте непрерывный отрезок времени и три прерывистых сегмента времени, по которым можно построить и просмотреть ответ канала. Просмотрите непрерывный ответ канала с 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
Создайте плоский частотой многопутевой Системный объект Релеевского замирания, задав частоту дискретизации на 1 000 Гц, сумма синусоид, исчезающая метод, отключенная фильтрация канала и количество отсчетов, чтобы просмотреть. Задайте начальное значение так, чтобы результаты могли быть повторены. Используйте InitialTime
по умолчанию установка свойства так, чтобы исчезающий канал был симулирован со времени 0.
rayleighchan1 = comm.RayleighChannel('SampleRate',fs, ... 'MaximumDopplerShift',fD, ... 'RandomStream','mt19937ar with seed', ... 'Seed',17, ... 'FadingTechnique','Sum of sinusoids', ... 'ChannelFiltering',false, ... 'NumSamples',ns);
Создайте клон многопутевого Системного объекта Канала с релеевским замиранием. Установите количество отсчетов для задержанных путей, вы задаете источник в течение начального времени так, чтобы можно было указать, что исчезающее время смещения канала может быть задано как входной параметр при использовании Системного объекта.
rayleighchan2 = clone(rayleighchan1);
rayleighchan2.InitialTimeSource = 'Input port';
rayleighchan2.NumSamples = nsdel;
Сохраните усиление пути выход для непрерывного ответа канала при помощи rayleighchan1
возразите и для прерывистых задержанных ответов канала при помощи rayleighchan2
объект с начальными смещениями времени обеспечивается как входные параметры.
pg0 = rayleighchan1(); pg1 = rayleighchan2(to1); pg2 = rayleighchan2(to2); pg3 = rayleighchan2(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('Continuous 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] ChannelFiltering: true PathGainsOutputPort: true Show all properties
data = randi([0 1],600,1);
Передайте данные через канал. Присвойте ChannelFilterCoefficients
значение свойства к переменной coeff
. В for
цикл, вычислите дробный задержанный входной сигнал в местоположениях задержки пути, сохраненных в coeff
, примените усиления пути и суммируйте результаты для всех путей. Сравните выход многопутевого Системного объекта Канала с релеевским замиранием (chanout1
) к выходу, воспроизведенному с помощью усилений пути и ChannelFilterCoefficients
свойство многопутевого Системного объекта Канала с релеевским замиранием (chanout2
).
chaninfo = info(rayleighchan); coeff = chaninfo.ChannelFilterCoefficients; Np = length(rayleighchan.PathDelays); state = zeros(size(coeff,2)-1,size(coeff,1)); nFrames = 10; chkChan = zeros(nFrames,1); for jj = 1 : nFrames data = randi([0 1],600,1); [chanout1,pg] = rayleighchan(data); fracdelaydata = zeros(size(data,1),Np); % Calculate the fractional delayed input signal. for ii = 1:Np [fracdelaydata(:,ii),state(:,ii)] = ... filter(coeff(ii,:),1,data,state(:,ii)); end % Apply the path gains and sum the results for all of the paths. % Compare the channel outputs. chanout2 = sum(pg .* fracdelaydata,2); chkChan(jj) = isequal(chanout1,chanout2); end chkChan'
ans = 1×10
1 1 1 1 1 1 1 1 1 1
Проверьте, что автокорреляцией усиления пути выход от Системного объекта канала Рейли является Функция Бесселя. Результаты в [1] и Приложение A [2], покажите, что то, когда автокорреляция пути получают выходные параметры, является Функцией Бесселя, Доплеровский спектр Jakes-формируется.
Инициализируйте параметры симуляции.
Rsym = 9600; % Input symbol rate (symbols/s) sps = 10; % Number of samples per input symbol Fs = sps*Rsym; % Input sampling frequency (samples/s) Ts = 1/Fs; % Input sampling period (s) numsym = 1e6; % Number of input symbols to simulate numsamp = numsym*sps; % Number of channel samples to simulate fd = 100; % Maximum Doppler frequency shift (Hz) num_acsamp = 5000; % Number of samples of autocovariance % of complex fading process calculated numtx = 1; % Number of transmit antennas numrx = 1; % Number of receive antennas numsin = 48; % Number of sinusoids frmLen = 10000; numFrames = numsamp/frmLen;
Сконфигурируйте Рэлеевский Системный объект канала.
chan = comm.RayleighChannel( ... 'FadingTechnique','Sum of sinusoids', ... 'NumSinusoids',numsin, ... 'RandomStream','mt19937ar with seed', ... 'PathDelays',0, ... 'AveragePathGains',0, ... 'SampleRate',Fs, ... 'MaximumDopplerShift',fd, ... 'PathGainsOutputPort',true);
Примените модуляцию DPSK к случайному потоку битов.
tx = randi([0 1],numsamp,numtx); % Random bit stream dpskSig = dpskmod(tx,2); % DPSK signal
Передайте модулируемый сигнал через канал.
outsig = zeros(numsamp,numrx); pg_rx = zeros(numsamp,numrx,numtx); for frmNum = 1:numFrames [outsig((1:frmLen)+(frmNum-1)*frmLen,:),pathGains] = ... chan(dpskSig((1:frmLen)+(frmNum-1)*frmLen,:)); for i = 1:numrx pg_rx((1:frmLen)+(frmNum-1)*frmLen,i,:) = ... pathGains(:,:,:,i); end end
Используя усиления пути к каналу, полученные на антенну, вычислите автоковариацию процесса исчезновения для каждого приёмного пути передачи.
autocov = zeros(frmLen+1,numrx,numtx); autocov_normalized_real = zeros(num_acsamp+1,numrx,numtx); autocov_normalized_imag = zeros(num_acsamp+1,numrx,numtx); for i = 1:numrx % Compute autocovariance of simulated complex fading process for j = 1:numtx autocov(:,i,j) = xcov(pg_rx(:,i,j),num_acsamp); % Real part of normalized autocovariance autocov_normalized_real(:,i,j) = ... real(autocov(num_acsamp+1:end,i,j) ... / autocov(num_acsamp+1,i,j)); % Imaginary part of normalized autocovariance autocov_normalized_imag(:,i,j) = ... imag(autocov(num_acsamp+1:end,i,j) ... / autocov(num_acsamp+1,i,j)); end end
Вычислите теоретическую автоковариацию комплексного процесса исчезновения при помощи besselj
функция.
Rrr = zeros(1,num_acsamp+1); for n = 1:1:num_acsamp+1 Rrr(n) = besselj(0,2*pi*fd*(n-1)*Ts); end Rrr_normalized = Rrr/Rrr(1);
Отобразите автоковариацию, чтобы сравнить результаты Системного объекта канала Рейли и besselj
функция.
subplot(2,1,1) plot(autocov_normalized_real,'b-') hold on plot(Rrr_normalized,'r-') hold off legend('comm.RayleighChannel', ... 'Bessel function of the first kind') title('Autocovariance of Real Part of Rayleigh Process') subplot(2,1,2) plot(autocov_normalized_imag) legend('comm.RayleighChannel') title('Autocovariance of Imaginary Part of Rayleigh Process')
Как вычислено ниже, среднеквадратичная погрешность, сравнивающая результаты объекта канала Рейли по сравнению с Функцией Бесселя, незначительна.
act_mse_real = ... sum((autocov_normalized_real-repmat(Rrr_normalized.',1,numrx,numtx)).^2,1) ... / size(autocov_normalized_real,1)
act_mse_real = 7.0043e-08
act_mse_imag = sum((autocov_normalized_imag-0).^2,1) ...
/ size(autocov_normalized_imag,1)
act_mse_imag = 4.1064e-07
Ссылки
1. Вдавите, P., Г. Боттомли и Т. Крофт. “Jakes, Исчезающий Пересмотренная Модель”. Буквы электроники 29, № 13 (1993): 1162. https://doi.org/10.1049/el:19930777.
2. Pätzold, Мэттиас. Мобильные Исчезающие Каналы. Чичестер, Великобритания: John Wiley & Sons, Ltd, 2002. https://doi.org/10.1002/0470847808.
Вычислите и постройте эмпирическую и теоретическую функцию плотности вероятности (PDF) для канала Рейли с одним путем.
Инициализируйте параметры и создайте Системный объект канала Рейли, который не применяет фильтрацию канала.
Ns = 1.92e6; Rs = 1.92e6; dopplerShift = 2000; chan = comm.RayleighChannel( ... 'SampleRate',Rs, ... 'PathDelays',0, ... 'AveragePathGains',0, ... 'MaximumDopplerShift',dopplerShift, ... 'ChannelFiltering',false, ... 'NumSamples',Ns, ... 'FadingTechnique','Sum of sinusoids');
Вычислите и постройте эмпирическую и теоретическую PDF для Рэлеевского канала.
figure; hold on; % Empirical PDF plot gain = chan(); pd = fitdist(abs(gain),'Kernel','BandWidth',.01); r = 0:.1:3; y = pdf(pd,r); plot(r,y) % Theoretical PDF plot exp_pdf_amplitude = raylpdf(r,0.7); plot(r,exp_pdf_amplitude') legend('Empirical','Theoretical') title('Empirical and Theoretical PDF Curves')
Фактор частоты среза, f c, зависит от типа Доплеровского спектра.
Для любого Доплеровского типа спектра кроме Гауссова и bi-Gaussian, f c равняется 1.
Для a doppler
('Gaussian')
тип спектра, f c равняется NormalizedStandardDeviation
.
Для a doppler
('BiGaussian')
тип спектра:
Если PowerGains
(1) и
NormalizedCenterFrequencies
(2) значениями полей является оба
0
, затем f c равняется NormalizedStandardDeviation
(1).
Если PowerGains
(2) и
NormalizedCenterFrequencies
(1) значениями полей является оба
0
, затем f c равняется NormalizedStandardDeviation
(2).
Если NormalizedCenterFrequencies
значением поля является [0,0]
и NormalizedStandardDeviation
поле имеет два идентичных элемента, затем f c равняется NormalizedStandardDeviation
(1).
Во всех других случаях f c равняется 1.
comm.RayleighChannel
Системный объект включает визуализацию импульсной характеристики канала, частотной характеристики и Доплеровского спектра.
Примечание
Отображенные и заданные местоположения усиления пути могут отличаться целых 5% входного шага расчета.
Скорость отображения визуализации контролируется комбинацией SamplesToDisplay
свойство и пункт меню scope Reduce Updates to Improve Performance найдены в Playback . Сокращение процента выборок, чтобы отобразиться и включение уменьшаемых обновлений могут ускорить рендеринг осциллографа визуализации.
Если вы закрываете осциллографы визуализации, вызовы Системного объекта выполняются на нормальной скорости.
Генерация кода доступна только, когда вы устанавливаете Visualization
свойство к 'Off'
.
Импульсная характеристика
Осциллограф импульсной характеристики отображает усиления пути, коэффициенты фильтра канала и интерполированные усиления пути. Усиления пути происходят в экземплярах времени, которые соответствуют заданному PathDelays
свойство и не может быть выровнено с входным временем выборки. Осциллограф использует коэффициенты фильтра канала, чтобы смоделировать канал. Коэффициенты интерполированы от фактических усилений пути и выравниваются с входным временем выборки. Усиления пути перекрывают коэффициенты фильтра для случаев, где усиления пути выравниваются со временем выборки. Интерполяция Sinc используется, чтобы соединить коэффициенты фильтра канала и показывается интерполированными усилениями пути. Эти точки используются только для целей отображения и не используются в последующей фильтрации канала. Для плоского исчезающего канала (один путь), не отображена sinc кривая интерполяции. Для всех графиков импульсной характеристики систему координат и демонстрационные числа показывают в верхнем левом углу осциллографа.
График импульсной характеристики совместно использует ту же панель инструментов и меню как dsp.ArrayPlot
Системный объект.
Когда заданные усиления пути выравниваются с частотой дискретизации, усилениями пути и содействующим перекрытием фильтра канала. В этом рисунке импульсная характеристика показывает, что усиления пути перекрывают коэффициенты фильтра.
Если заданные усиления пути не выравниваются с частотой дискретизации, усиления пути и коэффициенты фильтра канала не перекрываются. В этом рисунке одинаково распределяются коэффициенты фильтра. Поскольку усиления пути не выравниваются с частотой дискретизации, усиления пути не перекрываются с коэффициентами фильтра канала.
Этот рисунок показывает импульсную характеристику для плоского частотой канала, не отображая интерполированные усиления пути.
Частотная характеристика
Осциллограф частотной характеристики отображает многопутевой спектр Канала с релеевским замиранием путем взятия дискретного преобразования Фурье коэффициентов фильтра канала. График частотной характеристики совместно использует ту же панель инструментов и меню как dsp.SpectrumAnalyzer
Системный объект.
y - пределы по осям графика вычисляются на основе NormalizePathGains
и AveragePathGains
свойства comm.RayleighChannel
Системный объект.
Эта таблица показывает другие выбранные настройки спектра по умолчанию. Можно изменить эти настройки от их значений по умолчанию при помощи Spectrum Settings в View .
Настройки спектра | Значение |
---|---|
Type в Main options |
|
Window length в Main options | Длина фильтра канала |
NFFT в Main options | 512 |
Window в Window options |
|
Units в Trace options |
|
Этот рисунок показывает график частотной характеристики для выборочного частотой канала.
Доплер Спектрум
Доплеровский график спектра отображает теоретический Доплеровский спектр и опытным путем решительные точки данных. Теоретические данные отображены как линия для случая нестатических каналов и как точка для статических каналов. Эмпирические данные показывают как * символы. Прежде чем эмпирический график обновляется, внутренний буфер должен быть абсолютно заполнен отфильтрованными Гауссовыми выборками. Эмпирический график является рабочим средним значением спектра, который вычисляется от каждого полного буфера. Для нестатических каналов количество входных выборок, которое необходимо перед следующим обновлением, отображено в верхнем левом углу графика. Количество отсчетов, которое необходимо, является функцией частоты дискретизации и максимального эффекта Доплера. Для статических каналов, текст "Reset fading channel for next update
"отображен.
[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.
Указания и ограничения по применению:
Чтобы сгенерировать код С, установите DopplerSpectrum
свойство к одной Доплеровской структуре спектра.
Генерация кода доступна только, когда вы устанавливаете Visualization
свойство к 'Off'
.
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
comm.AWGNChannel
| comm.MIMOChannel
| comm.RicianChannel
| comm.RayTracingChannel
| comm.ChannelFilter
| comm.WINNER2Channel
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.