循環平移數組
語法
說明
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:
https://ww2.mathworks.cn/help/matlab/ref/circshift.html
https://my.oschina.net/u/4357988/blog/3347734