zhangnan3509 发表于 2007-10-24 21:15

一个循环函数,但是运行起来,运算时间太长貌似死循环

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

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

eight 发表于 2007-10-24 22:03

。。。。没那么复杂吧:
>> a=
a =
Columns 1 through 12
   2   3   4   1   5   6   1   4   3   2   0   3
Column 13
   1
>> b = histc(a,min(a):max(a))
b =
   1   3   2   3   2   1   1


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

zhangnan3509 发表于 2007-10-24 22:08

回复 #2 eight 的帖子

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

[ 本帖最后由 zhangnan3509 于 2007-10-24 22:14 编辑 ]

zhlong 发表于 2007-10-24 22:17

回复 #2 eight 的帖子

如何统计数组中所有的值出现的次数 ?

eight 发表于 2007-10-24 22:19

原帖由 zhlong 于 2007-10-24 22:17 发表 http://www.chinavib.com/forum/images/common/back.gif
如何统计数组中所有的值出现的次数 ?

我举的例子就是统计数组所有值出现的次数啊

zhangnan3509 发表于 2007-10-24 22:23

回复 #5 eight 的帖子

我说得是对应位置的啊,
a=

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

x=


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

[ 本帖最后由 zhangnan3509 于 2007-10-24 22:24 编辑 ]

eight 发表于 2007-10-24 22:24

这又有何难呢?
a=;
b = histc(a,min(a):max(a))
=unique(a);
c=b(p); c


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

zhangnan3509 发表于 2007-10-24 22:27

回复 #7 eight 的帖子

佩服啊,我很多函数还不熟悉,你是四两拨千斤啊:handshake

zhlong 发表于 2007-10-24 22:27

回复 #5 eight 的帖子

不好意思,没细看:loveliness:

eight 发表于 2007-10-24 22:28

原帖由 zhangnan3509 于 2007-10-24 22:27 发表 http://www.chinavib.com/forum/images/common/back.gif
佩服啊,我很多函数还不熟悉,你是四两拨千斤啊:handshake

哪有?其实我最近使用 matlab 比较少,很多都忘记了。这个题目我觉得 histc 和 unique 两个函数一起使用的话不太简洁,我想应该还有更好的方法,即只用其中一个就够了

zhangnan3509 发表于 2007-10-24 22:30

回复 #10 eight 的帖子

其实这个已经很简单了啊 比起我的来,我运行了都死机了

zhlong 发表于 2007-10-24 22:52

回复 #10 eight 的帖子

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

eight 发表于 2007-10-24 23:09

原帖由 zhlong 于 2007-10-24 22:52 发表 http://www.chinavib.com/forum/images/common/back.gif
呵呵,eight说的对,下面似乎也可以。
= histc(a,min(a):max(a));
m(n)

恩,正是这个,哈哈

zhangnan3509 发表于 2007-10-24 23:15

回复 #13 eight 的帖子

也不能直接拿来用,我用来处理实际数据的时候 出现了0值,很奇怪啊,最少也是1啊

eight 发表于 2007-10-24 23:25

原帖由 zhangnan3509 于 2007-10-24 23:15 发表 http://www.chinavib.com/forum/images/common/back.gif
也不能直接拿来用,我用来处理实际数据的时候 出现了0值,很奇怪啊,最少也是1啊

不会吧?仔细分析一下吧,m 有可能是0值,但是 m(p) 不会啊
页: [1] 2
查看完整版本: 一个循环函数,但是运行起来,运算时间太长貌似死循环