我试图找到最有效的算法来计算位模式的“边缘”。边缘表示从0到1或从1到0的变化。我每250 us对每个位进行一次采样,并将其转换为32位无符号变量。在32位字查找“边缘”bitpattern
这是我的算法迄今
void CountEdges(void)
{
uint_least32_t feedback_samples_copy = feedback_samples;
signal_edges = 0;
while (feedback_samples_copy > 0)
{
uint_least8_t flank_information = (feedback_samples_copy & 0x03);
if (flank_information == 0x01 || flank_information == 0x02)
{
signal_edges++;
}
feedback_samples_copy >>= 1;
}
}
它需要至少2或3倍的速度。
为什么和与0x1F的?你忽略了每字节3比特这种方式 – Toad 2009-10-27 13:40:34
我必须在你阅读的时候编辑它; - ] – 2009-10-27 13:42:09
我比我的影子显然更快评论; ^) – Toad 2009-10-27 13:44:03