circshift函数是matlab中表示循环移位的函数,调用形式如下:
B= circshift(A,K,m);
输入参数:A表示待移位的矢量或矩阵;
K表示所移位数,可以是数字,也可以是二维数组,若是数字则可以和m协同作用来决定是行移位还是列 移位
m当K是数字时,m用来决定是行移位还是列移位。默认m是1,当m=1时表示列移位,当m=2时表示行移 位
circshift是一个循环移位函数,A和B分别表示同维度的矩阵或者矢量而K表示移位参数,可以是一个数字(可正可负),也可以是一个二维数组。下面用例子来表示cirshift 的用法。
首先假设A是一个3*3的数组:
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
7 | 8 | 9 |
1 | 2 | 3 |
4 | 5 | 6 |
而当B=circshif(A,-1)时,结果如下:
4 | 5 | 6 |
7 | 8 | 9 |
1 | 2 | 3 |
综上:
当K>0时,每列元素逆时针(向前)移位,当K<0时,顺时针(向后)移位。
那如果K的值比A的行数或列数大呢???如果K的值大于行数或者列数,则移位的结果与K对行数或列数取余所得余数的结果相同。
那么怎么进行行移位呢??
本函数给出两种方法,一个是K值不变,直接令m=2则表示行移位。移位规律与列移位相同。
第二种方法也就是将K变成数组K=[0,k];k表示移位索引。
如果同时对矩阵进行行和列的移位则令K= [col,row],其中col表示列位移,row表示行位移。