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.';
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值