matlab数组按照指定顺序重排

需求及实现

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

b = [7\quad 14\quad -10\quad 12]

c = [2\quad 1\quad 3\quad 4]

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

b = [7 14 -10 12];
c = [2 3 1 4];

b1cp = b(:,c)

效果:

b1cp =

    14   -10     7    12

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

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

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

c = [2\quad 1\quad 3\quad 4]

实现命令: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的位置。该需求最终结果为:

b = [-10\quad 7\quad 14\quad 12]

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

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,697评论 1 92
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 13,301评论 0 13
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 7,110评论 0 4
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,999评论 0 9
  • 恨过天、骂过地,唯有自己成李刚 人生而平等,但人活的不平等。 有人的生下来就无忧无虑,不需要多么努力,按部就班就能...
    井冈山豆皮阅读 2,312评论 0 1

友情链接更多精彩内容