我正在尝试同时将数组(外部单元格)的第一个和最后一个单元格向内移动。这是我尝试使用数组进行的内部动画。如内部动画所示。正如您所见,外部单元格同时从两端向内移动。
这里有一张图片,但是动画效果更好,请注意数组可能具有偶数或奇数个单元格。
这里有一张图片,但是动画效果更好,请注意数组可能具有偶数或奇数个单元格。
Inner rotation steps
1 2 3 4 5 6 7
4 1 2 3 6 7 5
3 4 1 2 7 5 6
2) 我试图使用circshift(我认为是最快的方法)同时将数组的中间单元格向外移动。
这里是一个向外的动画,展示了我想要做的事情outward animation。正如您所看到的,信号的中心同时向左右移动。
这是一张图片,但动画能更好地显示,请注意数组可能有偶数或奇数个单元格。
Outer rotation steps
1 2 3 4 5 6 7
2 3 4 1 7 5 6
3 4 1 2 6 5 7
Example: inward
a = (1:7)
y=circshift(A,[0 -2]) %shift end of array inward
3 4 5 6 7 1 2
a = (1:7)
y=circshift(A,[0 2]) %shift beginning of array inward
6 7 1 2 3 4 5
不确定如何使用circshift使中间的单元格向外移动,或者同时使外部的单元格向内移动
我不确定如何从中心开始使用circshift,并将数组向外/向内移动以获得此效果。
请注意,我不是要获取此方程式,我只是想让数组以相同的方式移动。 我正在使用与matlab兼容的octave 3.8.1。
a = 1:7
,那么您想向内移动所有内容,因此在进行一次移动后,您希望得到...? 1 2 3 5 6 7 ?
??
的位置应该填什么呢?如果您有偶数个数字,我猜您希望将1:8
移位为4 1 2 3 6 7 8 5
,对吗?这里提供一些手动计算的数字示例会非常有帮助。 - Dancircshift
。如果你的信号的每一侧都占据矩阵的一列,你可以使用一个函数调用,然后简单地展平它(不过在创建矩阵时你必须反转其中一个信号)。另一种方法是将索引简单地移动到您的信号(也可以是矩阵形式)。 - carandraugcircshift
,如circshift(part1,[0 1])
和circshift(part2,[0 -1])
? - Divakar