Переупорядочить символы по спиральному шаблону
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
во временной матрице.