Matlab中功能模式的问题

时间:2012-02-02 21:21:41

标签: arrays matlab double mode

我在Matlab中有一个名为sample的双数组,如下所示:

 sample = ...
  [0.4375 0.3750 0.5313 0.4375 0.8750 0.3750 0.5313 0.6563 0.3750 0.4375 ...
   0.5313 0.5313 0.8438 0.8438 0.4375 0.5313 0.5313 0.5313 0.4375 0.3750 ...
   0.4375 0.3750 0.3750 0.5313 0.3750 0.8750 0.5313 0.8438 0.4375 0.0313 ...
   0.3750 0.8438 0.8438 0.3750 0.8750 0.8750 0.5313 0.4375 0.8750 1.7813 ...
   0.3750 0.8750 0.3750 0.3750 0.3750 0.4375 0.3750 0.3750 0.8750 0.3750];


whos sample
  Name        Size            Bytes  Class     Attributes
  sample      1x50              400  double   

问题是模式(样本)结果为零,这显然不正确。

2 个答案:

答案 0 :(得分:3)

(这不是一个真正的答案,但超出了我的评论范围。)

我和gnovice有关,很可能是问题,或者你以某种方式重载了mode命令。试试which modeclear mode或重新启动Matlab。


我无法重现,如下所示:

>> sample =[...
    0.4375    0.3750    0.5313    0.4375    0.8750    0.3750    ...
    0.5313    0.6563    0.3750    0.4375    0.5313 ...
    0.5313    0.8438    0.8438    0.4375    0.5313    0.5313    ...
    0.5313    0.4375    0.3750    0.4375    0.3750 ...
    0.3750    0.5313    0.3750    0.8750    0.5313    0.8438    ...
    0.4375    0.0313    0.3750    0.8438    0.8438 ...
    0.3750    0.8750    0.8750    0.5313    0.4375    0.8750    ...
    1.7813    0.3750    0.8750    0.3750    0.3750 ...
    0.3750    0.4375    0.3750    0.3750    0.8750    0.3750];
>> mode(sample)
ans =
                 0.375

如果我添加小的随机数,我可以更改答案......但不能将其设置为零。

>> format short g
>> sample = sample .* (1+100*eps*randn(size(sample)))
sample =
  Columns 1 through 11
       0.4375        0.375       0.5313       0.4375        0.875        0.375       0.5313       0.6563        0.375       0.4375       0.5313
  Columns 12 through 22
       0.5313       0.8438       0.8438       0.4375       0.5313       0.5313       0.5313       0.4375        0.375       0.4375        0.375
  Columns 23 through 33
        0.375       0.5313        0.375        0.875       0.5313       0.8438       0.4375       0.0313        0.375       0.8438       0.8438
  Columns 34 through 44
        0.375        0.875        0.875       0.5313       0.4375        0.875       1.7813        0.375        0.875        0.375        0.375
  Columns 45 through 50
        0.375       0.4375        0.375        0.375        0.875        0.375

>> mode(sample)
ans =
       0.0313

看起来你介于两者之间,因为你的length(unique(sample))已经返回12.为了参考,我得到了

>> length(unique(sample))  %After the initial setup above
ans =
     8


>> length(unique(sample))  %After adding small random perturbations
ans =
    50

答案 1 :(得分:0)

由于MATLAB文档明确指出“模式函数对于离散或粗略舍入的数据最有用。连​​续概率分布的模式被定义为其密度函数的峰值。将模式函数应用于该分布的样本是不太可能提供对峰值的良好估计;计算直方图或密度估计并计算该估计的峰值会更好。“

这并不能解释为什么你得到0的结果,但它应该提醒你不要依赖mode命令来获取浮点数据。我想知道如果将sample变量中的值转换为整数并应用mode命令,将会得到什么。