Переупорядочивание символов в спиральном образце
intrlvd = helscanintrlv(data,Nrows,Ncols,hstep)
intrlvd = helscanintrlv(data,Nrows,Ncols,hstep) переставляет элементы в data заполнением временной матрицы элементами по строкам и последующей отправкой содержимого матрицы на выход по спирали. Nrows и Ncols - размеры временной матрицы. hstep - наклон диагонали, то есть величина, на которую увеличивается индекс строки при увеличении индекса столбца на единицу. hstep должно быть неотрицательным целым числом менее Nrows.
Спиральный стиль означает, что функция выбирает элементы вдоль диагоналей временной матрицы. Количество элементов в каждой диагонали точно Ncols, после того, как функция обернется за края матрицы, когда это необходимо. Функция пересекает диагонали так, что индекс строки и индекс столбца увеличиваются. Каждая диагональ после первой начинается на один ряд ниже первого элемента предыдущей диагонали.
Если data является вектором, он должен иметь Nrows*Ncols элементы. Если data - матрица с несколькими строками и столбцами, data должен иметь Nrows*Ncols строки и функция обрабатывают столбцы независимо.
Приведенная ниже команда переставляет вектор с помощью диагоналей двух различных откосов.
i1 = helscanintrlv(1:12,3,4,1) % Slope of diagonal is 1. i2 = helscanintrlv(1:12,3,4,2) % Slope of diagonal is 2.
Выходные данные приведены ниже.
i1 =
Columns 1 through 10
1 6 11 4 5 10 3 8 9 2
Columns 11 through 12
7 12
i2 =
Columns 1 through 10
1 10 7 4 5 2 11 8 9 6
Columns 11 through 12
3 12
В каждом случае функция внутренне создает временную матрицу 3 на 4
[1 2 3 4; 5 6 7 8; 9 10 11 12]
Сформироваться i1, функция формирует каждый наклон - одну диагональ, перемещая один ряд вниз и один столбец вправо. Первая диагональ содержит 1, 6, 11, и 4, в то время как вторая диагональ начинается с 5 потому что это ниже 1 во временной матрице.
Сформироваться i2функция формирует каждый наклон-две диагонали, перемещая два ряда вниз и один столбец вправо. Первая диагональ содержит 1, 10, 7, и 4, в то время как вторая диагональ начинается с 5 потому что это ниже 1 во временной матрице.