我正在尝试使用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]
我正试图让环球(b)从9开始并且有 b = [9 11 3 5 7]
请注意a_ind会有所不同,所以我不能每次都从2开始转载
答案 0 :(得分:4)
这是另一个对矢量有用的选项:
a=[3:2:11];
shift = find(a==9);
circshift(a(:), -shift + 1)'
a(:)
保证您在行维度上进行列向量和circshift
移位,即它需要列向量。然后在最后再次转置以恢复行向量。你想向左移动,所以你必须指定负移位。
答案 1 :(得分: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