Трехканальный вейвлет

Этот пример показывает, как восстановить три независимых комбинированных сигнала, переданных по одной ссылке связи с помощью Wavelet Transmultiplexer (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);

Создайте системный объект, чтобы сгенерировать сигнал Channel 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 = 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 Системные объекты для реализации Wavelet Transmultiplexer. Совершенное свойство реконструкции фильтров вейвлета анализа и синтеза позволяет совершенствовать экстракцию мультиплексированных входных параметров.