在C中循环线性进展数据中的聚类计数

时间:2018-10-23 23:36:13

标签: c algorithm cluster-analysis linear

下面针对此问题的最佳算法是什么? 我很好奇看到解决方案/想法stackoverflow社区可以提出来!

  

我们假设定时寄存器“ X”从任意随机数开始计数   在0到5000之间的数字,然后随机地不均匀地增加   率。如果计时器超过5000,它将重置为0并启动   计数过程又一次。每个循环都可以定义为一个集群,并且   “合法”聚类边界设置为0到1000。   “非法”群集的数据点在1001到5000之间。

     

函数count_time()可以从以下位置读取寄存器“ X”的值:   任何给定的时间。

     

您将需要编写一个计算总数的算法函数   法律集群,并将收集每个内部的所有数据点   簇。该算法将拒绝1001之间的数据点   和5000,并且还将跟踪“非法”群集。这个   可以根据需要频繁调用算法功能

下面的代码可能是示例解决方案框架,但是,它可能不是最好的解决方案:

int repeat_every_1ms(void) //this function is called every 1ms
{
    static int unsigned count =  0;
    static int unsigned cluster = 1;
    static int unsigned legal_cluster = 1;
    static int unsigned illegal_cluster =  1;

    if (count >= count_time()) {
         //inside a cluster.it could be either legal or illegal.
         cluster++;
         count = count_time();  // Line 1 
         if(count <= 1000) {
             legal_cluster++;
             /* Start collecting data points (code not given) */
             // more statements...
         }
         count = count_time(); // polling count_time() value beacuse it can be different than Line 1
         if(count > 1000) {
              illegal_cluster++;
         }
    }
    count = count_time(); //get the final timestamp
    return 0;
}

0 个答案:

没有答案