工具/软件:Code Composer Studio
您好!
在 MRR 演示中、有一个函数转换 SNRdBToVar、定义如下:
浮点转换 SNRdBToVar (uint16_t SNRdB、uint16_t bitW、uint16_t n_samples、浮点分辨率)
{
fVar、rvar;
float scaleFac =(n_samples*resolution);
浮点 resThresh = 2 *分辨率*分辨率;//问题2
float invSNRlin = antilog2 (-SNRdB、bitW)* 2;//我们假设我们的估算器比 CRLB 差3dB。
/*频率估算的 CRLB */
fVar =(float) invSNRlin *(6.0f/((2.0f*PI_)*(2.0f*PI_))*沉淀((n_samples*n_samples - 1));
/*使用比例因子转换为参数差异。*/
rvar = fVar* scaleFac * scaleFac;//问题1
如果(RVAR < resThresh) //问题3
{
RVAR = RESThresh;
}
返回 RVAR;
}
1.变量 scaleFac 是比例因子,为什么引入该变量?
resThresh 变量等于2 *分辨率*分辨率、这意味着什么?
获取变量 RVAR 后、为什么 RVAR 与 resThresh 进行比较?
一般而言、条件 RVAR < resThresh 在所有情况下都几乎可以满足、根据以下公式、可以使用 Beacuse:
rvar = fVar* scaleFac * scaleFac
=(float) invSNRlin *(6.0f/((2.0f*PI_)*(2.0f*PI_))*沉淀((n_samples*n_samples-1)))*(n_samples*resolution)*(n_samples*resolution)
=invSNRLIN*(3.0F/(2.0f*PI_)*(2.0f*PI_))*沉淀((n_samples*n_samples-1))*n_samples*n_samples*(2 *分辨率*分辨率)
因为沉淀((n_samples*n_samples-1))*n_samples*n_samples≈1:
≈invSNRL林*(3.0F/(2.0f*PI_)*(2.0f*PI_))*(2 *分辨率*分辨率)
=invSNRL林*(3.0F/(2.0f*PI_)*(2.0f*PI_))* resThresh
因为 invSNRLin<1:
=> RVAR <(3.0F/(2.0f*PI_)*(2.0f*PI_))* resThresh
因为(3.0F/(2.0f*PI_)*(2.0f*PI_))<1:
=> RVAR< RESThresh
这似乎是不必要的。
谢谢、
此致、
按比例