matlab实现第奇数个元素和第偶数个元素分离的效果
·
最直观的做法是使用for循环,然后用 2n 和 2n+1 区分,但既然是matlab,就要发挥它处理数组的优势。
首先新建一个数组,为了更直观,就用如下这个:
[1;2;3;4;5;6;7;8;9;10]
ans =
1
2
3
4
5
6
7
8
9
10
行向量和列向量差不了太多,这里用的是列向量。
reshape([1;2;3;4;5;6;7;8;9;10],2,5)
ans =
1 3 5 7 9
2 4 6 8 10
这里需要注意reshape要求后面两个参数相乘的结果和原数组元素数目是一样的,即:2*5=10
由于奇偶分离之前的向量是列的,分离之后也把它置成列的会比较好(看起来顺眼),就是个转置的事情罢了。
完整代码:
case1 = reshape([1;2;3;4;5;6;7;8;9;10],2,5);
case1.'
ans =
1 2
3 4
5 6
7 8
9 10
大成功!
我当时想着可不可以换一下,就有了下面这个代码:
case2 = reshape([1;2;3;4;5;6;7;8;9;10],5,2)
case2.'
case2 =
1 6
2 7
3 8
4 9
5 10
ans =
1 2 3 4 5
6 7 8 9 10
后来想清楚了,奇偶分离就要求了2个2个分开,所以reshape的第二个参数必定是2。
如果要推广到一般数组的话,也可以。
% 要求将一维列数组seqQ的第奇数个元素和第偶数个元素分离
% 已知条件:seqQ
% 所求数组:seqFinal(列
seqLen = length(seqQ);
seqTemp = reshape(seqQ,2,seqLen/2);
seqFinal = seqTemp.';
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)