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

В этом примере показано, как восстановить три независимых объединенных сигнала, переданные по одной линии связи с помощью Трансмультиплексора Вейвлета (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

Создайте Системный объект синусоиды, чтобы сгенерировать Канал 1 сигнал.

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

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

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

Создайте Системный объект щебета, чтобы сгенерировать Канал 2 сигнала.

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

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

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

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

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

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

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

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

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

scope2 = dsp.TimeScope(3, ...
  'Name', 'Three Channel WTM: Reconstructed', ...
  'Position', pos, ...
  'SampleRate', fs, ...
  'TimeSpan', 8, ...
  'YLimits', [-2 2], ...
  'ShowLegend', true, ...
  'TimeSpanOverrunAction', 'Scroll');

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

% 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
release(scope1);
release(scope2);
release(scope3);

Сводные данные

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