Matlab有circshift
循环移动矩阵,即将移出的元素放在对面。
是否有一个函数可以通过复制最后一个值或用零填充新空间来移动矩阵?像 C/C++ 中的按位移位一样吗?
更新
我知道我可以自己编写函数。
您可能可以circshift
手动使用移位空间并将其设置为零。例如,如果您必须将矩阵向左移动并在右侧填充零,您将执行以下操作:
shifted_mat = circshift(mat, -1, 2);
shifted_mat(:, end) = 0;
中的 -1 和 2circshift
分别表示偏移的幅度和方向。您也可以使用它来上下移动。
不,没有。如果有,它将位于 Matlab 主函数列表中的“排序和重塑数组”下。
http://www.mathworks.com/help/matlab/array-manipulation.html
所以,正如你所说,你需要自己写。您可以通过沿维度 1 编写移位逻辑并shiftdim
在循环中使用来旋转矩阵以有效地将其应用于所有请求的移位维度,然后返回到原始维度方向,从而实现非常简洁的实现。