循环平移数组
语法
说明
Y = circshift(
循环将 A
,K
)A
中的元素平移 K
个位置。如果 K
为整数,则 circshift
沿大小不等于 1 的第一个 A
维度进行平移。如果 K
为整数向量,则每个 K
元素指示 A
的对应维度中的平移量。(示例)
示例:
1. 平移列向量元素
创建一个数值列向量。
A = (1:10)'
A = 10×1
1
2
3
4
5
6
7
8
9
10
使用 circshift
将元素平移三个位置。
Y = circshift(A,3)
Y = 10×1
8
9
10
1
2
3
4
5
6
7
结果 Y
具有与 A
相同的元素,但元素的顺序不同。
2. 平移数组中的字符
创建字符数组并使用 circshift
将字符平移 3 个位置。Y
中的字符具有不同的顺序。
A = 'racecar'; Y = circshift(A,3)
Y = 'carrace'
3. 平移矩阵元素
创建一个左上角包含一块“1”的数值数组。
A = [1 1 0 0; 1 1 0 0; 0 0 0 0; 0 0 0 0]
A = 4×4
1 1 0 0
1 1 0 0
0 0 0 0
0 0 0 0
使用 circshift
将 A
的每一行向右平移一个位置。
Y = circshift(A,1,2)
Y = 4×4
0 1 1 0
0 1 1 0
0 0 0 0
0 0 0 0
将 A
的元素在每个维度中平移一个位置。由“1”构成的群组现在处于矩阵的中心。
Y = circshift(A,[1 1])
Y = 4×4
0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0
要将群组恢复到其原始位置,请使用负平移值对 Y
执行 circshift
。矩阵 X
等效于 A
。
X = circshift(Y,[-1 -1])
X = 4×4
1 1 0 0
1 1 0 0
0 0 0 0
0 0 0 0
输入参数
A
- 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| struct
| table
| cell
复数支持: 是
K
- 平移量
整数标量 | 整数向量
平移量,指定为整数标量或整数向量。
-
如果您指定
K
为整数,但不指定dim
,则circshift
将沿其大小不等于 1 的第一个维度平移。正K
向维度末尾平移,负K
向开头平移。 -
如果将
K
指定为整数向量,则K
中的第 N 个元素指定A
中第 N 个维度的平移量。如果K
中的第 N 个元素为正值,则A
的值将向第 N 个维度的末尾平移。如果第 N 个元素为负值,则值向开头平移。
如果平移量大于 A
中对应维度的长度,则平移操作会绕回到该维度的开头。例如,将 3 元素向量平移 +3 个位置将使其元素重新回到其原始位置。
dim
- 沿其运算的维度
正整数标量
沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个维度。如果指定 dim
,则 K
必须为整数标量。通常,指定 dim = 1
以交换行,指定 dim = 2
以交换列,等等。
a = [1 2 3;4 5 6;7 8 9]; b = [-1 -2 -3; -4 -5 -6;-7 -8 -9]; c = [10 20 30; 40 50 60; 70 80 90]; Hist(:,:,1) = a; Hist(:,:,2) = b; Hist(:,:,3) = c; Hist_1 = circshift(Hist,[0,0,-1]); Hist_2 = circshift(Hist,[1,0,0]); Hist_3 = circshift(Hist,[0,1,0]);
Hist:
Hist_1:
Hist_2:
Hist_3: