?? c3_std5.c
字號:
/* sum_delay_xcorr2=abs(sum_delay_xcorr)^2; */
/* */
/* */
/* p=0; */
/* for iii=1:2*D */
/* pwr=abs(rx_signal(n+iii+D-1))^2; */
/* p=p+pwr; */
/* end */
/* p2=p^2; */
/* */
/* ma_M(n)=sum_delay_xcorr2/p2; */
/* */
/* end */
/* detected_packet = ma_M; */
/* rx_len = length(rx_signal); */
/* */
/* % Calculate the delayd correlation */
/* delay_xcorr = rx_signal(:,1:search_win+2*D).*conj(rx_signal(:,1*D+1:search_win+3*D)); */
/* */
/* % Moving average of the delayed correlation */
/* ma_delay_xcorr = abs(filter(ones(1,2*D), 1, delay_xcorr, [], 2)); */
/* */
/* % Moving average of received power */
/* ma_rx_pwr = filter(ones(1,2*D), 1, abs(rx_signal(:,1*D+1:search_win+3*D)).^2,[], 2); */
/* */
/* % The decision variable */
/* delay_len = length(ma_delay_xcorr); */
/* ma_M = ma_delay_xcorr(:,1:delay_len)./ma_rx_pwr(:,1:delay_len); */
/* */
/* % remove delay samples */
/* ma_M(:,1:2*D) = []; */
/* */
/* % combine antennas, if rx diversity is used */
/* ma_M = sum(ma_M, 1); */
/* */
/* if ~sim_options.UseRxDiv */
/* threshold = 0.75; */
/* else */
/* threshold = 1.5; */
/* end */
/* */
/* thres_idx = find(ma_M > threshold); */
/* if isempty(thres_idx) */
/* thres_idx = 1; */
/* else */
/* thres_idx = thres_idx(1); */
/* end */
/* */
/* 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 = rx_signal(:,thres_idx:length(rx_signal)); */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,-75);
sf_debug_symbol_scope_pop();
}
static real_T c3_abs(creal_T c3_x)
{
return c3_eml_dlapy2(c3_x.re, c3_x.im);
}
static real_T c3_eml_dlapy2(real_T c3_x1, real_T c3_x2)
{
real_T c3_a;
real_T c3_b;
real_T c3_x;
real_T c3_b_y;
real_T c3_b_x;
real_T c3_c_y;
c3_a = fabs(c3_x1);
c3_b = fabs(c3_x2);
if(c3_a == 0.0) {
return c3_b;
} else if(c3_b == 0.0) {
return c3_a;
} else if(c3_a == c3_b) {
return c3_a * 1.4142135623730951E+000;
} else if(c3_b > c3_a) {
c3_x = c3_a;
c3_b_y = c3_b;
c3_a = c3_x / c3_b_y;
return c3_b * sqrt(1.0 + c3_a * c3_a);
} else {
c3_b_x = c3_b;
c3_c_y = c3_a;
c3_b = c3_b_x / c3_c_y;
return c3_a * sqrt(1.0 + c3_b * c3_b);
}
}
static void c3_b_abs(creal_T *c3_x, real_T *c3_y)
{
int32_T c3_i28;
real_T c3_k;
real_T c3_b_k;
for(c3_i28 = 0; c3_i28 < 128; c3_i28 = c3_i28 + 1) {
c3_y[c3_i28] = 0.0;
}
for(c3_k = 1.0; c3_k <= 128.0; c3_k = c3_k + 1.0) {
c3_b_k = c3_k;
c3_y[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("y",
(int32_T)_SFD_INTEGER_CHECK("k", c3_b_k), 1, 128, 1) - 1] =
c3_eml_dlapy2(c3_x[(
int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("x", (int32_T)_SFD_INTEGER_CHECK("k",
c3_b_k), 1, 128, 1) - 1].re, c3_x[(int32_T)
_SFD_EML_ARRAY_BOUNDS_CHECK("x", (int32_T)_SFD_INTEGER_CHECK("k", c3_b_k),
1, 128, 1) - 1].im);
}
}
static void c3_sum(real_T *c3_x, real_T *c3_y)
{
int32_T c3_i29;
real_T c3_b_x[128];
int32_T c3_i30;
real_T c3_c_x[128];
int32_T c3_i31;
for(c3_i29 = 0; c3_i29 < 128; c3_i29 = c3_i29 + 1) {
c3_b_x[c3_i29] = c3_x[c3_i29];
}
for(c3_i30 = 0; c3_i30 < 128; c3_i30 = c3_i30 + 1) {
c3_c_x[c3_i30] = c3_b_x[c3_i30];
}
for(c3_i31 = 0; c3_i31 < 128; c3_i31 = c3_i31 + 1) {
c3_y[c3_i31] = c3_c_x[c3_i31];
}
}
static void c3_max(real_T *c3_x, real_T *c3_maxval, real_T *c3_indx)
{
int32_T c3_i32;
real_T c3_b_x[128];
int32_T c3_i33;
real_T c3_c_x[128];
real_T c3_extremum;
int32_T c3_itmp;
int32_T c3_ix;
int32_T c3_k;
int32_T c3_b_k;
int32_T c3_a;
real_T c3_d_x;
boolean_T c3_b;
real_T c3_e_x;
boolean_T c3_b_b;
real_T c3_b_maxval;
int32_T c3_b_itmp;
real_T c3_b_indx;
for(c3_i32 = 0; c3_i32 < 128; c3_i32 = c3_i32 + 1) {
c3_b_x[c3_i32] = c3_x[c3_i32];
}
for(c3_i33 = 0; c3_i33 < 128; c3_i33 = c3_i33 + 1) {
c3_c_x[c3_i33] = c3_b_x[c3_i33];
}
c3_extremum = c3_c_x[0];
c3_itmp = 1;
c3_ix = 1;
for(c3_k = 2; c3_k < 129; c3_k = c3_k + 1) {
c3_b_k = c3_k;
c3_a = c3_ix;
c3_ix = c3_a + 1;
c3_d_x = c3_c_x[_SFD_EML_ARRAY_BOUNDS_CHECK("x", _SFD_INTEGER_CHECK("ix",
(real_T)c3_ix), 1, 128, 1) - 1];
c3_b = rtIsNaN(c3_d_x);
if(!c3_b) {
c3_e_x = c3_extremum;
c3_b_b = rtIsNaN(c3_e_x);
if(c3_b_b) {
(real_T)c3_ix), 1, 128, 1) - 1] > c3_extremum) {
} else {
goto label_1;
}
c3_extremum = c3_c_x[_SFD_EML_ARRAY_BOUNDS_CHECK("x",
_SFD_INTEGER_CHECK("ix", (real_T)c3_ix), 1, 128, 1) - 1];
c3_itmp = c3_b_k;
label_1:;
}
}
c3_b_maxval = c3_extremum;
c3_b_itmp = c3_itmp;
c3_b_indx = (real_T)c3_b_itmp;
*c3_maxval = c3_b_maxval;
*c3_indx = c3_b_indx;
}
static creal_T c3_mrdivide(creal_T c3_A, real_T c3_B)
{
creal_T c3_y;
creal_T c3_x;
real_T c3_b_y;
creal_T c3_b_x;
real_T c3_c_y;
creal_T c3_xk;
real_T c3_yk;
real_T c3_ar;
real_T c3_ai;
real_T c3_br;
real_T c3_cr;
real_T c3_ci;
c3_x.re = c3_A.re;
c3_x.im = c3_A.im;
c3_b_y = c3_B;
c3_b_x.re = c3_x.re;
c3_b_x.im = c3_x.im;
c3_c_y = c3_b_y;
c3_xk.re = c3_b_x.re;
c3_xk.im = c3_b_x.im;
c3_yk = c3_c_y;
c3_ar = c3_xk.re;
c3_ai = c3_xk.im;
c3_br = c3_yk;
if(c3_ai == 0.0) {
c3_cr = c3_ar / c3_br;
c3_ci = 0.0;
} else {
c3_ci = c3_ai / c3_br;
c3_cr = c3_ar / c3_br;
}
c3_y.re = c3_cr;
c3_y.im = c3_ci;
return c3_y;
}
static void c3_exp(creal_T *c3_x, creal_T *c3_b_x)
{
int32_T c3_i34;
real_T c3_k;
real_T c3_b_k;
creal_T c3_xk;
real_T c3_r;
for(c3_i34 = 0; c3_i34 < 1000; c3_i34 = c3_i34 + 1) {
c3_b_x[c3_i34].re = c3_x[c3_i34].re;
c3_b_x[c3_i34].im = c3_x[c3_i34].im;
}
for(c3_k = 1.0; c3_k <= 1000.0; c3_k = c3_k + 1.0) {
c3_b_k = c3_k;
c3_xk.re = c3_b_x[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("x",
(int32_T)_SFD_INTEGER_CHECK("k", c3_b_k), 1, 1000, 1) - 1].re;
c3_xk.im = c3_b_x[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("x",
(int32_T)_SFD_INTEGER_CHECK("k", c3_b_k), 1, 1000, 1) - 1].im;
c3_r = exp(c3_xk.re);
c3_b_x[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("x",
(int32_T)_SFD_INTEGER_CHECK("k", c3_b_k), 1, 1000, 1) - 1].re = c3_r *
cos(c3_xk.im
);
c3_b_x[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("x",
(int32_T)_SFD_INTEGER_CHECK("k", c3_b_k), 1, 1000, 1) - 1].im = c3_r *
sin(c3_xk.im
);
}
}
static const mxArray *c3_sf_marshall(void *c3_chartInstance, void *c3_u)
{
const mxArray *c3_y = NULL;
int32_T c3_i35;
creal_T c3_b_u[1000];
const mxArray *c3_b_y = NULL;
c3_y = NULL;
for(c3_i35 = 0; c3_i35 < 1000; c3_i35 = c3_i35 + 1) {
c3_b_u[c3_i35].re = (*(creal_T (*)[1000])c3_u)[c3_i35].re;
c3_b_u[c3_i35].im = (*(creal_T (*)[1000])c3_u)[c3_i35].im;
}
c3_b_y = NULL;
sf_mex_assign(&c3_b_y, sf_mex_create(&c3_b_u, "y", 0, 1U, 1U, 1, 1000));
sf_mex_assign(&c3_y, c3_b_y);
return c3_y;
}
static const mxArray *c3_b_sf_marshall(void *c3_chartInstance, void *c3_u)
{
const mxArray *c3_y = NULL;
creal_T c3_b_u;
const mxArray *c3_b_y = NULL;
c3_y = NULL;
c3_b_u.re = ((creal_T *)c3_u)->re;
c3_b_u.im = ((creal_T *)c3_u)->im;
c3_b_y = NULL;
sf_mex_assign(&c3_b_y, sf_mex_create(&c3_b_u, "y", 0, 1U, 0U, 0));
sf_mex_assign(&c3_y, c3_b_y);
return c3_y;
}
static const mxArray *c3_c_sf_marshall(void *c3_chartInstance, void *c3_u)
{
const mxArray *c3_y = NULL;
int32_T c3_i36;
creal_T c3_b_u[128];
const mxArray *c3_b_y = NULL;
c3_y = NULL;
for(c3_i36 = 0; c3_i36 < 128; c3_i36 = c3_i36 + 1) {
c3_b_u[c3_i36].re = (*(creal_T (*)[128])c3_u)[c3_i36].re;
c3_b_u[c3_i36].im = (*(creal_T (*)[128])c3_u)[c3_i36].im;
}
c3_b_y = NULL;
sf_mex_assign(&c3_b_y, sf_mex_create(&c3_b_u, "y", 0, 1U, 1U, 1, 128));
sf_mex_assign(&c3_y, c3_b_y);
return c3_y;
}
static const mxArray *c3_d_sf_marshall(void *c3_chartInstance, void *c3_u)
{
const mxArray *c3_y = NULL;
int32_T c3_i37;
real_T c3_b_u[320];
const mxArray *c3_b_y = NULL;
c3_y = NULL;
for(c3_i37 = 0; c3_i37 < 320; c3_i37 = c3_i37 + 1) {
c3_b_u[c3_i37] = (*(real_T (*)[320])c3_u)[c3_i37];
}
c3_b_y = NULL;
sf_mex_assign(&c3_b_y, sf_mex_create(&c3_b_u, "y", 0, 0U, 1U, 1, 320));
sf_mex_assign(&c3_y, c3_b_y);
return c3_y;
}
static const mxArray *c3_e_sf_marshall(void *c3_chartInstance, void *c3_u)
{
const mxArray *c3_y = NULL;
int32_T c3_i38;
real_T c3_b_u[320];
const mxArray *c3_b_y = NULL;
c3_y = NULL;
for(c3_i38 = 0; c3_i38 < 320; c3_i38 = c3_i38 + 1) {
c3_b_u[c3_i38] = (*(real_T (*)[320])c3_u)[c3_i38];
}
c3_b_y = NULL;
sf_mex_assign(&c3_b_y, sf_mex_create(&c3_b_u, "y", 0, 0U, 1U, 1, 320));
sf_mex_assign(&c3_y, c3_b_y);
return c3_y;
}
static const mxArray *c3_f_sf_marshall(void *c3_chartInstance, void *c3_u)
{
const mxArray *c3_y = NULL;
real_T c3_b_u;
const mxArray *c3_b_y = NULL;
c3_y = NULL;
c3_b_u = *(real_T *)c3_u;
c3_b_y = NULL;
sf_mex_assign(&c3_b_y, sf_mex_create(&c3_b_u, "y", 0, 0U, 0U, 0));
sf_mex_assign(&c3_y, c3_b_y);
return c3_y;
}
static const mxArray *c3_g_sf_marshall(void *c3_chartInstance, void *c3_u)
{
const mxArray *c3_y = NULL;
real_T c3_b_u;
const mxArray *c3_b_y = NULL;
c3_y = NULL;
c3_b_u = *(real_T *)c3_u;
c3_b_y = NULL;
sf_mex_assign(&c3_b_y, sf_mex_create(&c3_b_u, "y", 0, 0U, 0U, 0));
sf_mex_assign(&c3_y, c3_b_y);
return c3_y;
}
static const mxArray *c3_h_sf_marshall(void *c3_chartInstance, void *c3_u)
{
const mxArray *c3_y = NULL;
int32_T c3_i39;
creal_T c3_b_u[128];
const mxArray *c3_b_y = NULL;
c3_y = NULL;
for(c3_i39 = 0; c3_i39 < 128; c3_i39 = c3_i39 + 1) {
c3_b_u[c3_i39].re = (*(creal_T (*)[128])c3_u)[c3_i39].re;
c3_b_u[c3_i39].im = (*(creal_T (*)[128])c3_u)[c3_i39].im;
}
c3_b_y = NULL;
sf_mex_assign(&c3_b_y, sf_mex_create(&c3_b_u, "y", 0, 1U, 1U, 2, 1, 128));
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -