Многопутевой исчезающий канал

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

Обработка сигнала с помощью исчезающего канала включает следующие шаги:

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

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

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

Характеристики канала можно показать со встроенной поддержкой визуализации Системного объекта.

Инициализация

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

sampleRate500kHz = 500e3; % Sample rate of 500K Hz
sampleRate20kHz  = 20e3; % Sample rate of 20K Hz
maxDopplerShift  = 200; % Maximum Doppler shift of diffuse components (Hz)
delayVector = (0:5:15)*1e-6; % Discrete delays of four-path channel (s)
gainVector  = [0 -3 -6 -9]; % Average path gains (dB)

Максимальный эффект Доплера вычисляется как v*f/c, где v является мобильной скоростью, f является несущей частотой, и c является скоростью света. Например, максимальный эффект Доплера 200 Гц (как выше) соответствует мобильной скорости 65 миль в час (30 м/с) и несущей частоте 2 ГГц.

Условно, задержка первого пути обычно обнуляется. Для последующих путей задержка 1 микросекунды соответствует различию на 300 м в длине пути. В некоторых наружных лучевых средах отраженные пути могут быть на несколько километров более длинными, чем кратчайший путь. С задержками пути, заданными выше, последний путь на 4,5 км более длинен, чем кратчайший путь, и таким образом прибывает 15 микросекунд спустя.

Вместе, задержки пути и усиления пути задают профиль средней задержки канала. Как правило, средние усиления пути затухают экспоненциально с задержкой (i.e., значения дБ затухают линейно), но определенный профиль задержки зависит от среды распространения. В профиле задержки, заданном выше, мы принимаем уменьшение на 3 дБ в средней степени в течение каждых 5 микросекунд задержки пути.

Следующие переменные управляют Системным объектом канала Rician. Эффект Доплера зеркального компонента обычно меньше, чем максимальный эффект Доплера (выше) и зависит от направления перемещения мобильного телефона относительно направления зеркального компонента. K-фактор задает линейное отношение средней мощности приемника от зеркального компонента относительно того из связанных рассеянных компонентов.

KFactor = 10; % Linear ratio of specular power to diffuse power
specDopplerShift = 100; % Doppler shift of specular component (Hz)

Создание системных объектов канала

Параметрами, заданными выше, мы можем теперь создать comm.RayleighChannel и comm.RicianChannel Системные объекты. Мы конфигурируем объекты использовать их автономный случайный поток с заданным seed для генерации усиления пути.

% Configure a Rayleigh channel object
rayChan = comm.RayleighChannel( ...
    'SampleRate',sampleRate500kHz, ...
    'PathDelays',delayVector, ...
    'AveragePathGains',gainVector, ...
    'MaximumDopplerShift',maxDopplerShift, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',10, ...
    'PathGainsOutputPort',true);

% Configure a Rician channel object
ricChan = comm.RicianChannel( ...
    'SampleRate',sampleRate500kHz, ...
    'PathDelays',delayVector, ...
    'AveragePathGains',gainVector, ...
    'KFactor',KFactor, ...
    'DirectPathDopplerShift',specDopplerShift, ...
    'MaximumDopplerShift',maxDopplerShift, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',100, ...
    'PathGainsOutputPort',true);

Модуляция и фильтрация канала

Создайте comm.QPSKModulator Системный объект, чтобы модулировать данные о канале, которые были сгенерированы с помощью randi функция. В коде здесь 'система координат' относится к вектору информационных битов. Смещение фазы пи/4 используется для этого примера.

qpskMod = comm.QPSKModulator('BitInput',true,'PhaseOffset',pi/4);

% Number of bits transmitted per frame is set to be 1000. For QPSK
% modulation, this corresponds to 500 symbols per frame.
bitsPerFrame = 1000;
msg = randi([0 1],bitsPerFrame,1);

% Modulate data for transmission over channel
modSignal = qpskMod(msg);

% Apply Rayleigh or Rician channel object on the modulated data
rayChan(modSignal);
ricChan(modSignal);

Визуализация

Исчезающие Системные объекты канала имеют встроенную визуализацию, чтобы показать импульсную характеристику канала, частотную характеристику или Доплеровский спектр, когда объект запускается. Чтобы вызвать его, установите Visualization свойство к требуемому значению прежде, чем вызвать объект. Выпустите Системные объекты канала Rayleigh и Rician теперь так, чтобы изменить их значения свойств.

release(rayChan);
release(ricChan);

Широкополосное или выборочное частотой исчезновение

Установка Visualization свойство к 'Impulse response' показывает bandlimited импульсную характеристику (желтые круги). Визуализация также показывает задержки и величины базовых исчезающих усилений пути (розовый stembars) кластеризируемый вокруг пика импульсной характеристики. Обратите внимание на то, что усиления пути не равняются AveragePathGains значение свойства, потому что эффект Доплера заставляет усиления колебаться в зависимости от времени.

Точно так же установка Visualization свойство к 'Frequency response' показывает частотную характеристику (преобразование ДПФ) импульсов. Можно также установить Visualization к 'Impulse and frequency responses' отобразить и импульсные и частотные характеристики рядом друг с другом.

Можно управлять процентом входных выборок, которые будут визуализироваться путем изменения SamplesToDisplay свойство. В общем случае, чем меньший процент, тем быстрее запуски симуляции. Если фигура визуализации открывается, нажмите Playback кнопка и выключает, "Уменьшают Обновления, чтобы Улучшать Производительность", или "Уменьшают Уровень Графика, чтобы Улучшать Производительность" опция, чтобы далее улучшить точность отображения. Опция идет по умолчанию для более быстрой симуляции. Чтобы видеть ответ канала для каждой входной выборки, снимите флажок с этой опцией и установите SamplesToDisplay к '100%'.

rayChan.Visualization = 'Impulse and frequency responses';
rayChan.SamplesToDisplay = '100%';

% Display impulse and frequency responses for 2 frames
numFrames = 2;
for i = 1:numFrames
    % Create random data
    msg = randi([0 1],bitsPerFrame,1);
    % Modulate data
    modSignal = qpskMod(msg);
    % Filter data through channel and show channel responses
    rayChan(modSignal);
end

Как вы видите, частотная характеристика канала не является плоской и может иметь, глубоко исчезает по 500K полосе пропускания Гц. Поскольку уровень мощности варьируется по полосе пропускания сигнала, это упоминается как выборочное частотой исчезновение.

Для той же спецификации канала мы теперь отображаем Доплеровский спектр для его первого дискретного пути, который является статистической характеристикой процесса исчезновения. Системный объект делает периодические измерения Доплеровского спектра (голубые звезды). В зависимости от времени с большим количеством выборок, обработанных Системным объектом, среднее значение этого измерения лучше аппроксимирует теоретический Доплеровский спектр (желтая кривая).

release(rayChan);
rayChan.Visualization = 'Doppler spectrum';

% Display Doppler spectrum from 5000 frame transmission
numFrames = 5000;
for i = 1:numFrames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChan(modSignal);
end

Узкополосная связь или плоское частотой исчезновение

Когда полоса пропускания слишком мала для сигнала разрешить отдельные компоненты, частотная характеристика является приблизительно плоской из-за минимальной дисперсии времени, вызванной многопутевым каналом. Этот вид многопутевого исчезновения часто упоминается как узкополосное исчезновение или плоское частотой исчезновение.

Мы теперь уменьшаем полосу пропускания сигнала от 500 Кбит/с (250 ksym/s) к 20 Кбит/с (10 ksym/s), таким образом, промежуток задержки (15 микросекунд) канала намного меньше, чем символьный период QPSK (100 микросекунд). Результирующая импульсная характеристика имеет очень маленькую интерференцию межсимвола (ISI), и частотная характеристика является приблизительно плоской.

release(rayChan);
rayChan.Visualization = 'Impulse and frequency responses';
rayChan.SampleRate = sampleRate20kHz;
rayChan.SamplesToDisplay = '25%';  % Display one of every four samples

% Display impulse and frequency responses for 2 frames
numFrames = 2;
for i = 1:numFrames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChan(modSignal);
end

Чтобы упростить и ускорить моделирование, узкополосная связь, исчезающая, каналы обычно моделируются как одно путь, исчезающий канал. Таким образом, многопутевая исчезающая модель чрезмерно определяет узкополосную связь, исчезающую канал. Следующие настройки соответствуют узкополосной связи, исчезающей канал. Заметьте, что форма bandlimited импульсной характеристики является плоской.

release(rayChan);
rayChan.PathDelays = 0;        % Single fading path with zero delay
rayChan.AveragePathGains = 0;  % Average path gain of 1 (0 dB)

for i = 1:numFrames % Display impulse and frequency responses for 2 frames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChan(modSignal);
end

Рикиэн, исчезающий распространение угла обзора Моделей системных объектов канала, кроме того, чтобы рассеять многопутевое рассеивание. Это приводит к меньшему изменению величины усилений пути. Чтобы сравнить изменение между каналами Рейли и Рикиэна, мы используем timescope возразите, чтобы просматривать их усиления пути в зависимости от времени. Обратите внимание на то, что величина колеблется приблизительно область значений на 10 дБ для Rician, исчезающего канал (синяя кривая), по сравнению с 30-40 дБ для Канала с релеевским замиранием (желтая кривая). Для Rician, исчезающего канал, это изменение далее уменьшалось бы путем увеличения K-фактора (в настоящее время набор к 10).

release(rayChan);
rayChan.Visualization = 'Off'; % Turn off Rayliegh object visualization
ricChan.Visualization = 'Off'; % Turn off Rician object visualization

% Same sample rate and delay profile for the Rayleigh and Rician objects
ricChan.SampleRate = rayChan.SampleRate;
ricChan.PathDelays = rayChan.PathDelays;
ricChan.AveragePathGains = rayChan.AveragePathGains;

% Configure a Time Scope System object to show path gain magnitude
gainScope = timescope( ...
    'SampleRate',rayChan.SampleRate, ...
    'TimeSpanSource','Property',...
    'TimeSpan',bitsPerFrame/2/rayChan.SampleRate, ... % One frame span
    'Name','Multipath Gain', ...
    'ShowGrid',true, ...
    'YLimits',[-40 10], ...
    'YLabel','Gain (dB)');

% Compare the path gain outputs from both objects for one frame
msg = randi([0 1],bitsPerFrame,1);
modSignal = qpskMod(msg);
[~,rayPathGain] = rayChan(modSignal);
[~,ricPathGain] = ricChan(modSignal);
% Form the path gains as a two-channel input to the time scope
gainScope(10*log10(abs([rayPathGain,ricPathGain]).^2));

Исчезающий удар канала на сигнальное созвездие

Мы теперь возвращаемся к нашему исходному Каналу с релеевским замиранием с четырьмя путями. Мы используем comm.ConstellationDiagram Системный объект, чтобы показать удар узкополосной связи, исчезающей на сигнальном созвездии. Чтобы замедлить динамику канала в целях визуализации, мы уменьшаем максимальный эффект Доплера до 5 Гц. По сравнению с входным сигналом канала QPSK можно наблюдать затухание сигнала и вращение в канале выход, а также некоторое искажение сигнала из-за небольшого количества ISI в полученном сигнале.

clear hRicChan hMultipathGain;
release(rayChan);

rayChan.PathDelays = delayVector;
rayChan.AveragePathGains = gainVector;
rayChan.MaximumDopplerShift = 5;

% Configure a Constellation Diagram System object to show received signal
constDiag = comm.ConstellationDiagram( ...
    'Name','Received Signal After Rayleigh Fading');

numFrames = 16;

for n = 1:numFrames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChanOut = rayChan(modSignal);
    % Display constellation diagram for Rayleigh channel output
    constDiag(rayChanOut);
end

Когда мы увеличиваем полосу пропускания сигнала до 500 Кбит/с (250 ksym/s), мы видим намного большее искажение в сигнальном созвездии. Это искажение является ISI, который прибывает из дисперсии времени широкополосного сигнала. Промежуток задержки (15 микросекунд) канала теперь больше, чем символьный период QPSK (4 микросекунды), таким образом, результант bandlimited импульсная характеристика больше не является приблизительно плоским.

release(rayChan);
release(constDiag);
rayChan.SampleRate = sampleRate500kHz;

for n = 1:numFrames
    msg = randi([0 1],bitsPerFrame,1);
    modSignal = qpskMod(msg);
    rayChanOut = rayChan(modSignal);
    constDiag(rayChanOut);
end