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

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

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

  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 микросекунд спустя.

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

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

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

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

С параметрами, заданными выше, мы можем теперь создать Системные объекты comm.RicianChannel и comm.RayleighChannel. Мы конфигурируем объекты использовать их автономный случайный поток с заданным 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);

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

Исчезающие Системные объекты канала имеют встроенную визуализацию, чтобы показать импульсный ответ канала, частотную характеристику или Доплеровский спектр из метода step. Чтобы вызвать его, установите свойство Visualization на его требуемое значение прежде, чем вызвать метод step. Выпустите Системные объекты канала 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%';

numFrames = 2;

for i = 1:numFrames % Display impulse and frequency responses for 2 frames
    % 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';

numFrames = 5000;

for i = 1:numFrames % Display Doppler spectrum from 5000 frame transmission
    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

numFrames = 2;

for i = 1:numFrames % Display impulse and frequency responses for 2 frames
    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

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

release(rayChan);
rayChan.Visualization = 'Off'; % Turn off System object's visualization
ricChan.Visualization = 'Off'; % Turn off System object's 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 = dsp.TimeScope( ...
    'SampleRate', rayChan.SampleRate, ...
    '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

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