?? c2_mymethod0.c
字號:
/* Include files */
#include "mymethod0_sfun.h"
#include "c2_mymethod0.h"
#define CHARTINSTANCE_CHARTNUMBER (chartInstance.chartNumber)
#define CHARTINSTANCE_INSTANCENUMBER (chartInstance.instanceNumber)
#include "mymethod0_sfun_debug_macros.h"
/* Type Definitions */
/* Named Constants */
#define c2_IN_NO_ACTIVE_CHILD (0)
/* Variable Declarations */
/* Variable Definitions */
static SFc2_mymethod0InstanceStruct chartInstance;
/* Function Declarations */
static void initialize_c2_mymethod0(void);
static void initialize_params_c2_mymethod0(void);
static void enable_c2_mymethod0(void);
static void disable_c2_mymethod0(void);
static void finalize_c2_mymethod0(void);
static void sf_c2_mymethod0(void);
static void c2_eML_blk_kernel(creal_T c2_b_j, creal_T *c2_b_rx_signal, creal_T
*c2_b_syn, real_T *c2_b_dreal_syble, real_T *c2_b_dimag_syble);
static real_T c2_abs(creal_T c2_x);
static real_T c2_mpower(real_T c2_a);
static const mxArray *c2_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_b_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_c_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_d_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_e_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_f_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_g_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_h_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_i_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_j_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_k_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_l_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_m_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_n_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_o_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_p_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_q_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_r_sf_marshall(void *c2_chartInstance, void *c2_u);
static const mxArray *c2_s_sf_marshall(void *c2_chartInstance, void *c2_u);
static creal_T *c2_j(void);
static creal_T *c2_rx_signal(void);
static creal_T *c2_syn(void);
static real_T *c2_dreal_syble(void);
static real_T *c2_dimag_syble(void);
static void init_dsm_address_info(void);
/* Function Definitions */
static void initialize_c2_mymethod0(void)
{
_sfTime_ = (real_T)ssGetT(chartInstance.S);
chartInstance.c2_is_active_c2_mymethod0 = 0U;
}
static void initialize_params_c2_mymethod0(void)
{
}
static void enable_c2_mymethod0(void)
{
}
static void disable_c2_mymethod0(void)
{
}
static void finalize_c2_mymethod0(void)
{
}
static void sf_c2_mymethod0(void)
{
int32_T c2_i0;
int32_T c2_i1;
uint8_T c2_previousEvent;
int32_T c2_i2;
creal_T c2_dcv0[480];
_sfTime_ = (real_T)ssGetT(chartInstance.S);
for(c2_i0 = 0; c2_i0 < 200; c2_i0 = c2_i0 + 1) {
_SFD_DATA_RANGE_CHECK(c2_dreal_syble()[c2_i0], 0U);
}
for(c2_i1 = 0; c2_i1 < 200; c2_i1 = c2_i1 + 1) {
_SFD_DATA_RANGE_CHECK(c2_dimag_syble()[c2_i1], 1U);
}
c2_previousEvent = _sfEvent_;
_sfEvent_ = CALL_EVENT;
_SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG,0);
for(c2_i2 = 0; c2_i2 < 480; c2_i2 = c2_i2 + 1) {
c2_dcv0[c2_i2].re = c2_rx_signal()[c2_i2].re;
c2_dcv0[c2_i2].im = c2_rx_signal()[c2_i2].im;
}
c2_eML_blk_kernel(*c2_j(), (creal_T *)c2_dcv0, (creal_T *)c2_syn(), (real_T
*)c2_dreal_syble(), (real_T *)c2_dimag_syble());
_SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG,0);
_sfEvent_ = c2_previousEvent;
sf_debug_check_for_state_inconsistency(_mymethod0MachineNumber_,
chartInstance.chartNumber, chartInstance.instanceNumber);
}
static void c2_eML_blk_kernel(creal_T c2_b_j, creal_T *c2_b_rx_signal, creal_T
*c2_b_syn, real_T *c2_b_dreal_syble, real_T *
c2_b_dimag_syble)
{
real_T c2_iii;
real_T c2_imag_syble[200];
real_T c2_real_syble[200];
real_T c2_fine_time_est;
real_T c2_ii;
creal_T c2_delay_xcorr1;
real_T c2_power_signal;
real_T c2_n;
real_T c2_k;
real_T c2_str[40];
creal_T c2_ma_M[480];
creal_T c2_delay_xcorr[480];
real_T c2_D;
real_T c2_search_win;
int32_T c2_i3;
int32_T c2_i4;
int32_T c2_i5;
real_T c2_b_n;
real_T c2_b_ii;
creal_T c2_c_rx_signal;
creal_T c2_d_rx_signal;
creal_T c2_e_rx_signal;
creal_T c2_f_rx_signal;
real_T c2_A;
real_T c2_x;
real_T c2_y;
real_T c2_B;
real_T c2_b_x;
real_T c2_b_y;
real_T c2_c_y;
int32_T c2_i6;
int32_T c2_i7;
int32_T c2_i8;
real_T c2_b_fine_time_est;
real_T c2_b_iii;
int32_T c2_i9;
int32_T c2_i10;
sf_debug_symbol_scope_push(19U, 0U);
sf_debug_symbol_scope_add("iii", &c2_iii, c2_s_sf_marshall);
sf_debug_symbol_scope_add("imag_syble", &c2_imag_syble, c2_r_sf_marshall);
sf_debug_symbol_scope_add("real_syble", &c2_real_syble, c2_q_sf_marshall);
sf_debug_symbol_scope_add("fine_time_est", &c2_fine_time_est,
c2_p_sf_marshall);
sf_debug_symbol_scope_add("ii", &c2_ii, c2_o_sf_marshall);
sf_debug_symbol_scope_add("delay_xcorr1", &c2_delay_xcorr1, c2_n_sf_marshall);
sf_debug_symbol_scope_add("power_signal", &c2_power_signal, c2_m_sf_marshall);
sf_debug_symbol_scope_add("n", &c2_n, c2_l_sf_marshall);
sf_debug_symbol_scope_add("k", &c2_k, c2_k_sf_marshall);
sf_debug_symbol_scope_add("str", &c2_str, c2_j_sf_marshall);
sf_debug_symbol_scope_add("ma_M", &c2_ma_M, c2_i_sf_marshall);
sf_debug_symbol_scope_add("delay_xcorr", &c2_delay_xcorr, c2_h_sf_marshall);
sf_debug_symbol_scope_add("D", &c2_D, c2_g_sf_marshall);
sf_debug_symbol_scope_add("search_win", &c2_search_win, c2_f_sf_marshall);
sf_debug_symbol_scope_add("dimag_syble", c2_b_dimag_syble, c2_e_sf_marshall);
sf_debug_symbol_scope_add("dreal_syble", c2_b_dreal_syble, c2_d_sf_marshall);
sf_debug_symbol_scope_add("syn", c2_b_syn, c2_c_sf_marshall);
sf_debug_symbol_scope_add("rx_signal", c2_b_rx_signal, c2_b_sf_marshall);
sf_debug_symbol_scope_add("j", &c2_b_j, c2_sf_marshall);
CV_EML_FCN(0, 0);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,3);
c2_search_win = 170.0;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,4);
c2_D = 16.0;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,5);
for(c2_i3 = 0; c2_i3 < 480; c2_i3 = c2_i3 + 1) {
c2_delay_xcorr[c2_i3].re = c2_b_rx_signal[c2_i3].re;
c2_delay_xcorr[c2_i3].im = c2_b_rx_signal[c2_i3].im;
}
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,6);
for(c2_i4 = 0; c2_i4 < 480; c2_i4 = c2_i4 + 1) {
c2_ma_M[c2_i4].re = c2_b_rx_signal[c2_i4].re;
c2_ma_M[c2_i4].im = c2_b_rx_signal[c2_i4].im;
}
/* for i=1:search_win */
/* delay_xcorr(i)=rx_signal(i)*conj(rx_signal(D+i)); */
/* end */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,10);
for(c2_i5 = 0; c2_i5 < 40; c2_i5 = c2_i5 + 1) {
c2_str[c2_i5] = 0.0;
}
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,11);
c2_k = 0.0;
c2_n = 1.0;
for(c2_b_n = 1.0; c2_b_n <= 170.0; c2_b_n = c2_b_n + 1.0) {
c2_n = c2_b_n;
CV_EML_FOR(0, 0, 1);
/* metric1=complex(0); */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,14);
c2_power_signal = 0.0;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,15);
c2_delay_xcorr1.re = 0.0;
c2_delay_xcorr1.im = 0.0;
c2_ii = 2.0;
for(c2_b_ii = 2.0; c2_b_ii <= 9.0; c2_b_ii = c2_b_ii + 1.0) {
c2_ii = c2_b_ii;
CV_EML_FOR(0, 1, 1);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,17);
c2_c_rx_signal.re =
c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal",
(int32_T)_SFD_INTEGER_CHECK("", (((c2_n - 1.0)
+ c2_D) + 2.0) - c2_ii), 1, 480, 1) - 1].re;
c2_c_rx_signal.im =
-c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal",
(int32_T)_SFD_INTEGER_CHECK("", (((c2_n - 1.0)
+ c2_D) + 2.0) - c2_ii), 1, 480, 1) - 1].im;
c2_d_rx_signal.re =
c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal",
(int32_T)_SFD_INTEGER_CHECK("", (c2_n - 1.0) +
c2_ii), 1, 480, 1) - 1].re * c2_c_rx_signal.re -
c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal", (int32_T)
_SFD_INTEGER_CHECK("", (c2_n - 1.0) + c2_ii), 1, 480, 1) - 1].im *
c2_c_rx_signal.im;
c2_d_rx_signal.im =
c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal",
(int32_T)_SFD_INTEGER_CHECK("", (c2_n - 1.0) +
c2_ii), 1, 480, 1) - 1].re * c2_c_rx_signal.im +
c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal", (int32_T)
_SFD_INTEGER_CHECK("", (c2_n - 1.0) + c2_ii), 1, 480, 1) - 1].im *
c2_c_rx_signal.re;
c2_e_rx_signal.re = c2_d_rx_signal.re * c2_b_j.re - c2_d_rx_signal.im *
c2_b_j.im;
c2_e_rx_signal.im = c2_d_rx_signal.re * c2_b_j.im + c2_d_rx_signal.im *
c2_b_j.re;
c2_delay_xcorr1.re = c2_delay_xcorr1.re + c2_e_rx_signal.re;
c2_delay_xcorr1.im = c2_delay_xcorr1.im + c2_e_rx_signal.im;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,18);
c2_f_rx_signal.re =
c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal",
(int32_T)_SFD_INTEGER_CHECK("", (((c2_n - 1.0)
+ c2_D) + 2.0) - c2_ii), 1, 480, 1) - 1].re;
c2_f_rx_signal.im =
c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal",
(int32_T)_SFD_INTEGER_CHECK("", (((c2_n - 1.0)
+ c2_D) + 2.0) - c2_ii), 1, 480, 1) - 1].im;
c2_power_signal = c2_power_signal + c2_mpower(c2_abs(c2_f_rx_signal));
}
CV_EML_FOR(0, 1, 0);
/* ref1=(abs(metric1)+abs(metric2)+abs(metric3))/3; */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,22);
c2_A = c2_mpower(c2_abs(c2_delay_xcorr1));
c2_x = c2_power_signal;
c2_y = fabs(c2_x);
c2_B = c2_mpower(c2_y);
c2_b_x = c2_A;
c2_b_y = c2_B;
c2_c_y = c2_b_x / c2_b_y;
c2_ma_M[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("ma_M",
(int32_T)_SFD_INTEGER_CHECK("n", c2_n), 1, 480, 1) - 1].re = c2_c_y;
c2_ma_M[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("ma_M",
(int32_T)_SFD_INTEGER_CHECK("n", c2_n), 1, 480, 1) - 1].im = 0.0;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,25);
if(CV_EML_IF(0, 0, c2_ma_M[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("ma_M",
(int32_T)_SFD_INTEGER_CHECK("n", c2_n), 1, 480, 1) - 1].re
> 0.9)) {
/* ma_M(n)=abs(delay_xcorr1); */
/* ma_M(n)=ref1/power_signal; */
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,26);
c2_k = c2_k + 1.0;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,27);
c2_str[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("str",
(int32_T)_SFD_INTEGER_CHECK("k", c2_k), 1, 40, 1) - 1] = c2_n;
}
}
CV_EML_FOR(0, 0, 0);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,30);
for(c2_i6 = 0; c2_i6 < 480; c2_i6 = c2_i6 + 1) {
c2_b_syn[c2_i6].re = c2_ma_M[c2_i6].re;
c2_b_syn[c2_i6].im = c2_ma_M[c2_i6].im;
}
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,31);
c2_fine_time_est = (c2_str[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("str",
(int32_T)_SFD_INTEGER_CHECK("k", c2_k), 1, 40, 1) - 1] + 20.0
) + 160.0;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,32);
for(c2_i7 = 0; c2_i7 < 200; c2_i7 = c2_i7 + 1) {
c2_real_syble[c2_i7] = 0.0;
}
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,33);
for(c2_i8 = 0; c2_i8 < 200; c2_i8 = c2_i8 + 1) {
c2_imag_syble[c2_i8] = 0.0;
}
c2_b_fine_time_est = c2_fine_time_est;
c2_iii = c2_b_fine_time_est;
for(c2_b_iii = c2_b_fine_time_est; c2_b_iii <= 480.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,35);
c2_real_syble[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("real_syble",
(int32_T)_SFD_INTEGER_CHECK("", (c2_iii - c2_fine_time_est) + 1.0)
, 1, 200, 1) - 1] =
c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal",
(int32_T)_SFD_INTEGER_CHECK("iii", c2_iii), 1,
480, 1) - 1].re;
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,36);
c2_imag_syble[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("imag_syble",
(int32_T)_SFD_INTEGER_CHECK("", (c2_iii - c2_fine_time_est) + 1.0)
, 1, 200, 1) - 1] =
c2_b_rx_signal[(int32_T)_SFD_EML_ARRAY_BOUNDS_CHECK("rx_signal",
(int32_T)_SFD_INTEGER_CHECK("iii", c2_iii), 1,
480, 1) - 1].im;
}
CV_EML_FOR(0, 2, 0);
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,38);
for(c2_i9 = 0; c2_i9 < 200; c2_i9 = c2_i9 + 1) {
c2_b_dreal_syble[c2_i9] = c2_real_syble[c2_i9];
}
_SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,39);
for(c2_i10 = 0; c2_i10 < 200; c2_i10 = c2_i10 + 1) {
c2_b_dimag_syble[c2_i10] = c2_imag_syble[c2_i10];
}
/* rx_len = length(rx_signal); */
/* */
/* function [syn,dreal_syble,dimag_syble] = rx_fine_time_sync(input_signal) */
/* */
/* */
/* */
/* %timing search window size */
/* start_search=130; */
/* end_search=200; */
/* */
/* */
/* % get time domain long training symbols */
/*
long_tr_symbols = [0.15625 -0.0051213 - 0.12033i 0.03975 - 0.11116i 0.096832 + 0.082798i 0.021112 + 0.027886i 0.059824 - 0.087707i -0.11513 - 0.05518i -0.038316 - 0.10617i 0.097541 - 0.025888i 0.053338 + 0.0040763i 0.00098898 - 0.115i -0.1368 - 0.04738i 0.024476 - 0.058532i 0.058669 - 0.014939i -0.022483 + 0.16066i 0.11924 - 0.0040956i 0.0625 - 0.0625i 0.036918 + 0.098344i -0.057206 + 0.039299i -0.13126 + 0.065227i 0.082218 + 0.092357i 0.069557 + 0.014122i -0.06031 + 0.081286i -0.056455 - 0.021804i -0.035041 - 0.15089i -0.12189 - 0.016566i -0.12732 - 0.020501i 0.075074 - 0.07404i -0.0028059 + 0.053774i -0.091888 + 0.11513i 0.091717 + 0.10587i 0.012285 + 0.0976i -0.15625 0.012285 - 0.0976i 0.091717 - 0.10587i -0.091888 - 0.11513i -0.0028059 - 0.053774i 0.075074 + 0.07404i -0.12732 + 0.020501i -0.12189 + 0.016566i -0.035041 + 0.15089i -0.056455 + 0.021804i -0.06031 - 0.081286i 0.069557 - 0.014122i 0.082218 - 0.092357i -0.13126 - 0.065227i -0.057206 - 0.039299i 0.036918 - 0.098344i 0.0625 + 0.0625i 0.11924 + 0.0040956i -0.022483 - 0.16066i 0.058669 + 0.014939i 0.024476 + 0.058532i -0.1368 + 0.04738i 0.00098898 + 0.115i 0.053338 - 0.0040763i 0.097541 + 0.025888i -0.038316 + 0.10617i -0.11513 + 0.05518i 0.059824 + 0.087707i 0.021112 - 0.027886i 0.096832 - 0.082798i 0.03975 + 0.11116i -0.0051213 + 0.12033i]; */
/* */
/* % if sim_options.UseTxDiv */
/* % long_trs = [long_tr_symbols(49:64) long_tr_symbols(1:48)]; */
/* % else */
/* long_trs = [long_tr_symbols(33:64) long_tr_symbols(1:32)]; */
/* % end */
/* */
/* time_corr_long =[long_tr_symbols long_tr_symbols]; */
/* abscorr=[long_tr_symbols long_tr_symbols]; */
/* */
/* % calculate cross correlation */
/* for idx=start_search:end_search */
/* time_corr_long(idx-start_search+1)=complex(0); */
/* for n=1:64 */
/* time_corr_long(idx-start_search+1)=time_corr_long(idx-start_search+1)+input_signal(idx+n-1).*conj(long_trs(n)); */
/* end */
/* % time_corr_long(idx-start_search+1) = sum((input_signal(idx:idx+63).*conj(long_trs))); */
/* */
/* abscorr(idx-start_search+1)=abs(time_corr_long(idx-start_search+1)); */
/* */
/* end */
/* time_corr_long = sum(abs(time_corr_long),1); */
/* [max_peak_long,long_search_idx] = max(abs(time_corr_long)); */
/* */
/* % [max_peak_long,long_search_idx] = max(abscorr); */
/* fine_time_est = start_search-1 + long_search_idx+32; */
/* */
/* % fine_signal=input_signal() */
/* % syn=time_corr_long';length(input_signal)len(input_signal) */
/* syn= abscorr'; */
/* real_syble=zeros(1,320); */
/* imag_syble=zeros(1,320); */
/* for iii= fine_time_est:480 */
/* real_syble(iii-fine_time_est+1)=real(input_signal(iii)); */
/* imag_syble(iii-fine_time_est+1)=imag(input_signal(iii)); */
/* end */
/* dreal_syble=real_syble'; */
/* dimag_syble=imag_syble'; */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -