问候需要使非常大的阵列[2^16 + 1] [2^16 + 1] - 阵列的尺寸太大:(
我需要计算一阶熵(马尔可夫源,就像在这里的维基百科http://en.wikipedia.org/wiki/Entropy_(information_theory)一样,这个信号由16位字组成 这意味着,我必须计算a-> b(符号b出现在a之后)在数据流中出现的频率。这样做只有4个不太重要或4个更重要的比特,我使用了一个二维数组,其中第一个维度是第一个符号,第二个维度是第二个符号。
我的算法看起来像这样
- 读取当前符号
- 数组[prev_symbol] [curr_symbol] ++
- prev_symbol = curr_symbol
- 向前移动1个符号
然后,数组[A] [B]会表示符号b在符号a后出现的次数。
现在,我明白在C中的数组是一个指针递增,以获得确切的价值,就像从数组[10] [10]中获取元素[3] [4]我必须增加指针数组[0] [0 ] [0]乘以(3 * 10 + 4)(存储在数组中的变量的大小)。我明白这个问题一定是2^32的unsigned long类型的元素必须花费太多。
但是,仍然有办法处理它吗?
或者也许有另一种方法来实现这一目标?
数据流中有多少个符号? – 2011-02-02 11:23:40
C *中的数组不是指针*。 – 2011-02-02 11:31:35