📄 c2_std5.c
字号:
}
CV_EML_FOR(0, 0, 0);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,44);
for(c2_i8 = 0; c2_i8 < 138; c2_i8 = c2_i8 + 1) {
c2_dv0[c2_i8] = c2_ma_M1[32 + c2_i8];
}
c2_b_abs((real_T *)c2_dv0, (real_T *)c2_dv1);
for(c2_i9 = 0; c2_i9 < 138; c2_i9 = c2_i9 + 1) {
c2_dv2[c2_i9] = c2_ma_M2[32 + c2_i9];
}
c2_b_abs((real_T *)c2_dv2, (real_T *)c2_dv3);
for(c2_i10 = 0; c2_i10 < 138; c2_i10 = c2_i10 + 1) {
c2_dv4[c2_i10] = c2_dv1[c2_i10] - c2_dv3[c2_i10];
}
c2_b_abs((real_T *)c2_dv4, (real_T *)c2_dv5);
for(c2_i11 = 0; c2_i11 < 138; c2_i11 = c2_i11 + 1) {
c2_t[c2_i11] = c2_dv5[c2_i11];
}
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,45);
for(c2_i12 = 0; c2_i12 < 138; c2_i12 = c2_i12 + 1) {
c2_dv6[c2_i12] = c2_t[c2_i12];
}
c2_max((real_T *)c2_dv6, &c2_b_max_peak_long, &c2_b_long_search_idx);
c2_max_peak_long = c2_b_max_peak_long;
c2_long_search_idx = c2_b_long_search_idx;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,46);
*c2_b_coarse_time_est = (c2_long_search_idx + 32.0) + 32.0;
/* 161 */
/* Frequency error estimation and correction */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,48);
c2_phase.re = 0.0;
c2_phase.im = 0.0;
c2_iii = 1.0;
for(c2_b_iii = 1.0; c2_b_iii <= 16.0; c2_b_iii = c2_b_iii + 1.0) {
c2_iii = c2_b_iii;
CV_EML_FOR(0, 2, 1);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,52);
c2_h_input_signal.re =
c2_b_input_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("input_signal",
(int32_T)_SFD_INTEGER_CHECK("", (((
c2_long_search_idx + 32.0) - c2_D) + c2_iii) - 1.0), 1, 480, 1) - 1].re;
c2_h_input_signal.im =
-c2_b_input_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("input_signal",
(int32_T)_SFD_INTEGER_CHECK("", (((
c2_long_search_idx + 32.0) - c2_D) + c2_iii) - 1.0), 1, 480, 1) - 1].im;
c2_i_input_signal.re =
c2_b_input_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("input_signal",
(int32_T)_SFD_INTEGER_CHECK("", (((
c2_long_search_idx + 32.0) - 2.0 * c2_D) + c2_iii) - 1.0), 1, 480, 1) -
1].re * c2_h_input_signal.re - c2_b_input_signal[(int32_T)
_SFD_EML_ARRAY_BOUNDS_CHECK("input_signal", (int32_T)_SFD_INTEGER_CHECK("",
(((c2_long_search_idx + 32.0) - 2.0 * c2_D) + c2_iii) -
1.0), 1, 480, 1) - 1].im * c2_h_input_signal.im;
c2_i_input_signal.im =
c2_b_input_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("input_signal",
(int32_T)_SFD_INTEGER_CHECK("", (((
c2_long_search_idx + 32.0) - 2.0 * c2_D) + c2_iii) - 1.0), 1, 480, 1) -
1].re * c2_h_input_signal.im + c2_b_input_signal[(int32_T)
_SFD_EML_ARRAY_BOUNDS_CHECK("input_signal", (int32_T)_SFD_INTEGER_CHECK("",
(((c2_long_search_idx + 32.0) - 2.0 * c2_D) + c2_iii) -
1.0), 1, 480, 1) - 1].im * c2_h_input_signal.re;
c2_phase.re = c2_phase.re + c2_i_input_signal.re;
c2_phase.im = c2_phase.im + c2_i_input_signal.im;
}
CV_EML_FOR(0, 2, 0);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,54);
c2_e_x.re = c2_phase.re;
c2_e_x.im = c2_phase.im;
c2_f_x.re = c2_e_x.re;
c2_f_x.im = c2_e_x.im;
c2_Y = c2_f_x.im;
c2_X = c2_f_x.re;
c2_yk = c2_Y;
c2_xk = c2_X;
c2_g_y = c2_yk;
c2_g_x = c2_xk;
c2_h_x = c2_g_x;
c2_b = rtIsNaN(c2_h_x);
if(c2_b) {
goto label_1;
} else {
c2_i_x = c2_g_y;
c2_b_b = rtIsNaN(c2_i_x);
if(c2_b_b) {
goto label_1;
} else {
c2_j_x = c2_g_y;
c2_c_b = rtIsInf(c2_j_x);
if(c2_c_b) {
c2_k_x = c2_g_x;
c2_d_b = rtIsInf(c2_k_x);
if(c2_d_b) {
c2_l_x = c2_g_x;
c2_m_x = c2_l_x;
c2_b_xk = c2_m_x;
c2_n_x = c2_b_xk;
c2_e_b = rtIsNaN(c2_n_x);
if(c2_e_b) {
c2_m_x = rtNaN;
} else if(c2_b_xk > 0.0) {
c2_m_x = 1.0;
} else if(c2_b_xk < 0.0) {
c2_m_x = -1.0;
}
c2_o_x = c2_g_y;
c2_p_x = c2_o_x;
c2_c_xk = c2_p_x;
c2_q_x = c2_c_xk;
c2_f_b = rtIsNaN(c2_q_x);
if(c2_f_b) {
c2_p_x = rtNaN;
} else if(c2_c_xk > 0.0) {
c2_p_x = 1.0;
} else if(c2_c_xk < 0.0) {
c2_p_x = -1.0;
}
c2_r_x = atan2(c2_p_x, c2_m_x);
c2_R = c2_r_x;
goto label_2;
}
}
}
}
if(c2_g_x == 0.0) {
if(c2_g_y > 0.0) {
c2_R = 1.5707963267948966E+000;
} else if(c2_g_y < 0.0) {
c2_R = -1.5707963267948966E+000;
} else {
c2_R = 0.0;
}
} else {
c2_s_x = atan2(c2_g_y, c2_g_x);
c2_R = c2_s_x;
}
goto label_2;
label_1:;
c2_R = rtNaN;
label_2:;
c2_f_x.re = c2_R;
c2_f_x.im = 0.0;
c2_t_x.re = -c2_f_x.re;
c2_t_x.im = -c2_f_x.im;
c2_u_x.re = c2_N * c2_t_x.re;
c2_u_x.im = c2_N * c2_t_x.im;
c2_freq_est = c2_mrdivide(c2_u_x, 1.0053096491487338E+002);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,55);
c2_b_freq_offset->re = 312500.0 * c2_freq_est.re;
c2_b_freq_offset->im = 312500.0 * c2_freq_est.im;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,56);
c2_c_freq_offset.re = c2_b_freq_offset->re - 2.0E+005;
c2_c_freq_offset.im = c2_b_freq_offset->im;
*c2_b_coarse_errfre = c2_abs(c2_c_freq_offset);
/* @f=312.5kHz */
/* detected_packet =input_signal(:,coarse_time_est:length(input_signal)); */
/* off_frequency bu chang */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,62);
for(c2_i13 = 0; c2_i13 < 480; c2_i13 = c2_i13 + 1) {
c2_c_A[c2_i13] = (real_T)c2_i13;
}
for(c2_i14 = 0; c2_i14 < 480; c2_i14 = c2_i14 + 1) {
c2_v_x[c2_i14] = c2_c_A[c2_i14];
}
for(c2_i15 = 0; c2_i15 < 480; c2_i15 = c2_i15 + 1) {
c2_time_base1[c2_i15] = c2_v_x[c2_i15] / 2.0E+007;
}
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,63);
for(c2_i16 = 0; c2_i16 < 480; c2_i16 = c2_i16 + 1) {
c2_dv7[c2_i16] = c2_time_base1[c2_i16];
}
for(c2_i17 = 0; c2_i17 < 480; c2_i17 = c2_i17 + 1) {
c2_time_base2[c2_i17] = c2_dv7[c2_i17];
}
sf_mex_printf("%s =\\n", "time_base2");
for(c2_i18 = 0; c2_i18 < 480; c2_i18 = c2_i18 + 1) {
c2_u[c2_i18] = c2_dv7[c2_i18];
}
c2_h_y = NULL;
sf_mex_assign(&c2_h_y, sf_mex_create(&c2_u, "y", 0, 0U, 1U, 1, 480));
sf_mex_call("disp", 0U, 1U, 14, c2_h_y);
/* create phase_rotation vector */
/* phase_rotation1 = repmat(exp(1i*2*pi*freq_offset*time_base2),n_signals,1); */
/* phase_rotation2=ones(1,480); */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,67);
c2_dc0.re = 0.0 * c2_b_freq_offset->re - -6.2831853071795862E+000 *
c2_b_freq_offset->im;
c2_dc0.im = 0.0 * c2_b_freq_offset->im + -6.2831853071795862E+000 *
c2_b_freq_offset->re;
for(c2_i19 = 0; c2_i19 < 480; c2_i19 = c2_i19 + 1) {
c2_dcv1[c2_i19].re = c2_time_base2[c2_i19] * c2_dc0.re;
c2_dcv1[c2_i19].im = c2_time_base2[c2_i19] * c2_dc0.im;
}
c2_exp((creal_T *)c2_dcv1, (creal_T *)c2_dcv2);
for(c2_i20 = 0; c2_i20 < 480; c2_i20 = c2_i20 + 1) {
c2_phase_rotation2[c2_i20].re = c2_dcv2[c2_i20].re;
c2_phase_rotation2[c2_i20].im = c2_dcv2[c2_i20].im;
}
/* and apply it to the signal; */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,69);
for(c2_i21 = 0; c2_i21 < 480; c2_i21 = c2_i21 + 1) {
c2_offset_sig[c2_i21].re = c2_b_input_signal[c2_i21].re *
c2_phase_rotation2[c2_i21].re - c2_b_input_signal[c2_i21].im *
c2_phase_rotation2[c2_i21].im;
c2_offset_sig[c2_i21].im = c2_b_input_signal[c2_i21].re *
c2_phase_rotation2[c2_i21].im + c2_b_input_signal[c2_i21].im *
c2_phase_rotation2[c2_i21].re;
}
/* syn = ma_M; */
/* coarse_time_est=long_search_idx+20+160; */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,75);
for(c2_i22 = 0; c2_i22 < 1000; c2_i22 = c2_i22 + 1) {
c2_real_syble[c2_i22] = 0.0;
}
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,76);
for(c2_i23 = 0; c2_i23 < 1000; c2_i23 = c2_i23 + 1) {
c2_imag_syble[c2_i23] = 0.0;
}
c2_c_coarse_time_est = *c2_b_coarse_time_est;
c2_iii = c2_c_coarse_time_est;
for(c2_c_iii = c2_c_coarse_time_est; c2_c_iii <= 480.0; c2_c_iii = c2_c_iii +
1.0) {
c2_iii = c2_c_iii;
CV_EML_FOR(0, 3, 1);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,78);
c2_real_syble[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("real_syble",
(int32_T)_SFD_INTEGER_CHECK("", (c2_iii - *c2_b_coarse_time_est) +
1.0), 1, 1000, 1) - 1] =
c2_offset_sig[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("offset_sig",
(int32_T)_SFD_INTEGER_CHECK("iii", c2_iii)
, 1, 480, 1) - 1].re;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,79);
c2_imag_syble[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("imag_syble",
(int32_T)_SFD_INTEGER_CHECK("", (c2_iii - *c2_b_coarse_time_est) +
1.0), 1, 1000, 1) - 1] =
c2_offset_sig[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("offset_sig",
(int32_T)_SFD_INTEGER_CHECK("iii", c2_iii)
, 1, 480, 1) - 1].im;
}
CV_EML_FOR(0, 3, 0);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,81);
for(c2_i24 = 0; c2_i24 < 1000; c2_i24 = c2_i24 + 1) {
c2_b_dreal_syble[c2_i24] = c2_real_syble[c2_i24];
}
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,82);
for(c2_i25 = 0; c2_i25 < 1000; c2_i25 = c2_i25 + 1) {
c2_b_dimag_syble[c2_i25] = c2_imag_syble[c2_i25];
}
/* */
/* */
/* else */
/* thres_idx = sim_consts.ExtraNoiseSamples; */
/* end; */
/* */
/* % check if the packet has been detected too late, */
/* % > sim_consts.extra_noise_samples + 35 index */
/* % is out of range of the fine timing algorithm */
/* % This prevents simulation error for code running out samples */
/* if thres_idx > sim_consts.ExtraNoiseSamples + 35 */
/* thres_idx = 1; */
/* end */
/* */
/* detected_packet = input_signal(:,thres_idx:length(input_signal)); */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,-82);
sf_debug_symbol_scope_pop();
}
static real_T c2_abs(creal_T c2_x)
{
real_T c2_x1;
real_T c2_x2;
real_T c2_a;
real_T c2_b;
real_T c2_b_x;
real_T c2_b_y;
real_T c2_c_x;
real_T c2_c_y;
c2_x1 = c2_x.re;
c2_x2 = c2_x.im;
c2_a = fabs(c2_x1);
c2_b = fabs(c2_x2);
if(c2_a == 0.0) {
return c2_b;
} else if(c2_b == 0.0) {
return c2_a;
} else if(c2_a == c2_b) {
return c2_a * 1.4142135623730951E+000;
} else if(c2_b > c2_a) {
c2_b_x = c2_a;
c2_b_y = c2_b;
c2_a = c2_b_x / c2_b_y;
return c2_b * sqrt(1.0 + c2_a * c2_a);
} else {
c2_c_x = c2_b;
c2_c_y = c2_a;
c2_b = c2_c_x / c2_c_y;
return c2_a * sqrt(1.0 + c2_b * c2_b);
}
}
static real_T c2_mpower(real_T c2_a)
{
real_T c2_b_a;
real_T c2_ak;
c2_b_a = c2_a;
c2_ak = c2_b_a;
return pow(c2_ak, 2.0);
}
static void c2_b_abs(real_T *c2_x, real_T *c2_y)
{
int32_T c2_i26;
real_T c2_k;
real_T c2_b_k;
for(c2_i26 = 0; c2_i26 < 138; c2_i26 = c2_i26 + 1) {
c2_y[c2_i26] = 0.0;
}
for(c2_k = 1.0; c2_k <= 138.0; c2_k = c2_k + 1.0) {
c2_b_k = c2_k;
c2_y[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("y",
(int32_T)_SFD_INTEGER_CHECK("k", c2_b_k), 1, 138, 1) - 1] =
fabs(c2_x[(int32_T)
_SFD_EML_ARRAY_BOUNDS_CHECK("x", (int32_T)_SFD_INTEGER_CHECK("k", c2_b_k),
1, 138, 1) - 1]);
}
}
static void c2_max(real_T *c2_x, real_T *c2_maxval, real_T *c2_indx)
{
int32_T c2_i27;
real_T c2_b_x[138];
int32_T c2_i28;
real_T c2_c_x[138];
real_T c2_extremum;
int32_T c2_itmp;
int32_T c2_ix;
int32_T c2_k;
int32_T c2_b_k;
int32_T c2_a;
real_T c2_d_x;
boolean_T c2_b;
real_T c2_e_x;
boolean_T c2_b_b;
real_T c2_b_maxval;
int32_T c2_b_itmp;
real_T c2_b_indx;
for(c2_i27 = 0; c2_i27 < 138; c2_i27 = c2_i27 + 1) {
c2_b_x[c2_i27] = c2_x[c2_i27];
}
for(c2_i28 = 0; c2_i28 < 138; c2_i28 = c2_i28 + 1) {
c2_c_x[c2_i28] = c2_b_x[c2_i28];
}
c2_extremum = c2_c_x[0];
c2_itmp = 1;
c2_ix = 1;
for(c2_k = 2; c2_k < 139; c2_k = c2_k + 1) {
c2_b_k = c2_k;
c2_a = c2_ix;
c2_ix = c2_a + 1;
c2_d_x = c2_c_x[_SFD_EML_ARRAY_BOUNDS_CHECK("x", _SFD_INTEGER_CHECK("ix",
(real_T)c2_ix), 1, 138, 1) - 1];
c2_b = rtIsNaN(c2_d_x);
if(!c2_b) {
c2_e_x = c2_extremum;
c2_b_b = rtIsNaN(c2_e_x);
if(c2_b_b) {
} else if(c2_c_x[_SFD_EML_ARRAY_BOUNDS_CHECK("x", _SFD_INTEGER_CHECK("ix",
(real_T)c2_ix), 1, 138, 1) - 1] > c2_extremum) {
} else {
goto label_1;
}
c2_extremum = c2_c_x[_SFD_EML_ARRAY_BOUNDS_CHECK("x",
_SFD_INTEGER_CHECK("ix", (real_T)c2_ix), 1, 138, 1) - 1];
c2_itmp = c2_b_k;
label_1:;
}
}
c2_b_maxval = c2_extremum;
c2_b_itmp = c2_itmp;
c2_b_indx = (real_T)c2_b_itmp;
*c2_maxval = c2_b_maxval;
*c2_indx = c2_b_indx;
}
static creal_T c2_mrdivide(creal_T c2_A, real_T c2_B)
{
creal_T c2_y;
creal_T c2_x;
real_T c2_b_y;
creal_T c2_b_x;
real_T c2_c_y;
creal_T c2_xk;
real_T c2_yk;
real_T c2_ar;
real_T c2_ai;
real_T c2_br;
real_T c2_cr;
real_T c2_ci;
c2_x.re = c2_A.re;
c2_x.im = c2_A.im;
c2_b_y = c2_B;
c2_b_x.re = c2_x.re;
c2_b_x.im = c2_x.im;
c2_c_y = c2_b_y;
c2_xk.re = c2_b_x.re;
c2_xk.im = c2_b_x.im;
c2_yk = c2_c_y;
c2_ar = c2_xk.re;
c2_ai = c2_xk.im;
c2_br = c2_yk;
if(c2_ai == 0.0) {
c2_cr = c2_ar / c2_br;
c2_ci = 0.0;
} else {
c2_ci = c2_ai / c2_br;
c2_cr = c2_ar / c2_br;
}
c2_y.re = c2_cr;
c2_y.im = c2_ci;
return c2_y;
}
static void c2_exp(creal_T *c2_x, creal_T *c2_b_x)
{
int32_T c2_i29;
real_T c2_k;
real_T c2_b_k;
creal_T c2_xk;
real_T c2_r;
for(c2_i29 = 0; c2_i29 < 480; c2_i29 = c2_i29 + 1) {
c2_b_x[c2_i29].re = c2_x[c2_i29].re;
c2_b_x[c2_i29].im = c2_x[c2_i29].im;
}
for(c2_k = 1.0; c2_k <= 480.0; c2_k = c2_k + 1.0) {
c2_b_k = c2_k;
c2_xk.re = c2_b_x[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("x",
(int32_T)_SFD_INTEGER_CHECK("k", c2_b_k), 1, 480, 1) - 1].re;
c2_xk.im = c2_b_x[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("x",
(int32_T)_SFD_INTEGER_CHECK("k", c2_b_k), 1, 480, 1) - 1].im;
c2_r = exp(c2_xk.re);
c2_b_x[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("x",
(int32_T)_SFD_INTEGER_CHECK("k", c2_b_k), 1, 480, 1) - 1].re = c2_r *
cos(c2_xk.im);
c2_b_x[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("x",
(int32_T)_SFD_INTEGER_CHECK("k", c2_b_k), 1, 480, 1) - 1].im = c2_r *
sin(c2_xk.im);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -