cjd502 发表于 2008-7-30 20:17

查找数组中重复最多的数及次数

如何把一组数中重复最多的那个数找出来?
是哪个数?一共出现多少次?
问题简单,可俺底子薄!谢谢

[ 本帖最后由 sogooda 于 2008-7-31 15:56 编辑 ]

ch_j1985 发表于 2008-7-30 20:48

这组数的范围知道吗?

cjd502 发表于 2008-7-30 20:58

知道,比如说-50-+50之间,数字可能是:-49,-48.-38,-25, -25,3, 6,7, 9,6, 5, 4, 3,4, 50,4, 34,23, 26,19, 12, 2,23,等找出出现频数最多的。

ch_j1985 发表于 2008-7-30 21:30

不知道有没有可以直接实现此功能的命令,如果数字范围不大的话,可以自己编程实现:
(1)用max、min、length(或size)命令求出最大值、最小值以及这组数的长度;
(2)将最大值和最小值之间的数字赋给一个数组A;
(3)用for循环将这组数逐个与数组A中的数进行比较,统计每个数的个数放在另外一个数组B中(下标与数组A的相对应);
(4)用max命令求出数组B中的最大值的下标,亦即出现频数最多的数的下标,由此可得到出现频数最多的数。
此方法可能比较麻烦,算是最原始的做法吧

cjd502 发表于 2008-7-30 21:42

谢谢提醒,我试着做做看,上次同样得到您的帮助,在此向你致谢!并希望后来的学弟学妹想想可能的优化方案!

bainhome 发表于 2008-7-30 21:54

学弟学妹??!!
学哥学姐不让做?:@L老年人也是社会的一部分哦.
a=[-49 -48 -38 -25-25 36 79 6 5 4 3 4 50 4 34 23 26 19 12 2 23];
=hist(a,sort(a));
NumXout=xout(find(n==max(n)))

[ 本帖最后由 bainhome 于 2008-7-30 21:56 编辑 ]

cjd502 发表于 2008-7-30 22:09

不好意思,我1968年出生,现在真笨手笨脚在琢磨Matlab,从年龄上我应该叫学弟学妹。(我打字都是用“一阳指”)!谢谢bainhome

bainhome 发表于 2008-7-30 22:34

哎哟,也是老年人,我还真是你学弟:lol,不过也相去不远,同病相怜, 同贺同贺:victory:

ch_j1985 发表于 2008-7-30 22:47

刚才边洗衣服边想这个问题,印象中好像有简单的命令可以解决,还准备看教材呢
bainhome 前辈一来,问题就迎刃而解啦

rocwoods 发表于 2008-7-31 00:35

我也来凑个热闹:lol ,相比楼主和bainhome我也是学弟啦。貌似年龄等差数列a=[-49 -48 -38 -25-25 36 79 6 5 4 3 4 50 4 34 23 26 19 12 2 23];
=mode(a)
页: [1]
查看完整版本: 查找数组中重复最多的数及次数