matlab将数的顺序打乱,matlab数组按照指定顺序重排

需求及实现

直接上例子要说明:比如现在我们有一个b的序列,我们想按照c规定的顺序重排:

math?formula=b%20%3D%20%5B7%5Cquad%2014%5Cquad%20-10%5Cquad%2012%5D

math?formula=c%20%3D%20%5B2%5Cquad%201%5Cquad%203%5Cquad%204%5D

实现命令:b(:,c)

意思:b的所有列元素(第二个参数),按照c给定的顺序重排

b = [7 14 -10 12];

c = [2 3 1 4];

b1cp = b(:,c)

效果:

b1cp =

14 -10 7 12

上面的例子是行向量按照指定的顺序进行重排,同理可以得到列向量按照指定顺序重排:

列元素如下,排列顺序c不变:

math?formula=b%20%3D%20%5B7%3B%2014%3B%20-10%3B%2012%5D

math?formula=c%20%3D%20%5B2%5Cquad%201%5Cquad%203%5Cquad%204%5D

实现命令:b(c,:)

意思:b的所有行元素(第二个参数),按照c给定的顺序重排

b = [7;14;-10;12];

c = [2 3 1 4];

b2cp = b(c,:)

效果:

b2cp =

14

-10

7

12

补充1:如果不用上面的简便写法,用循环如何实现

b = [7 14 -10 12];

c = [2 3 1 4];

b_result = zeros(1,4);

for n = 1:length(b)

b_result(n) = b( c(n) );

end

b_result

补充2:现在需求有所改变,c是对b各个元素调整到指定位置。

意思说明:b的第1个元素调到第2的位置,b的第2个元素调到第3的位置,b的第3个元素调到第1的位置,b的第4个元素调到第4的位置。该需求最终结果为:

math?formula=b%20%3D%20%5B-10%5Cquad%207%5Cquad%2014%5Cquad%2012%5D

没有快速方法,只能直接用循环来写:

b = [7 14 -10 12];

c = [2 3 1 4];

b_result = zeros(1,4);

for n = 1:length(b)

b_result( c(n) ) = b(n); % 这里稍有区别

end

b_result

效果:

b_result =

-10 7 14 12

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值