Этот пример показывает, как использовать Рейли и Рикиэна многопутевые исчезающие Системные объекты канала и их встроенная визуализация, чтобы смоделировать исчезающий канал. Рейли и Рикиэн, исчезающий каналы, являются полезными моделями явлений реального мира в радиосвязи. Эти явления включают многопутевые эффекты рассеивания, дисперсию времени и эффекты Доплера, которые являются результатом относительного движения между передатчиком и получателем.
Обработка сигнала с помощью исчезающего канала включает следующие шаги:
Создайте Систему канала object™, который описывает канал, который вы хотите использовать. Объект канала является типом переменной MATLAB®, которая содержит информацию о канале, таком как максимальный эффект Доплера.
Настройте свойства Системного объекта, при необходимости, чтобы адаптировать его в соответствии с вашими потребностями. Например, можно изменить задержки пути или средние усиления пути.
Примените Системный объект канала к своему сигналу с помощью метода шага, который генерирует случайные дискретные усиления пути и фильтрует входной сигнал.
Характеристики канала можно показать со встроенной поддержкой визуализации Системного объекта.
Следующие переменные управляют и объектами канала 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);
Создайте Системный объект
, чтобы модулировать данные о канале, которые были сгенерированы с помощью функции RANDI. Обратите внимание на то, что в коде ниже 'кадра' относится к вектору информационных битов. Смещение фазы пи/4 используется для этого примера.comm.QPSKModulator
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
Рикиэн, исчезающий распространение угла обзора Моделей системных объектов канала, кроме того, чтобы рассеять многопутевое рассеивание. Это приводит к меньшему изменению в значении усилений пути. Чтобы сравнить изменение между каналами Рейли и Рикиэна, мы используем Системный объект
, чтобы просматривать их усиления пути в зависимости от времени. Обратите внимание на то, что значение колеблется приблизительно область значений на 10 дБ для Рикиэна, исчезающего канал (синяя кривая), по сравнению с 30-40 дБ для Канала с релеевским замиранием (желтая кривая). Для Рикиэна, исчезающего канал, это изменение далее уменьшалось бы путем увеличения K-фактора (в настоящее время набор к 10).dsp.TimeScope
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));
Мы теперь возвращаемся к нашему исходному Каналу с релеевским замиранием с четырьмя путями. Мы используем Системный объект
, чтобы показать влияние узкополосной связи, исчезающей на сигнальном созвездии. Чтобы замедлить динамику канала в целях визуализации, мы уменьшаем максимальный эффект Доплера до 5 Гц. По сравнению с входным сигналом канала QPSK можно наблюдать затухание сигнала и вращение в канале вывод, а также некоторое искажение сигнала из-за небольшого количества ISI в полученном сигнале.comm.ConstellationDiagram
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