exponenta event banner

Трехканальный вейвлет-трансмультиплексор

В этом примере показано, как восстановить три независимых комбинированных сигнала, передаваемых по одной линии связи с использованием вейвлет-трансмультиплексора (WTM). Пример иллюстрирует свойство идеальной реконструкции дискретного вейвлет-преобразования (DWT).

Введение

Этот WTM объединяет три исходных сигнала для передачи по одной линии связи, затем разделяет три сигнала на приемном конце канала. Пример демонстрирует трехканальный трансмультиплексор, но способ может быть расширен до произвольного числа каналов.

Работа WTM аналогична работе мультиплексора в частотной области (FDM) в нескольких отношениях. В FDM входные сигналы основной полосы частот фильтруются и модулируются в соседние полосы частот, суммируются вместе, затем передаются по одной линии связи. На приемном конце передаваемый сигнал фильтруется для разделения соседних частотных каналов, и сигналы демодулируются обратно в основную полосу частот. Фильтры также должны сильно ослаблять соседний сигнал, чтобы обеспечить резкий переход от полосы пропускания фильтра к его полосе останова. Этот этап ограничивает величину перекрестных помех или утечки сигнала из одной полосы частот в следующую. Кроме того, FDM часто использует неиспользуемый диапазон частот между тремя модулированными диапазонами частот, известный как защитный диапазон, чтобы ослабить требования к фильтрам FDM.

В WTM фильтрация, выполняемая синтезирующими и анализирующими вейвлет-фильтрами, аналогична стадиям фильтрации в FDM, и интерполяция на стадии синтеза эквивалентна частотной модуляции. С точки зрения частотной области вейвлет-фильтры являются довольно плохими спектральными фильтрами по сравнению с фильтрами, требуемыми для реализации FDM, проявляющими медленные переходы от полосы пропускания к полосе останова и обеспечивающими значительное искажение их отклика. Что делает WTM особенным, так это то, что фильтры анализа и синтеза вместе полностью отменяют искажения фильтра и сглаживание сигнала, создавая идеальную реконструкцию входных сигналов и, таким образом, идеальное извлечение мультиплексированных входов. Идеальная спектральная эффективность может быть достигнута, поскольку защитная полоса не требуется. Практические ограничения в реализации канальных фильтров создают внеполосные утечки и искажения. В обычном подходе FDM каждый канал в одной и той же системе связи требует своего собственного фильтра и подвержен перекрестным помехам со стороны соседних каналов. В способе WTM требуется только один полосовой фильтр для всего канала связи, в то время как взаимные помехи канала к каналу устраняются.

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

Инициализация

Создание и инициализация системных объектов перед их использованием в цикле обработки имеет решающее значение для достижения оптимальной производительности.

% Initialize variables used in the example such as the standard deviation of
% the channel noise.
load dspwlets;    % load filter coefficients and input signal
NumTimes = 14;    % for-loop iterations
stdnoise = .2^.5; % standard deviation of channel noise

Создайте объект sine wave System для генерации сигнала канала 1.

sine = dsp.SineWave('Frequency',       fs/68, ...
                     'SampleRate',      fs, ...
                     'SamplesPerFrame', fs*2);

Создайте поток генератора случайных чисел для шума канала.

strN = RandStream.create('mt19937ar','seed',1);

Создайте объект chirp System для генерации сигнала канала 2.

chirpSignal = dsp.Chirp( ...
    'Type', 'Swept cosine', ...
    'SweepDirection', 'Bidirectional', ...
    'InitialFrequency', fs/5000, ...
    'TargetFrequency', fs/50, ...
    'TargetTime', 1000, ...
    'SweepTime', 1000, ...
    'SampleRate', 1/ts, ...
    'SamplesPerFrame', fs);

Создайте и настройте объект System банка фильтров диадического анализа для разложения сигнала в поддиапазонах.

dyadicAnalysis = dsp.DyadicAnalysisFilterBank( ...
    'CustomLowpassFilter', lod, ...
    'CustomHighpassFilter', hid, ...
    'NumLevels', 2 );

Создайте три системных объекта для вставки задержек в каждый канал, чтобы компенсировать системную задержку, введенную вейвлет-компонентами.

delay1 = dsp.Delay(4);
delay2 = dsp.Delay(6);
delay3 = dsp.Delay(6);

Создайте и настройте объект System банка фильтров диадического синтеза для восстановления сигнала из различных поддиапазонов сигнала.

dyadicSynthesis = dsp.DyadicSynthesisFilterBank( ...
    'CustomLowpassFilter',[0 lor], ...
    'CustomHighpassFilter',[0 hir], ...
    'NumLevels', 2 );

Создание области времени Системные объекты для печати исходных, восстановленных и ошибочных сигналов.

scope1 = timescope( ...
  'Name', 'Three Channel WTM: Original (delayed)', ...
  'SampleRate', fs, ...
  'TimeSpanSource','property', ...
  'TimeSpan', 8, ...
  'YLimits', [-2 2], ...
  'ShowLegend', true);
pos = scope1.Position;
pos(3:4) = 0.9*pos(3:4);
scope1.Position = [pos(1)-1.1*pos(3) pos(2:4)];

scope2 = timescope(...
  'Name', 'Three Channel WTM: Reconstructed', ...
  'Position', pos, ...
  'SampleRate', fs, ...
  'TimeSpanSource', 'property', ...
  'TimeSpan', 8, ...
  'YLimits', [-2 2], ...
  'ShowLegend', true);

scope3 = timescope(...
  'Name', 'Three Channel WTM: Error', ...
  'Position', [pos(1)+1.1*pos(3) pos(2:4)], ...
  'SampleRate', fs, ...
  'TimeSpanSource','property', ...
  'TimeSpan', 8, ...
  'YLimits', [-5e-11 5e-11], ...
  'ShowLegend', true);

% Create variable for Channel 3 signal.
Tx_Ch3 = [ones(35,1);zeros(45,1)];   % Generate the Channel 3 signal

Цикл обработки потока

Создайте цикл обработки для моделирования трехканального трансмультиплексора. В этом цикле используются созданные выше системные объекты.

for ii = 1:NumTimes
    Tx_Ch1 = sine() + ...
        stdnoise*randn(strN,fs*2,1);      % Generate Channel 1 signal
    Tx_Ch1_delay = delay1(Tx_Ch1);

    Tx_Ch2 = chirpSignal();                % Generate Channel 2 signal
    Tx_Ch2_delay = delay2(Tx_Ch2);

    Tx_Ch3_delay = delay3(Tx_Ch3); % Delayed Channel 3 signal

    % Concatenate the three channel signals
    Tx = [Tx_Ch1; Tx_Ch2; Tx_Ch3];

    % Synthesis stage equivalent to frequency modulation.
    y = dyadicSynthesis(Tx);

    % Analysis stage
    Rx = dyadicAnalysis(y);

    % Separate out the three channels
    Rx_Ch1 = Rx(1:160);
    Rx_Ch2 = Rx(161:240);
    Rx_Ch3 = Rx(241:320);

    % Calculate the error between TX and RX signals
    err_Ch1 = Tx_Ch1_delay - Rx_Ch1;
    err_Ch2 = Tx_Ch2_delay - Rx_Ch2;
    err_Ch3 = Tx_Ch3_delay - Rx_Ch3;

    % Plot the results.
    scope1(Tx_Ch1_delay, Tx_Ch2_delay, Tx_Ch3_delay);
    scope2(Rx_Ch1, Rx_Ch2, Rx_Ch3);
    scope3(err_Ch1, err_Ch2, err_Ch3);
end

Резюме

В этом примере вы использовали DyadicAnalysisFilterBank и DyadicSynthesisFilterBank Системные объекты для реализации вейвлет-трансмультиплексора. Совершенное свойство реконструкции вейвлет-фильтров анализа и синтеза обеспечивает совершенное извлечение мультиплексированных входов.