如何交换一些向量值?

3次查看(最近30天)
默罕默德人士Mekhalfia
默罕默德人士Mekhalfia 2021年8月24日
编辑: 1月 2021年8月24日
亲爱的所有人
我有下面这个向量
S=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ......]
我想做的是把1和2的位置改为10之后的位置然后是11和12的位置,等等。
所以S将会像S= [3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 11 12 ....]
我希望这个问题得到很好的解释。
提前非常感谢你的贡献

答案(3)

明星黾
明星黾 2021年8月24日
使用 重塑 circshift 功能:
S=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]
S = 1×20
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Sr =重塑(S 10 [])
Sr = 10×2
1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20
老Src = circshift (2, 1)
Src = 10×2
3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 1 11 2 12
结果=重塑(Src 1 [])
结果= 1×20
3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 11 12
注意: “年代” 长度必须是10的整数倍才能生效。如果情况不是这样,则可以使用信号处理工具箱进行重构 缓冲 函数,但是最后一列的结果可能不是期望的结果。

Wan霁
Wan霁 2021年8月24日
编辑:Wan霁 2021年8月24日
一般的回答是
S = 1:10 0;
数= 1;
copyLength = 2;
copyStep = 10;% copyStep > copyLength
数< =元素个数-copyLength(年代)
如果(count = = 1)
copySeg = S(数:计数+ copyLength-1);
年代(数:计数+ copyLength-1) = [];
count = count + copyStep - copyLength;
其他的
copyTemp = S(数:计数+ copyLength-1);
年代(数:计数+ copyLength-1) = copySeg;
copySeg = copyTemp;
count = count + copyStep;
结束
结束
如果(把1 < =元素个数(S))
nLen = count + copyLength -1 - numel(S);
S = [S, ones(1,nLen)];
年代(数:计数+ copyLength-1) = copySeg;
结束

1月
1月 2021年8月24日
编辑:1月 2021年8月24日
%[编辑]现在工作,如果S没有10的倍数元素:
S = 1:25;
= 2;移动2个元素
b = 10;以10为单位的块
v = 0:numel(S) - 1;
K = rem(v + a, b) + 1 + b * floor(v / b);
T = S(k <= numel(S)))
T = 1×23
3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 11 12 23 24 25

s manbetx 845


释放

R2018a

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!