Matlab中的非循环移位?

时间:2013-06-07 21:16:08

标签: matlab bit-shift

Matlab有circshift循环移动矩阵,即将移出的元素放到另一侧。

是否有一个函数可以通过复制最后一个值或用零填充新空格来移动矩阵?就像C / C ++中的按位移位一样吗?

更新

我知道我自己可以写功能。

2 个答案:

答案 0 :(得分:1)

不,没有。如果有,它将在主Matlab函数列表中的“排序和重塑阵列”下。

http://www.mathworks.com/help/matlab/array-manipulation.html

所以,正如你所说,你需要自己编写。您可以通过沿着维度1编写移位逻辑并在循环中使用shiftdim来旋转矩阵以有效地将其应用于所有请求的移位尺寸,然后返回到原始的尺寸方向,从而可以做到非常简洁的实现。 / p>

答案 1 :(得分:1)

您可以使用circshift并手动将移位的空间设置为零。例如,如果你必须向左移动一个矩阵并将零填充到右边,你可以这样做:

shifted_mat = circshift(mat, -1, 2);
shifted_mat(:, end) = 0;

circshift中的-1和2分别表示移位的大小和方向。您也可以使用它来上下移动。