声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2538|回复: 21

[编程技巧] 一个循环函数,但是运行起来,运算时间太长貌似死循环

[复制链接]
发表于 2007-10-24 21:15 | 显示全部楼层 |阅读模式

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

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

x
function sum1 = freq(x)
sum1=0
l=length(x);
indices=[]
for i=1:l
   m=x(i);
  for j=1:l
  indices = find(x==m)
  sum1(j)=length(indices)
  end   
end

大家帮我看一下,我是想找到一列数据中每一个数据在这列数据中出现的次数。
但是运行起来总是停不下来,我怀疑是出现了死循环,或者算法有问题,大家能不能帮我指正一下。
回复
分享到:

使用道具 举报

发表于 2007-10-24 22:03 | 显示全部楼层
。。。。没那么复杂吧:

  1. >> a=[2,3,4,1,5,6,1,4,3,2,0,3,1]
  2. a =
  3.   Columns 1 through 12
  4.      2     3     4     1     5     6     1     4     3     2     0     3
  5.   Column 13
  6.      1
  7. >> b = histc(a,min(a):max(a))
  8. b =
  9.      1     3     2     3     2     1     1
复制代码

[ 本帖最后由 ChaChing 于 2009-11-21 16:29 编辑 ]
 楼主| 发表于 2007-10-24 22:08 | 显示全部楼层

回复 #2 eight 的帖子

我的想法是 这列数据每一个数对应的算出 它在整个列数中出现的次数,
比如有1024个数据,对应有1024个值

[ 本帖最后由 zhangnan3509 于 2007-10-24 22:14 编辑 ]
发表于 2007-10-24 22:17 | 显示全部楼层

回复 #2 eight 的帖子

如何统计数组中所有的值出现的次数 ?
发表于 2007-10-24 22:19 | 显示全部楼层
 楼主| 发表于 2007-10-24 22:23 | 显示全部楼层

回复 #5 eight 的帖子

我说得是对应位置的啊,
a=[2,3,4,1,5,6,1,4,3,2,0,3,1]  

对于这个数组 按照我的想法是:返回

x=[2,3,2,3,1,1,3,2,3,2,1,3,3]


2是数组中左边第一个值,那么它出现的次数就出现在x数组的相同位置,以此类推,13个数据在相同位置对应13个返回值

[ 本帖最后由 zhangnan3509 于 2007-10-24 22:24 编辑 ]
发表于 2007-10-24 22:24 | 显示全部楼层
这又有何难呢?

  1. a=[2,3,4,1,5,6,1,4,3,2,0,3,1];
  2. b = histc(a,min(a):max(a))
  3. [m,n,p]=unique(a);
  4. c=b(p); c
复制代码

[ 本帖最后由 ChaChing 于 2009-11-21 16:32 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2007-10-24 22:27 | 显示全部楼层

回复 #7 eight 的帖子

佩服啊,我很多函数还不熟悉,你是四两拨千斤啊:handshake
发表于 2007-10-24 22:27 | 显示全部楼层

回复 #5 eight 的帖子

不好意思,没细看:loveliness:
发表于 2007-10-24 22:28 | 显示全部楼层
原帖由 zhangnan3509 于 2007-10-24 22:27 发表
佩服啊,我很多函数还不熟悉,你是四两拨千斤啊:handshake


哪有?其实我最近使用 matlab 比较少,很多都忘记了。这个题目我觉得 histc 和 unique 两个函数一起使用的话不太简洁,我想应该还有更好的方法,即只用其中一个就够了
 楼主| 发表于 2007-10-24 22:30 | 显示全部楼层

回复 #10 eight 的帖子

其实这个已经很简单了啊 比起我的来,我运行了都死机了
发表于 2007-10-24 22:52 | 显示全部楼层

回复 #10 eight 的帖子

呵呵,eight说的对,下面似乎也可以。
[m n]= histc(a,min(a):max(a));
m(n)

评分

1

查看全部评分

发表于 2007-10-24 23:09 | 显示全部楼层
原帖由 zhlong 于 2007-10-24 22:52 发表
呵呵,eight说的对,下面似乎也可以。
[m n]= histc(a,min(a):max(a));
m(n)


恩,正是这个,哈哈
 楼主| 发表于 2007-10-24 23:15 | 显示全部楼层

回复 #13 eight 的帖子

也不能直接拿来用,我用来处理实际数据的时候 出现了0值,很奇怪啊,最少也是1啊
发表于 2007-10-24 23:25 | 显示全部楼层
原帖由 zhangnan3509 于 2007-10-24 23:15 发表
也不能直接拿来用,我用来处理实际数据的时候 出现了0值,很奇怪啊,最少也是1啊


不会吧?仔细分析一下吧,m 有可能是0值,但是 m(p) 不会啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 17:54 , Processed in 0.063322 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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