В этом примере показано, как использовать Рейли и Рикиэна многопутевые исчезающие Системные объекты канала и их встроенная визуализация, чтобы смоделировать исчезающий канал. Рейли и Рикиэн, исчезающий каналы, являются полезными моделями явлений реального мира в радиосвязи. Эти явления включают многопутевые эффекты рассеивания, дисперсию времени и эффекты Доплера, которые являются результатом относительного движения между передатчиком и приемником.
Обработка сигнала с помощью исчезающего канала включает следующие шаги:
Создайте Систему канала 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 микросекунд спустя.
Вместе, задержки пути и усиления пути задают профиль средней задержки канала. Как правило, средние усиления пути затухают экспоненциально с задержкой (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
Системные объекты. Мы конфигурируем объекты использовать их автономный случайный поток с заданным seed для генерации усиления пути.comm.RicianChannel
% 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
Рикиэн, исчезающий распространение угла обзора Моделей системных объектов канала, кроме того, чтобы рассеять многопутевое рассеивание. Это приводит к меньшему изменению величины усилений пути. Чтобы сравнить изменение между каналами Рейли и Рикиэна, мы используем
возразите, чтобы просматривать их усиления пути в зависимости от времени. Обратите внимание на то, что величина колеблется приблизительно область значений на 10 дБ для Rician, исчезающего канал (синяя кривая), по сравнению с 30-40 дБ для Канала с релеевским замиранием (желтая кривая). Для Rician, исчезающего канал, это изменение далее уменьшалось бы путем увеличения K-фактора (в настоящее время набор к 10).timescope
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));
Мы теперь возвращаемся к нашему исходному Каналу с релеевским замиранием с четырьмя путями. Мы используем
Системный объект, чтобы показать удар узкополосной связи, исчезающей на сигнальном созвездии. Чтобы замедлить динамику канала в целях визуализации, мы уменьшаем максимальный эффект Доплера до 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