【发布时间】:2014-11-07 14:29:03
【问题描述】:
1) 我正在尝试同时移动数组的(外部单元格)第一个和最后一个单元格向内。这是我正在尝试对数组执行的操作的内部动画 inward animation。如您所见,外部细胞同时(从末端)向内移动
这是一张图片,但动画显示效果要好得多,请注意该数组可能包含偶数或奇数个单元格
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 ???s 在哪里?如果你有一个偶数,那么我猜你希望1:8转移到4 1 2 3 6 7 8 5对吗?一些手动工作的数字示例在这里会很有帮助 -
@Dan 这正是我的数字问题正是我想要对数组做的事情。 youtu.be/65iu4rajIEQ 和 youtu.be/hHUqWoRmvbk
-
我不确定我完全理解你想要什么,但你可以在矩阵上使用
circshift。如果您的信号的每一侧都采用一列矩阵,您可以使用单个调用,然后简单地将其展平(尽管在创建该矩阵时您必须反转其中一个信号)。另一种方法是简单地将索引移动到您的信号(也是矩阵的形状)。 -
@Dan 我添加了一些数字,希望能有所帮助
-
为什么不将数组分成两部分,然后像
circshift(part1,[0 1])和circshift(part2,[0 -1])一样分别对它们使用circshift?