-4

我认为应该有一个算法来解决这个问题,所以我希望有人可以帮助我。

我想找出一个度量标准,该度量标准在唯一数字的数量和给定序列的两个连续元素之间的转换方面显示多样性。例如,

sequence-1 = [1,1,2,2,3,3]
sequence-2 = [1,1,1,1,2,2]
sequence-3 = [1,2,3,1,3,2]
sequence-4 = [2,2,2,2,2,2]

如果我根据该指标进行比较,结果应如下所示:

sequence-3 > sequence-1 > sequence-2 > sequence-4 

基本上,获得该结果的标准可能类似于:

transistion_changes for sequence-1: 2 (1->2, 2->3)
transistion_changes for sequence-2: 1 (1->2)
transistion_changes for sequence-3: 5 (1->2, 2->3, 3->1, 1->3, 3->2)
transistion_changes for sequence-4: 0 

文献中是否有算法做同样的事情?

4

2 回答 2

1

为了这个简单的目的,您可以设计一个FIR滤波器,并对结果求和。这种方式应该类似于计算信号高频段的能量。

比方说:

y(n) = x(n) - 1/2 * x(n-1) + 1/3 * x(n-2)

无论如何,您应该在另一个 StackExchange 站点(例如数学站点)中提出该问题。

于 2013-10-19T22:27:21.927 回答
1
int count = 0;
for (int i = 1; i < len; i++) if (sequence[i] != sequence[i - 1]) count++;

正确的?

或类似的东西

double count = 0.0;

for (int i = 1; i < len; i++) {
    for (int k = 1; k < 3; k++) {
        if (i - k >= 0) {
            count += abs(sequence[i] - sequence[i - k]) / k;
        }
    }
}

对于以下情况:

  • 序列 { 2, 2, 2, 2, 2, 2 },计数 == 0.0
  • 序列 { 1, 2, 1, 2, 1, 2 },计数 == 5.0
  • 序列 { 1, 2, 3, 4, 5, 6 },计数 == 9.0
  • 序列 { 1, 9, 2, 11, -3, 7 },计数 == 53.0

非常基本的指标,但有效。

于 2013-10-19T22:17:51.423 回答