MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
 

Обработка сигналов и изображений\Communications Toolbox

Список функций CommunicationsToolbox: Низкоуровневые функции помехоустойчивого кодирования и декодирования

  В оглавление \ К следующему разделу \ К предыдущему разделу
HELINTRLV
Сверточное перемежение со спиральным сканированием

Синтаксис:

intrlved = helintrlv(data,col,ngrp,stp)
[intrlved,state] = helintrlv(data,col,ngrp,stp)
[intrlved,state] = helintrlv(data,col,ngrp,stp,init_state)

Описание:

intrlved = helintrlv(data,col,ngrp,stp)

Переставляет элементы входного массива data, заполняя массив с бесконечным количеством строк по спирали и затем считывая его содержимое по строкам. Если входной параметр data является вектором, он должен содержать cols*ngrp элементов. Если входной параметр data является матрицей, она должна содержать cols*ngrp строк; ее столбцы обрабатываются независимо.

Операции, производимые функцией, можно представить как заполнение внутреннего промежуточного массива. Этот массив имеет col столбцов и неограниченное число строк, нумеруемых как 1, 2, 3 и т. д. Функция разделяет col*ngrp входных символов на col групп, в каждую из которых входит ngrp символов, следующих друг за другом. Затем символы k-й группы размещаются в промежуточном массиве вдоль столбца k, начиная со строки 1 + (k - 1)*stp. Элементы массива, не заполненные входными символами, по умолчанию имеют нулевые значения. Наконец, функция формирует выходной сигнал intrlved длиной col*ngrp символов, поочередно считывая из промежуточного массива ngrp первых строк. При этом некоторые выходные символы имеют принятые по умолчанию нулевые значения, а часть входных символов так и не появляется на выходе.

[intrlved,state] = helintrlv(data,col,ngrp,stp)

Дополнительно возвращает структуру state, в которой хранится заключительное состояние промежуточного массива. Точнее, в поле state.value хранятся символы, не использованные при формировании выходного сигнала.

[intrlved,state] = helintrlv(data,col,ngrp,stp,init_state)

В данном варианте синтаксиса промежуточный массив инициализируется значениями из поля структуры init_state.value. Дополнительный входной параметр init_state должен быть структурой; как правило, здесь используется значение выходного параметра state, полученное при предыдущем вызове той же самой функции. К соответствующему деперемежителю данный параметр не имеет отношения. В данном случае часть выходных символов имеет принятые по умолчанию нулевые значения, часть представляет собой входные символы из массива data и еще часть является начальными значениями из поля структуры init_state.value.

Примеры

В приведенном ниже примере производится перестановка чисел от 1 до 24.

    % Производим перемежение, сохраняем состояние внутреннего массива
    [i1,state] = helintrlv([1:12]',3,4,1);
    % Еще одна операция перемежения, при которой восстанавливается 
    % состояние перемежителя, полученное после предыдущей операции
    i2 = helintrlv([13:24]',3,4,1,state);
    disp('Данные, подвергаемые перемежению:')
    disp([i1,i2]')
    disp('Символы, не попавшие на выход после первой операции перемежения:')
    state.value{:}

При двух вызовах функции helintrlv она создает промежуточные массивы, содержащие по три столбца. Массив при первом вызове:

    [1  0  0;
     2  5  0;
     3  6  9;
     4  7 10;
     0  8 11;
     0  0 12]

Массив при втором вызове:

    [13  8 11;
     14 17 12;
     15 18 21;
     16 19 22;
      0 20 23;
      0  0 24]

В массиве, созданном при втором вызове, элементы, равные 8, 11 и 12 - это символы, не попавшие на выход при первом вызове функции. Используя дополнительный входной параметр init_state при втором вызове функции, мы заставляем ее использовать эти значения вместо принятых по умолчанию нулевых величин.

Ниже показан результат работы данного примера. (Обрабатываемые данные представляли собой матрицу, вытянутую по вертикали; для удобства отображения она транспонирована.) Результат перемежения - это первые четыре строки промежуточных массивов, показанных выше. Обратите внимание на следующее:

  1. часть символов в первой половине выходного сигнала имеет принятые по умолчанию нулевые значения;
  2. часть символов во второй половине выходного сигнала при первом вызове функции helintrlv не попала на выход, оставшись в промежуточном массиве;
  3. несколько входных символов (20, 23 и 24) так и не появились на выходе.

Данные, подвергаемые перемежению:

    Columns 1 through 10 
       1     0     0     2     5     0     3     6     9     4
      13     8    11    14    17    12    15    18    21    16
    Columns 11 through 12 
       7    10
      19    22

Символы, не попавшие на выход после первой операции перемежения:

    ans =
         []

    ans =
         8

    ans =
        11    12

Также данная функция используется в примере, приведенном на странице с описанием функции heldeintrlv.

Сопутствующие функции: heldeintrlv

  В оглавление \ К следующему разделу \ К предыдущему разделу

 

Поиск по сайту:

Система Orphus

Яндекс.Метрика