comm.RayleighChannel

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

Описание

comm.RayleighChannel Система object™ пропускает входной сигнал через многопутевой Канал с релеевским замиранием. Для получения дополнительной информации об исчезающей обработке модели смотрите раздел Methodology for Simulating Multipath Fading Channels.

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

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

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

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

Создание

Описание

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

пример

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

Свойства

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

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

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

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

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

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

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

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

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

PathDelays и AveragePathGains свойства должны быть той же длиной.

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

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

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

Нормируйте средние усиления пути в виде одного из этих логических значений:

  • 1 TRUE) — Процессы исчезновения нормированы так, чтобы общая степень усилений пути, усредняемых в зависимости от времени, составила 0 дБ.

  • 0 ложь) — Общая степень усилений пути не нормирована.

AveragePathGains свойство задает средние степени усилений пути.

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

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

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

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

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

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

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

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

Зависимости

Чтобы включить это свойство, установите MaximumDopplerShift свойство к положительной скалярной величине.

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

Фильтрация канала в виде одного из этих логических значений:

  • 1 TRUE) — Канал принимает входной сигнал и производит отфильтрованный выходной сигнал.

  • 0 ложь) — Объект не принимает входной сигнал, не производит отфильтрованного выходного сигнала, и выходные параметры только образовывают канал усиления пути. Необходимо задать длительность процесса исчезновения при помощи NumSamples свойство.

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

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

Зависимости

Чтобы включить это свойство, установите ChannelFiltering свойство к true.

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

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

Настраиваемый: да

Зависимости

Чтобы включить это свойство, установите ChannelFiltering свойство к false.

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

Выходные данные усиления пути вводят в виде 'double' или 'single'.

Зависимости

Чтобы включить это свойство, установите ChannelFiltering свойство к false.

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

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

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

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

Зависимости

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

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

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

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

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

Зависимости

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

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

Начальное время возмещено для исчезающей модели в секундах в виде неотрицательного скаляра.

Когда mod(InitialTime/SampleRate) является ненулевым, начальное смещение времени окружено к самой близкой демонстрационной позиции.

Зависимости

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

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

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

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

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

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

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

Зависимости

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

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

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

Зависимости

Чтобы включить это свойство, установите FadingTechnique свойство к 'Filtered Gaussian noise'.

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

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

Зависимости

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

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

Процент выборок, чтобы отобразиться в виде '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.

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

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

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

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

Начальное время возмещено в секундах в виде неотрицательного скаляра.

Когда mod(inittime/SampleRate) является ненулевым, начальное смещение времени окружено к самой близкой демонстрационной позиции.

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

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

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

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

Выходные path усиления, возвращенные как матрица S-by-NP N. N S является количеством отсчетов. N P является количеством дискретных путей к задержке, заданных PathDelays свойство. pathgains содержит комплексные числа.

Когда вы устанавливаете ChannelFiltering свойство к false, тип данных этого выхода имеет ту же точность как входной сигнал x. Когда вы устанавливаете ChannelFiltering свойство к true, тип данных этого выхода задан OutputDataType свойство.

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

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

release(obj)

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

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

Примеры

свернуть все

Произведите тот же многопутевой ответ Канала с релеевским замиранием при помощи двух различных методов для генерации случайных чисел. Многопутевой Системный объект Канала с релеевским замиранием включает два метода для генерации случайных чисел. Можно использовать текущий глобальный поток или 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();

Figure Frequency Response contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 2 objects of type text, line. This object represents Channel 1.

Figure Impulse Response contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 3 objects of type stem, text. These objects represent Path Gain, Channel Filter Coefficient.

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

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

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')

Figure contains an axes object. The axes object with title Continuous and Discontinuous Transmission Path Gains contains 4 objects of type line. These objects represent Continuous, Discontinuous.

Воспроизведите многопутевой Канал с релеевским замиранием выход через несколько систем координат при помощи 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') 

Figure contains 2 axes objects. Axes object 1 with title Autocovariance of Real Part of Rayleigh Process contains 2 objects of type line. These objects represent comm.RayleighChannel, Bessel function of the first kind. Axes object 2 with title Autocovariance of Imaginary Part of Rayleigh Process contains an object of type line. This object represents comm.RayleighChannel.

Как вычислено ниже, среднеквадратичная погрешность, сравнивающая результаты объекта канала Рейли по сравнению с Функцией Бесселя, незначительна.

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')

Figure contains an axes object. The axes object with title Empirical and Theoretical PDF Curves contains 2 objects of type line. These objects represent Empirical, Theoretical.

Больше о

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

Ссылки

[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