Этот пример демонстрирует удар изменения профиля задержки TGac, и это показывает, как люминесцентное освещение влияет на ответ времени канала.
Создайте объект настройки VHT. Установите частоту дискретизации на 80 МГц.
cfgVHT = wlanVHTConfig; fs = 80e6;
Сгенерируйте случайные двоичные данные и создайте форму волны передачи, параметрированную объектом настройки VHT.
d = randi([0 1],8*cfgVHT.PSDULength,1); testWaveform = wlanWaveformGenerator(d,cfgVHT);
Создайте объект канала TGac. Установите профиль задержки на 'Model-A'
, который соответствует плоскому исчезновению. Отключите крупномасштабные исчезающие эффекты.
tgacChan = wlanTGacChannel('SampleRate',fs, ... 'ChannelBandwidth',cfgVHT.ChannelBandwidth, ... 'DelayProfile','Model-A', ... 'LargeScaleFadingEffect','None');
Передайте переданную форму волны через канал TGac.
rxModelA = tgacChan(testWaveform);
Установите профиль задержки на Модель-C, которая соответствует многопутевому каналу с 14 отличными путями и распространением задержки RMS на 30 нс. Максимальное распространение задержки составляет 200 нс, который соответствует полосе пропускания когерентности 2,5 МГц.
release(tgacChan)
tgacChan.DelayProfile = 'Model-C';
Передайте форму волны через канал модели-C.
rxModelC = tgacChan(testWaveform);
Создайте спектр анализатор и используйте его, чтобы визуализировать спектр полученных сигналов.
saScope = dsp.SpectrumAnalyzer('SampleRate',fs, ... 'ShowLegend',true,'ChannelNames',{'Model-A','Model-C'}, ... 'AveragingMethod','Exponential','ForgettingFactor',0.99); saScope([rxModelA rxModelC])
Как ожидалось частотная характеристика сигнала модели-A является плоской через полосу пропускания на 80 МГц. С другой стороны частотная характеристика модели-C варьируется, потому что ее полоса пропускания когерентности намного меньше, чем полоса пропускания канала.
Выпустите канал TGac и установите его профиль задержки на 'Model-D'
. Отключите эффект люминесцентного освещения.
release(tgacChan)
tgacChan.DelayProfile = 'Model-D';
tgacChan.FluorescentEffect = false;
Чтобы лучше проиллюстрировать эффекты Доплера люминесцентного освещения, измените полосу пропускания и частоту дискретизации канала. Сгенерируйте тестовую форму волны из единиц.
tgacChan.ChannelBandwidth = 'CBW20';
fs = 20e6;
tgacChan.SampleRate = fs;
testWaveform = ones(5e5,1);
Чтобы гарантировать воспроизводимость, установите глобальный генератор случайных чисел на фиксированное значение.
rng(37)
Передайте форму волны через канал TGac.
rxSig0 = tgacChan(testWaveform);
Включите эффект люминесцентного освещения. Сбросьте генератор случайных чисел и передайте форму волны через канал.
release(tgacChan) tgacChan.FluorescentEffect = true; rng(37) rxSig1 = tgacChan(testWaveform);
Определите ось времени и задержку фильтра канала.
t = ((1:size(rxSig0,1))'-1)/fs; fDelay = tgacChan.info.ChannelFilterDelay;
Постройте величину полученных сигналов при объяснении задержки фильтра канала.
plot(t(fDelay+1:end),[abs(rxSig0(fDelay+1:end)) abs(rxSig1(fDelay+1:end))]) xlabel('Time (s)') ylabel('Magnitude (V)') legend('Fluorescent Off','Fluorescent On','location','best')
Люминесцентное освещение вводит Доплеровский компонент в дважды частоте сети (120 Гц в США).
Подтвердите, что peaks разделяется приблизительно 0,0083 с (инверсия 120 Гц) путем измерения расстояния между вторым и третьим peaks.
[~,loc] = findpeaks(abs(rxSig1(1e5:4e5))); peakTimes = loc/fs; peakSeparation = diff(peakTimes)
peakSeparation = 0.0085