Документация Engee

shiftdata

Сдвиг данных для выполнения операции над заданным измерением.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • y, perm, nshifts = shiftdata(x, dim) — сдвигает данные x для перестановки измерения dim в первый столбец, используя ту же перестановку, что и встроенная функция filter. Аргумент perm — это перестановка, используемая функцией.

Используйте функцию shiftdata в сочетании с функцией unshiftdata, которая возвращает данные в исходное состояние. Эти функции полезны для создания функций, работающих вдоль определенного измерения, таких как filter и sosfilt.

Аргументы

Входные аргументы

# x — входные данные
вектор | матрица

Details

Входные данные, заданные как вектор или матрица.

Типы данных

Float32, Float64

# dim — измерение для выполнения операции
положительный скаляр

Details

Измерение для выполнения фильтрации, заданное как целый положительный скаляр.

Если dim не задано, то функция сдвигает первую неединичную размерность в первый столбец и возвращает количество сдвигов в nshifts.

Типы данных

Float32, Float64

Выходные аргументы

# 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