声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1357|回复: 3

[编程技巧] 如何特殊形式的向量中是否有循环间隔出现的数字

[复制链接]
发表于 2009-12-12 22:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
现在有一个向量,里面只可能有3个数字,0,1,2,其中0占大多数,现在如何判断这个向量中有1和2轮番出现呢,比如[0 0 0 1 0 2 1 2 0 0 1],1 和2就轮番出现了(1和2中间隔的0就忽略了吧),
b=[0 0 0 1 2 0 1 0 0 1 2] 中,第二个1出现后,2没有接着出现,这种情况就不行,不叫轮番出现了
请问:如何编程实现判断呢,如果是轮番出现,则返回1,没有则返回0
回复
分享到:

使用道具 举报

发表于 2009-12-14 00:15 | 显示全部楼层
  1. function ind=cycle(b)
  2. a=b; a(b==0)=[]; a=diff(a);
  3. if any(a==0), ind=0; else ind=1; end
复制代码


b=[0 0 0 1 0 2 1 2 0 0 1]; ind=cycle(b)
b=[0 0 0 1 2 0 1 0 0 1 2]; ind=cycle(b)

评分

1

查看全部评分

 楼主| 发表于 2009-12-14 21:53 | 显示全部楼层

回复 沙发 ChaChing 的帖子

呵呵,这正想发帖说我已经解决了呢,我的思路跟你的是一样的。不过你的代码比我的简洁,a(b==0)=[]; 这一句让我学习了
发表于 2009-12-15 00:09 | 显示全部楼层
我的想法, 只要可以解决问题, 不管简洁与否, 就是好方法!
其实我已晚一天贴了, 就是希望楼主们能够自己发挥潜力自我解决!
可能回快了些, 害大家少了欣赏LZ的成果
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-3 05:33 , Processed in 0.067880 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表