Compare commits

..

2 Commits

Author SHA1 Message Date
c6a3e0c1be update:💄 更新编码格式
update: 更新增益计算为函数
2024-08-01 16:29:41 +08:00
93724b0952 update:💄 更新编码格式 2024-08-01 16:28:37 +08:00
2 changed files with 54 additions and 41 deletions

View File

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

93
main.c
View File

@ -5,47 +5,70 @@
#define Q_MAX (31)
#define GAIN_ARRAY_LEN (31)
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
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
};
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");
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);
}
_util_trans_float_gain_to_fixed_gain(data_gain_positive, data_gain_scale,
data_q, GAIN_ARRAY_LEN,
q_gain_max_scale, Q_MAX);
printf("int32_t positive_gain_scale_array[%d] = {\r\n", GAIN_ARRAY_LEN);
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
@ -61,19 +84,9 @@ int main(int argc, char** argv)
printf("\r\n//===============calc negative===========================\r\n");
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);
}
_util_trans_float_gain_to_fixed_gain(data_gain_negative, data_gain_scale,
data_q, GAIN_ARRAY_LEN,
q_gain_max_scale, Q_MAX);
printf("int32_t negetive_gain_scale_array[%d] = {\r\n", GAIN_ARRAY_LEN);
for (i = 0; i < GAIN_ARRAY_LEN; i++) {