最直观的做法是使用for循环,然后用 2n 和 2n+1 区分,但既然是matlab,就要发挥它处理数组的优势。
首先新建一个数组,为了更直观,就用如下这个:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13[1;2;3;4;5;6;7;8;9;10] ans = 1 2 3 4 5 6 7 8 9 10
行向量和列向量差不了太多,这里用的是列向量。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13reshape([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
由于奇偶分离之前的向量是列的,分离之后也把它置成列的会比较好(看起来顺眼),就是个转置的事情罢了。
完整代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14case1 = 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
大成功!
我当时想着可不可以换一下,就有了下面这个代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25case2 = 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。
如果要推广到一般数组的话,也可以。
复制代码
1
2
3
4
5
6
7% 要求将一维列数组seqQ的第奇数个元素和第偶数个元素分离 % 已知条件:seqQ % 所求数组:seqFinal(列 seqLen = length(seqQ); seqTemp = reshape(seqQ,2,seqLen/2); seqFinal = seqTemp.';
最后
以上就是顺利眼睛最近收集整理的关于matlab实现第奇数个元素和第偶数个元素分离的效果的全部内容,更多相关matlab实现第奇数个元素和第偶数个元素分离内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复