Этот пример показывает, как симулировать высокочастотные (HF) ионосферные каналы, основываясь на моделях, описанных в Рекомендации ITU-R F.1487. В частности, показано, как симулировать общую модель канала Ваттерсона, и другие упрощенные модели канала, используемые в количественной проверке HF-модемов. Он использует comm.RayleighChannel
Системные object™ и stdchan
функция наряду с Гауссовыми и би-Гауссовыми doppler
структуры от Communications Toolbox™.
В ионосферных радиосвязях HF переданный сигнал может несколько раз отскочить от слоев E и F ионосферы, что приводит к нескольким путям распространения, также называемым режимами [1]. Обычно многолучевые задержки являются большими по сравнению с мобильным радио. Также сигнал может страдать от Допплеровского распространения из-за турбулентности ионосферы. Однако скорость затухания обычно меньше, чем для мобильного радио.
Рекомендация ITU-R F.1487 [1] предлагает общую модель Гауссова рассеяния для симуляции ионосферных каналов HF. Эта модель основана на модели канала Уоттерсона [2]. Более простые модели также предложены в [1] для использования в тестах HF-модема с заданными параметрами.
Симуляция частоты дискретизации Rs
задается как 9.6K Гц и остается тем же самым в оставшейся части примера. Мы используем схему QPSK модуляции с нулевым смещением фазы.
Rs = 9.6e3; % Channel sampling rate M = 4; % Modulation order qpskMod = comm.QPSKModulator(0); % QPSK modulator object
Модель канала Ваттерсона состоит из выделенной линии задержки, где каждый контакт соответствует разрешимому пути распространения. На каждом отводе присутствуют два магнитоионных компонента: каждый моделируется как комплексный Гауссов случайный процесс с заданным усилением и сдвигом частоты, и доплеровский спектр которого Гауссов с заданным стандартным отклонением [2]. Следовательно, для каждого крана характерен би-Гауссов доплеровский спектр, который состоит из двух Гауссовых функций в частотный диапазон, каждый со своим набором параметров (степень коэффициент усиления, сдвиг частоты и стандартное отклонение).
В этом примере мы следуем модели симуляции Ваттерсона, заданной в [1], в которой комплексный процесс замирания на каждом отводе получен путем добавления двух независимых сдвинутых по частоте комплексных Гауссовских случайных процессов (с доплеровскими спектрами Гауссова), соответствующих двум магнитоионным компонентам. Эта модель симуляции приводит к комплексному процессу затухания, огибающая которого в целом не распределена Релея. Следовательно, чтобы быть верными модели симуляции, мы не можем просто сгенерировать канал Релея с bi-Гауссовым Допплеровским спектром. Вместо этого мы генерируем два независимых канала Релея, каждый со сдвинутым по частоте Гауссовым Допплеровским спектром, масштабируем их по усилению и добавляем их вместе, чтобы получить модель канала Ваттерсона с би-Гауссовым Допплеровским спектром. Для простоты моделируем канал Ваттерсона только с одним контактом.
Сдвинутый по частоте Гауссов Доплеровский спектр можно рассматривать как двухгауссов Доплеровский спектр, в котором присутствует только одна Гауссова функция (вторая функция, имеющая нулевой коэффициент усиления степени). Следовательно, чтобы эмулировать сдвинутый по частоте Гауссов Допплеровский спектр каждого магнитоионного компонента, мы создадим двухГауссову Допплеровскую структуру, так что одна из двух Гауссовых функций имеет заданные сдвиг частоты и стандартное отклонение, в то время как другая имеет нулевой коэффициент усиления степени.
Первый магнитоионный компонент имеет Гауссов доплеровский спектр со стандартным отклонением sGauss1
, сдвиг частоты fGauss1
, и степень gGauss1
. Bi-Гауссова доплеровская структура dopplerComp1
построена таким образом, что вторая Гауссова функция имеет нулевой коэффициент степени (ее стандартное отклонение и центральная частота, следовательно, нерелевантны и принимают значения по умолчанию), в то время как первая Гауссова функция имеет нормализованное стандартное отклонение sGauss1/fd
и нормированный сдвиг частоты fGauss1/fd
, где коэффициент нормализации fd
является максимальным доплеровским сдвигом соответствующего канала. В этом примере, поскольку коэффициент усиления второй Гауссовой функции равен нулю, значение, присвоенное усилению первой Гауссовой функции, нерелевантно (оставляем это значение по умолчанию 0,5), потому что связанный системный объект Системы канала, созданный позже, нормализует спектр Доплера, чтобы иметь общую степень 1.
Для получения дополнительной информации о том, как создать bi-Гауссову допплеровскую структуру, смотрите doppler
.
fd = 10; % Chosen maximum Doppler shift for simulation sGauss1 = 2.0; fGauss1 = -5.0; dopplerComp1 = doppler('BiGaussian', ... 'NormalizedStandardDeviations', [sGauss1/fd 1/sqrt(2)], ... 'NormalizedCenterFrequencies', [fGauss1/fd 0], ... 'PowerGains', [0.5 0])
dopplerComp1 = struct with fields:
SpectrumType: 'BiGaussian'
NormalizedStandardDeviations: [0.2000 0.7071]
NormalizedCenterFrequencies: [-0.5000 0]
PowerGains: [0.5000 0]
Чтобы симулировать первый магнитоионный компонент, мы создадим однопутевой Системный объект канала Релея chanComp1
со сдвинутым с частотой Гауссовым Допплеровским спектром, заданным Доплеровской структурой dopplerComp1
. Средний коэффициент пути степени усиления канала равен 1 (0 дБ).
chanComp1 = comm.RayleighChannel( ... 'SampleRate', Rs, ... 'MaximumDopplerShift', fd, ... 'DopplerSpectrum', dopplerComp1, ... 'RandomStream', 'mt19937ar with seed', ... 'Seed', 99, ... 'PathGainsOutputPort', true)
chanComp1 = comm.RayleighChannel with properties: SampleRate: 9600 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true MaximumDopplerShift: 10 DopplerSpectrum: [1x1 struct] Show all properties
Точно так же второй магнитоионный компонент имеет Гауссов доплеровский спектр со стандартным отклонением sGauss2
, сдвиг частоты fGauss2
, и степень gGauss2
. Bi-Гауссова доплеровская структура dopplerComp2
построена таким образом, что вторая Гауссова функция имеет нулевой коэффициент степени (ее стандартное отклонение и центральная частота, следовательно, нерелевантны и принимают значения по умолчанию), в то время как первая Гауссова функция имеет нормализованное стандартное отклонение sGauss2/fd
и нормированный сдвиг частоты fGauss2/fd
(снова его усиление степени нерелевантно).
sGauss2 = 1.0; fGauss2 = 4.0; dopplerComp2 = doppler('BiGaussian', ... 'NormalizedStandardDeviations', [sGauss2/fd 1/sqrt(2)], ... 'NormalizedCenterFrequencies', [fGauss2/fd 0], ... 'PowerGains', [0.5 0])
dopplerComp2 = struct with fields:
SpectrumType: 'BiGaussian'
NormalizedStandardDeviations: [0.1000 0.7071]
NormalizedCenterFrequencies: [0.4000 0]
PowerGains: [0.5000 0]
Чтобы симулировать вторую магнитоионную составляющую, создадим однопутный Системный объект Релейского канала chanComp2
со сдвинутым с частотой Гауссовым Допплеровским спектром, заданным Доплеровской структурой dopplerComp2
.
chanComp2 = comm.RayleighChannel( ... 'SampleRate', Rs, ... 'MaximumDopplerShift', fd, ... 'DopplerSpectrum', dopplerComp2, ... 'RandomStream', 'mt19937ar with seed', ... 'Seed', 999, ... 'PathGainsOutputPort', true)
chanComp2 = comm.RayleighChannel with properties: SampleRate: 9600 PathDelays: 0 AveragePathGains: 0 NormalizePathGains: true MaximumDopplerShift: 10 DopplerSpectrum: [1x1 struct] Show all properties
Мы вычисляем в цикле ниже выхода в канал Ваттерсона в ответ на входной сигнал и храним его в y
. При получении y
, вызов функции на chanComp1
эмулирует эффект первого магнитоионного компонента, в то время как функция вызывает chanComp2
эмулирует эффект второго компонента.
Чтобы получить желаемое усиление степени, gGauss1
и gGauss2
, из каждого магнитоионного компонента нам нужно масштабировать выходной сигнал для каждого магнитоионного компонента на соответствующие им амплитудные усиления sqrt(gGauss1)
и sqrt(gGauss2)
.
Из-за низких доплеровских сдвигов, обнаруженных в окружениях HF, и того факта, что bi-Гауссов доплеровский спектр объединяется из двух объектов, получение измерений для спектра Doppler с помощью встроенной визуализации системных объектов не подходит. Вместо этого мы храним комплексные усиления пути канала и позже вычисляем Допплеровский спектр для каждого пути в командной строке. В приведенном ниже цикле комплексные усиления пути канала получаются путем суммирования (после масштабирования соответствующими усилениями амплитуды) комплексных усилений пути, сопоставленных с каждым магнитоионным компонентом, и затем сохраняются в g
.
gGauss1 = 1.2; % Power gain of first component gGauss2 = 0.25; % Power gain of second component Ns = 2e6; % Total number of channel samples frmLen = 1e3; % Number of samples per frame numFrm = Ns/frmLen; % Number of frames [y, g] = deal(zeros(Ns, 1)); for frmIdx = 1:numFrm x = qpskMod(randi([0 M-1], frmLen, 1)); [y1, g1] = chanComp1(x); [y2, g2] = chanComp2(x); y(frmLen*(frmIdx-1)+(1:frmLen)) = sqrt(gGauss1) * y1 ... + sqrt(gGauss2) * y2; g(frmLen*(frmIdx-1)+(1:frmLen)) = sqrt(gGauss1) * g1 ... + sqrt(gGauss2) * g2; end
Доплеровский спектр оценивают по усилениям комплексного пути и строят график.
hFig = figure; pwelch(g, hamming(Ns/100), [], [], Rs, 'centered'); axis([-0.1 0.1 -80 0]); legend('Simulation');
Теоретический bi-Гауссов Допплеровский спектр наложен на предполагаемый Допплеровский спектр. Мы наблюдаем хорошую подгонку между обоими.
f = -(Rs/2):0.1:(Rs/2); Sd = gGauss1 * 1/sqrt(2*pi*sGauss1^2) * exp(-(f-fGauss1).^2/(2*sGauss1^2)) ... + gGauss2 * 1/sqrt(2*pi*sGauss2^2) * exp(-(f-fGauss2).^2/(2*sGauss2^2)); hold on; plot(f(Sd>0)/1e3, 10*log10(Sd(Sd>0)), 'k--'); legend('Simulation', 'Theory');
Рекомендация ITU-R F.1487 задает упрощенные модели канала, используемые в количественной проверке HF-модемов. Эти модели состоят из двух независимо замирающих путей с равной степенью. На каждом пути два магнитоионных компонента приняты с нулевым сдвигом частоты и равным отклонением: следовательно, bi-Гауссов Допплеровский спектр на каждом отводе уменьшается до одного Гауссова Допплеровского спектра, и огибающая комплексного процесса затухания распределена Релеем.
Ниже мы создадим объект канала в соответствии с моделью канала Low Latitudes, Moderate Conditions (LM), указанной в Приложении 3 F.1487 ITU-R, используя stdchan
функция. Задержки пути составляют 0 и 2 мс. Частотный разброс, заданный как удвоенное стандартное отклонение доплеровского спектра Гауссова, составляет 1,5 Гц. Структура доплеровского спектра Гауссова, следовательно, построена с нормализованным стандартным отклонением (1,5/2 )/ fd
, где fd
1 Гц (тип help doppler
для получения дополнительной информации. При использовании stdchan
для построения моделей HF-канала ITU-R, максимальный доплеровский сдвиг должен быть установлен равным 1 Гц: это гарантирует, что Гауссов Допплеровский спектр построенного канала имеет правильное стандартное отклонение.
close(hFig); fd = 1; chanLM = stdchan('iturHFLM', Rs, fd); chanLM.RandomStream = 'mt19937ar with seed'; chanLM.Seed = 9999; chanLM.PathGainsOutputPort = true; chanLM.Visualization = 'Impulse response'
chanLM = comm.RayleighChannel with properties: SampleRate: 9600 PathDelays: [0 0.0020] AveragePathGains: [0 0] NormalizePathGains: true MaximumDopplerShift: 1 DopplerSpectrum: [1x1 struct] Show all properties
Мы включили визуализацию импульсной характеристики в Системный объект канала Релея. Приведенный ниже код моделирует канал LM и визуализирует его полосно-ограниченную импульсную характеристику. По умолчанию отклики канала для одной из четырех выборок визуализируются для более быстрой симуляции. Другими словами, для системы координат длиной 1000 показаны ответы для 1-й, 5-й, 9-й,..., 997-й выборки. Чтобы наблюдать реакцию для каждой выборки, установите SamplesToDisplay
свойство chanLM
на '100%'
.
numFrm = 10; % Number of frames for frmIdx = 1:numFrm x = qpskMod(randi([0 M-1], frmLen, 1)); chanLM(x); end
Теперь мы включаем визуализацию Допплеровского спектра для объекта канала, чтобы наблюдать теоретические и эмпирические Доплеровские спектры Гауссова для первого дискретного пути. Из-за очень низкого доплеровского сдвига может потребоваться некоторое время, чтобы эмпирический спектр сходился к теоретическому спектру.
release(chanLM); chanLM.Visualization = 'Doppler spectrum'; frmLen = 2e6; % Number of samples per frame numFrm = 80; % Number of frames for frmIdx = 1:numFrm x = qpskMod(randi([0 M-1], frmLen, 1)); chanLM(x); end
1 - Рекомендация F.1487 ITU-R «Тестирование HF-модемов с пропускной способностью до около 12 кГц с использованием имитаторов ионосферных каналов», 2000.
2 - C. C. Watterson, J. R. Juroshek, and W. D. Бенсема, «Экспериментальное подтверждение модели HF-канала», IEEE ® Trans. Commun. Технол., т. COM-18, № 6, декабрь 1970.