`circshift` 是 MATLAB 中的一个函数,作用是对数组进行循环移位。具体来说,它会把数组中的元素按照指定的位数进行平移,当移位超出数组边界时,溢出的元素会从另一端循环填补回来。
1. 语法:
**`B = circshift(A, k)`**
- 对数组 `A` 的所有维度进行循环移位,`k` 是移位的位数。正数表示向下或向右移位,负数表示向上或向左移位。
2. **`B = circshift(A, [k1, k2, ...])`**
- 对数组 `A` 的各个维度分别移位,`k1` 是沿第一维的移位量,`k2` 是沿第二维的移位量,依此类推。
2. 示例:
1. **对向量移位:**
```matlab
A = [1, 2, 3, 4, 5];
B = circshift(A, 2);
```
**结果:**
```
B = [4, 5, 1, 2, 3]
```
- 向右移位2个位置,原本在最后的 `4, 5` 被移动到前面,数组其余元素循环向右。
2. **对矩阵移位:**
```matlab
A = [1 2 3; 4 5 6; 7 8 9];
B = circshift(A, [1, 0]);
```
**结果:**
```
B =
7 8 9
1 2 3
4 5 6
```
- 矩阵沿第一维度(行)向下移位1个位置,最下面一行被移动到顶部。
3. **对多维矩阵移位:**
```matlab
A = [1 2 3; 4 5 6; 7 8 9];
B = circshift(A, [0, -1]);
```
**结果:**
```
B =
2 3 1
5 6 4
8 9 7
```
- 矩阵沿第二维度(列)向左移位1个位置,最左边的一列被移动到最右边。
3. 应用场景:
- `circshift` 常用于信号处理、数组旋转等场景中。例如,在信号处理中,用于模拟信号的延迟;在数据分析中,用于循环平移数据。
2220






