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

unshiftdata

Обратная функция к shiftdata.

Библиотека

EngeeDSP

Синтаксис

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

  • y = unshiftdata(x, perm, nshifts) — восстанавливает данные x, подвергнутые сдвигу с помощью функции shiftdata с перестановкой perm.

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

Аргументы

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

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

Details

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

Типы данных

Float32, Float64

# perm — перестановка
вектор

Details

Перестановка, заданная как вектор.

# nshifts — количество сдвигов
скаляр

Details

Количество сдвигов, заданное как скаляр. Аргумент nshifts возвращает функция shiftdata.

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

# y — восстановленные данные
вектор | матрица

Details

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

Примеры

Перестановка измерений магического квадрата

Details

Выполним сдвиги в магическом квадрате 3×3, переставив второе измерение в первый столбец с помощью функции shiftdata. Вернем матрицу в исходное положение с помощью функции 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