Compare commits

..

No commits in common. "c6a3e0c1be225ca1f6edea5f517118eef5a4944e" and "972c3fcdd47da0284c988793433c1c3f2ec96124" have entirely different histories.

2 changed files with 41 additions and 54 deletions

View File

@ -77,7 +77,7 @@ BreakBeforeTernaryOperators: true
# 在构造函数的初始化列表的逗号前换行
BreakConstructorInitializersBeforeComma: false
# 每行字符的限制0表示没有限制
ColumnLimit: 80
ColumnLimit: 120
# 描述具有特殊意义的注释的正则表达式,它不应该被分割为多行或以其它方式改变
CommentPragmas: '^ IWYU pragma:'
# 构造函数的初始化列表要么都在同一行,要么都各自一行

87
main.c
View File

@ -7,68 +7,45 @@
uint8_t data_q[GAIN_ARRAY_LEN] = { 0 };
int32_t data_gain_scale[GAIN_ARRAY_LEN] = { 0 };
float data_gain_positive[GAIN_ARRAY_LEN] = {
1.000000000, 1.12201845, 1.25892541, 1.41253754, 1.58489319,
1.77827941, 1.99526231, 2.23872114, 2.51188643, 2.81838293,
3.16227766, 3.54813389, 3.98107171, 4.46683592, 5.01187234,
5.62341325, 6.30957344, 7.07945784, 7.94328235, 8.91250938,
10.00000000, 11.22018454, 12.58925412, 14.12537545, 15.84893192,
17.78279410, 19.95262315, 22.38721139, 25.11886432, 28.18382931,
31.62277660
1.000000000, 1.12201845, 1.25892541, 1.41253754, 1.58489319, 1.77827941, 1.99526231, 2.23872114,
2.51188643, 2.81838293, 3.16227766, 3.54813389, 3.98107171, 4.46683592, 5.01187234, 5.62341325,
6.30957344, 7.07945784, 7.94328235, 8.91250938, 10.00000000, 11.22018454, 12.58925412, 14.12537545,
15.84893192, 17.78279410, 19.95262315, 22.38721139, 25.11886432, 28.18382931, 31.62277660
};
float data_gain_negative[GAIN_ARRAY_LEN] = {
1.000000000, 0.891250938, 0.794328235, 0.707945784, 0.630957344,
0.562341325, 0.501187234, 0.446683592, 0.398107171, 0.354813389,
0.316227766, 0.281838293, 0.251188643, 0.223872114, 0.199526231,
0.177827941, 0.158489319, 0.141253754, 0.125892541, 0.112201845,
0.100000000, 0.089125094, 0.079432823, 0.070794578, 0.063095734,
0.056234133, 0.050118723, 0.044668359, 0.039810717, 0.035481339,
0.031622777
1.000000000, 0.891250938, 0.794328235, 0.707945784, 0.630957344, 0.562341325, 0.501187234, 0.446683592,
0.398107171, 0.354813389, 0.316227766, 0.281838293, 0.251188643, 0.223872114, 0.199526231, 0.177827941,
0.158489319, 0.141253754, 0.125892541, 0.112201845, 0.100000000, 0.089125094, 0.079432823, 0.070794578,
0.063095734, 0.056234133, 0.050118723, 0.044668359, 0.039810717, 0.035481339, 0.031622777
};
uint8_t _util_trans_float_gain_to_fixed_gain(float* float_gain_array,
int32_t* fixed_gain_array,
uint8_t* fixed_gain_q_array,
uint16_t gain_count,
int32_t q_max_scale, uint8_t q_max)
{
uint8_t q_shift = 0;
float data_temp = 0;
int i = 0, j = 0;
for (i = 0; i < gain_count; i++) {
data_temp = float_gain_array[i];
q_shift = 0;
for (j = 0; j < Q_MAX; j++) {
data_temp = data_temp * 2;
if (data_temp > q_max_scale) {
// printf("data temp = %f, gain max = %d, q = %d \r\n", data_temp,
// q_gain_max_scale, j);
break;
}
}
q_shift = (j >= Q_MAX) ? j - 1 : j;
fixed_gain_q_array[i] = q_shift;
fixed_gain_array[i] = (int32_t)(data_temp / 2);
}
return 0;
}
int main(int argc, char** argv)
{
printf("hello world!\r\n");
int i = 0, j = 0;
int32_t q_gain_max_scale = pow(2, Q_MAX + 1);
uint8_t q_shift = 0;
float data_temp = 0;
printf("max q gain scale is %d\r\n", q_gain_max_scale);
printf("\r\n//===============calc positive===========================\r\n");
_util_trans_float_gain_to_fixed_gain(data_gain_positive, data_gain_scale,
data_q, GAIN_ARRAY_LEN,
q_gain_max_scale, Q_MAX);
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
data_temp = data_gain_positive[i];
q_shift = 0;
for (j = 0; j < Q_MAX; j++) {
data_temp = data_temp * 2;
if (data_temp > q_gain_max_scale) {
// printf("data temp = %f, gain max = %d, q = %d \r\n", data_temp, q_gain_max_scale, j);
break;
}
}
q_shift = (j >= Q_MAX) ? j - 1 : j;
data_q[i] = q_shift;
data_gain_scale[i] = (int32_t)(data_temp / 2);
}
printf("int32_t positive_gain_scale_array[%d] = {\r\n", GAIN_ARRAY_LEN);
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
@ -84,9 +61,19 @@ int main(int argc, char** argv)
printf("\r\n//===============calc negative===========================\r\n");
_util_trans_float_gain_to_fixed_gain(data_gain_negative, data_gain_scale,
data_q, GAIN_ARRAY_LEN,
q_gain_max_scale, Q_MAX);
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
data_temp = data_gain_negative[i];
q_shift = 0;
for (j = 0; j < Q_MAX; j++) {
data_temp = data_temp * 2;
if (data_temp > q_gain_max_scale) {
break;
}
}
q_shift = (j >= Q_MAX) ? j - 1 : j;
data_q[i] = q_shift;
data_gain_scale[i] = (int32_t)(data_temp / 2);
}
printf("int32_t negetive_gain_scale_array[%d] = {\r\n", GAIN_ARRAY_LEN);
for (i = 0; i < GAIN_ARRAY_LEN; i++) {