2

我正在尝试使用 find 命令在数字的特定索引处启动 circshift 我该怎么做?请参阅下面的示例代码

%test find and circshift
a=[3:2:11]

%find index of number and start there
a_ind=find(a==9)
b=circshift(a,[0 a_ind])

我得到一个 =[3 5 7 9 11]

a_ind = 4

b = [ 5 7 9 11 3]

我试图让 circshift (b) 从 9 开始并有 b = [9 11 3 5 7]

请注意 a_ind 会有所不同,所以我不能每次都从 2 开始 circshift

4

2 回答 2

4

这是另一个对向量有用的选项:

a=[3:2:11];
shift = find(a==9);

circshift(a(:), -shift + 1)'

a(:)保证你有一个列向量并circshift在行维度上移动,即它需要一个列向量。然后在最后再次转置以恢复您的行向量。您想左移,因此必须指定负移。

于 2013-07-30T10:21:00.800 回答
2

我想你想要

>> circshift(a,[0 (length(a)-a_ind+1)])
ans =

    9   11    3    5    7

如果我尝试使用不同的向量a

>> a=[3:1:11]
a =

    3    4    5    6    7    8    9   10   11

>> a_ind=find(a==9)
a_ind =  7
>> circshift(a,[0 (length(a)-a_ind+1)])
ans =

    9   10   11    3    4    5    6    7    8
于 2013-07-30T10:11:39.923 回答