shiftdata
Сдвиг данных для выполнения операции над заданным измерением.
| Библиотека |
|
Синтаксис
Вызов функции
Используйте функцию shiftdata в сочетании с функцией unshiftdata, которая возвращает данные в исходное состояние. Эти функции полезны для создания функций, работающих вдоль определенного измерения, таких как filter и sosfilt.
|
Аргументы
Входные аргументы
#
x —
входные данные
вектор | матрица
Details
Входные данные, заданные как вектор или матрица.
| Типы данных |
|
#
dim —
измерение для выполнения операции
положительный скаляр
Details
Измерение для выполнения фильтрации, заданное как целый положительный скаляр.
Если dim не задано, то функция сдвигает первую неединичную размерность в первый столбец и возвращает количество сдвигов в nshifts.
| Типы данных |
|
Выходные аргументы
#
y —
данные после сдвига
вектор | матрица
Details
Данные после сдвига, возвращаемые в виде вектора или матрицы.
#
perm —
перестановка
вектор
Details
Перестановка, использованная для сдвига данных, возвращаемая в виде вектора.
#
nshifts —
количество сдвигов
скаляр
Details
Количество сдвигов, возвращаемое в виде скаляра.
Примеры
Перестановка измерений магического квадрата
Details
Выполним сдвиги в магическом квадрате 3×3, переставив второе измерение в первый столбец. Вернем матрицу в исходное положение с помощью функции unshiftdata.
Зададим магический квадрат 3×3.
import EngeeDSP.Functions: shiftdata
import EngeeDSP.Functions: unshiftdata
x = [2 9 4; 7 5 3; 6 1 8]
3×3 Matrix{Int64}:
8 1 6
3 5 7
4 9 2
Сдвинем матрицу, чтобы работать вдоль второго измерения. Вернем вектор перестановки, количество сдвигов и сдвинутую матрицу.
x, perm, nshifts = shiftdata(x, 2)
(x = [8 3 4; 1 5 9; 6 7 2], perm = (2, 1), nshifts = Any[])
Восстановим матрицу в исходное состояние.
y = unshiftdata(x, perm)
3×3 Matrix{Int64}:
8 1 6
3 5 7
4 9 2
Перегруппировка массива для работы с первым неединичным измерением
Details
Определим данные для сдвига в виде вектора-строки.
import EngeeDSP.Functions: shiftdata
import EngeeDSP.Functions: unshiftdata
x = [1 2 3 4 5]
1×5 Matrix{Int64}:
1 2 3 4 5
Чтобы сдвинуть первое измерение данных, не являющееся единственным элементом в массиве, в первый столбец, не будем задавать dim. Функция shiftdata вернет данные в виде вектора-столбца, вектора перестановок и количества сдвигов.
x, perm, nshifts = shiftdata(x)
(x = [1, 2, 3, 4, 5], perm = Any[], nshifts = 1)
Восстановим данные в исходное состояние.
y = unshiftdata(x, perm, nshifts)
1×5 Matrix{Int64}:
1 2 3 4 5