我試圖找到最有效的算法來計算位模式的「邊緣」。邊緣表示從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