Matlab -- circshift函數用法


循環平移數組

語法

說明

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

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM