第52章 破壁
  於颖的matlab代码在当天凌晨发到了左城邮箱里。
  三千多行,注释写得很规范——这是於颖做事的风格,任何交给別人的东西都整理得乾乾净净。左城花了两个小时通读了一遍,把循环平稳特徵检测的数学核心提炼出来。
  核心思想並不复杂——通信信號天然具有周期平稳特性,比如载波频率、符號速率、帧结构都会在信號的二阶统计量中產生周期性的特徵峰。通过计算信號的循环自相关函数,可以在极低信噪比下把目標信號从噪声中分离出来,同时识別出信號的调製类型和占用带宽。
  优雅。左城看完数学推导后在心里给了这个评价。
  但问题也很明显——循环自相关函数的计算量是信號长度的平方级別。於颖的matlab仿真在pc上跑一个频谱感知周期需要四百毫秒,而天穹终端的嵌入式平台算力不到pc的十分之一。直接移植的话,单次感知需要四秒以上,远超实时性要求的五十毫秒。
  差了將近两个数量级。
  左城关掉matlab代码,打开了一个空白文档,开始写自己的方案。
  他不需要复製於颖的实现,他需要的是把这个算法“翻译“成嵌入式平台能跑得动的形態。
  这正是他的融合级叶片“嵌入式智能信道处理“赋予他的能力——三年等效的工程经验,让他对嵌入式平台的每一寸算力都了如指掌。
  第一刀砍在计算精度上。循环自相关的全精度计算需要浮点运算,但嵌入式平台的定点运算单元速度是浮点的八倍。左城推导了一套十六位定点化方案,把关键的乘累加操作全部转为定点,精度损失控制在零点五个db以內,这对频谱感知来说完全可以接受。
  这一刀砍掉了百分之六十的计算量。
  第二刀砍在数据规模上。循环自相关需要对整段信號做二维扫描,但並不是所有的循环频率都有意义——卫星信號的载波频率和符號速率是已知的,可以预先计算出有限个候选循环频率,只在这些频率点上做检测。
  这一刀又砍掉了百分之七十。
  两刀下去,总计算量压缩到了原来的百分之十二。四百毫秒乘以零点一二,等於四十八毫秒。
  卡在五十毫秒的线上,刚好够。