gpt4 book ai didi

arrays - 使用 circshift octave/matlab 进行数组操作

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:40 25 4
gpt4 key购买 nike

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

Inward direction

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

enter image description here

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;

split = ceil(numel(A)/2);

n = 2;
A(1:split) = circshift(A(1:split), [0, n]);
A(split+1:end) = circshift(A(split+1:end), [0, -n]);

如果您愿意,可以将最后三行放在一个循环中。也只需将 n 的符号更改为向内或向外

关于arrays - 使用 circshift octave/matlab 进行数组操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26782743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com