您的位置:首页 > 其它

circshift 函数详解

2016-04-20 18:41 483 查看
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的数组:

123
456
789
若B=circshif(A,1)时,结果如下

789
123
456
也就是说,当K=1时,对每列元素进行循环移位,将1,4,7变成7,4,1;2,5,8变成8,2,5;3,6,9变成9,3,6也就是说每列元素逆循环移位,向前移动1位。
而当B=circshif(A,-1)时,结果如下:

456
789
123
即当K=-1时,对每列元素进行顺时针移位,也就是说直接后移。
综上:

当K>0时,每列元素逆时针(向前)移位,当K<0时,顺时针(向后)移位。

那如果K的值比A的行数或列数大呢???如果K的值大于行数或者列数,则移位的结果与K对行数或列数取余所得余数的结果相同。

那么怎么进行行移位呢??

本函数给出两种方法,一个是K值不变,直接令m=2则表示行移位。移位规律与列移位相同。

第二种方法也就是将K变成数组K=[0,k];k表示移位索引。

如果同时对矩阵进行行和列的移位则令K= [col,row],其中col表示列位移,row表示行位移。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: