⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c2_multitones_forhop_hard4.c

📁 FFH, pre-hopping anti-jamming system
💻 C
📖 第 1 页 / 共 2 页
字号:
/* Include files */
#include "multitones_forhop_hard4_sfun.h"
#include "c2_multitones_forhop_hard4.h"
#define CHARTINSTANCE_CHARTNUMBER       (chartInstance.chartNumber)
#define CHARTINSTANCE_INSTANCENUMBER    (chartInstance.instanceNumber)
#include "multitones_forhop_hard4_sfun_debug_macros.h"

/* Type Definitions */

/* Named Constants */
#define c2_IN_NO_ACTIVE_CHILD           (0)

/* Variable Declarations */

/* Variable Definitions */
static SFc2_multitones_forhop_hard4InstanceStruct chartInstance;

/* Function Declarations */
static void initialize_c2_multitones_forhop_hard4(void);
static void initialize_params_c2_multitones_forhop_hard4(void);
static void enable_c2_multitones_forhop_hard4(void);
static void disable_c2_multitones_forhop_hard4(void);
static void finalize_c2_multitones_forhop_hard4(void);
static void sf_c2_multitones_forhop_hard4(void);
static real_T c2_eML_blk_kernel(creal_T *c2_b_u);
static void c2_fft(creal_T *c2_x, creal_T *c2_b_y);
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_b_u);
static const mxArray *c2_b_sf_marshall(void *c2_chartInstance, void *c2_b_u);
static const mxArray *c2_c_sf_marshall(void *c2_chartInstance, void *c2_b_u);
static const mxArray *c2_d_sf_marshall(void *c2_chartInstance, void *c2_b_u);
static const mxArray *c2_e_sf_marshall(void *c2_chartInstance, void *c2_b_u);
static creal_T *c2_u(void);
static real_T *c2_y(void);
static void init_dsm_address_info(void);

/* Function Definitions */
static void initialize_c2_multitones_forhop_hard4(void)
{
  _sfTime_ = (real_T)ssGetT(chartInstance.S);
  chartInstance.c2_is_active_c2_multitones_forhop_hard4 = 0U;
}

static void initialize_params_c2_multitones_forhop_hard4(void)
{
}

static void enable_c2_multitones_forhop_hard4(void)
{
}

static void disable_c2_multitones_forhop_hard4(void)
{
}

static void finalize_c2_multitones_forhop_hard4(void)
{
}

static void sf_c2_multitones_forhop_hard4(void)
{
  uint8_T c2_previousEvent;
  int32_T c2_i0;
  creal_T c2_dcv0[1024];
  _sfTime_ = (real_T)ssGetT(chartInstance.S);
  _SFD_DATA_RANGE_CHECK(*c2_y(), 1U);
  c2_previousEvent = _sfEvent_;
  _sfEvent_ = CALL_EVENT;
  _SFD_CC_CALL(CHART_ENTER_DURING_FUNCTION_TAG,1);
  for(c2_i0 = 0; c2_i0 < 1024; c2_i0 = c2_i0 + 1) {
    c2_dcv0[c2_i0].re = c2_u()[c2_i0].re;
    c2_dcv0[c2_i0].im = c2_u()[c2_i0].im;
  }
  *c2_y() = c2_eML_blk_kernel((creal_T *)c2_dcv0);
  _SFD_CC_CALL(EXIT_OUT_OF_FUNCTION_TAG,1);
  _sfEvent_ = c2_previousEvent;
  sf_debug_check_for_state_inconsistency(_multitones_forhop_hard4MachineNumber_,
   chartInstance.chartNumber, chartInstance.
   instanceNumber);
}

static real_T c2_eML_blk_kernel(creal_T *c2_b_u)
{
  real_T c2_b_y;
  real_T c2_b;
  real_T c2_a;
  creal_T c2_Y[1024];
  int32_T c2_i1;
  creal_T c2_dcv1[1024];
  creal_T c2_dcv2[1024];
  int32_T c2_i2;
  creal_T c2_b_Y;
  creal_T c2_c_Y;
  real_T c2_A;
  real_T c2_x;
  real_T c2_B;
  int32_T c2_i3;
  static char c2_cv0[31] = { 'E', 'm', 'b', 'e', 'd', 'd', 'e', 'd', 'M', 'A',
    'T', 'L', 'A', 'B', ':', 's', 'q', 'r', 't', ':', 'd',
    'o', 'm', 'a', 'i', 'n', 'E', 'r', 'r', 'o', 'r' };
  char c2_c_u[31];
  const mxArray *c2_c_y = NULL;
  int32_T c2_i4;
  static char c2_cv1[77] = { 'D', 'o', 'm', 'a', 'i', 'n', ' ', 'e', 'r', 'r',
    'o', 'r', '.', ' ', 'T', 'o', ' ', 'c', 'o', 'm', 'p',
    'u', 't', 'e', ' ', 'c', 'o', 'm', 'p', 'l', 'e', 'x', ' ', 'r', 'e', 's',
    'u', 'l', 't', 's', ' ', 'f',
    'r', 'o', 'm', ' ', 'r', 'e', 'a', 'l', ' ', 'x', ',', ' ', 'u', 's', 'e',
    ' ', '\'', 's', 'q', 'r', 't'
    , '(', 'c', 'o', 'm', 'p', 'l', 'e', 'x', '(', 'x', ')', ')', '\'', '.' };
  char c2_d_u[77];
  const mxArray *c2_d_y = NULL;
  real_T c2_b_x;
  real_T c2_e_y;
  sf_debug_symbol_scope_push(5U, 0U);
  sf_debug_symbol_scope_add("b", &c2_b, c2_e_sf_marshall);
  sf_debug_symbol_scope_add("a", &c2_a, c2_d_sf_marshall);
  sf_debug_symbol_scope_add("Y", &c2_Y, c2_c_sf_marshall);
  sf_debug_symbol_scope_add("y", &c2_b_y, c2_b_sf_marshall);
  sf_debug_symbol_scope_add("u", c2_b_u, c2_sf_marshall);
  CV_EML_FCN(0, 0);
  _SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,2);
  for(c2_i1 = 0; c2_i1 < 1024; c2_i1 = c2_i1 + 1) {
    c2_dcv1[c2_i1].re = c2_b_u[c2_i1].re;
    c2_dcv1[c2_i1].im = c2_b_u[c2_i1].im;
  }
  c2_fft((creal_T *)c2_dcv1, (creal_T *)c2_dcv2);
  for(c2_i2 = 0; c2_i2 < 1024; c2_i2 = c2_i2 + 1) {
    c2_Y[c2_i2].re = c2_dcv2[c2_i2].re;
    c2_Y[c2_i2].im = c2_dcv2[c2_i2].im;
  }
  _SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,3);
  c2_b_Y.re = c2_Y[1].re;
  c2_b_Y.im = c2_Y[1].im;
  c2_a = c2_abs(c2_b_Y);
  _SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,4);
  c2_c_Y.re = c2_Y[3].re;
  c2_c_Y.im = c2_Y[3].im;
  c2_b = c2_abs(c2_c_Y);
  _SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,5);
  c2_A = c2_a - c2_b;
  c2_x = c2_mpower(c2_a) + c2_mpower(c2_b);
  c2_B = c2_x;
  if(c2_B < 0.0) {
    for(c2_i3 = 0; c2_i3 < 31; c2_i3 = c2_i3 + 1) {
      c2_c_u[c2_i3] = c2_cv0[c2_i3];
    }
    c2_c_y = NULL;
    sf_mex_assign(&c2_c_y, sf_mex_create(&c2_c_u, "y", 8, 0U, 1U, 2, 1, 31));
    for(c2_i4 = 0; c2_i4 < 77; c2_i4 = c2_i4 + 1) {
      c2_d_u[c2_i4] = c2_cv1[c2_i4];
    }
    c2_d_y = NULL;
    sf_mex_assign(&c2_d_y, sf_mex_create(&c2_d_u, "y", 8, 0U, 1U, 2, 1, 77));
    sf_mex_call("error", 0U, 2U, 14, c2_c_y, 14, c2_d_y);
  }
  c2_B = sqrt(c2_B);
  c2_b_x = c2_A;
  c2_e_y = c2_B;
  c2_b_y = c2_b_x / c2_e_y;
  _SFD_EML_CALL(STATE_DURING_DURING_ACTION_TAG,0,-5);
  sf_debug_symbol_scope_pop();
  return c2_b_y;
}

static void c2_fft(creal_T *c2_x, creal_T *c2_b_y)
{
  int32_T c2_i5;
  creal_T c2_b_x[1024];
  int32_T c2_i6;
  creal_T c2_c_x[1024];
  int32_T c2_i7;
  int32_T c2_ix;
  int32_T c2_j;
  int32_T c2_iy;
  int32_T c2_i;
  int32_T c2_b_j;
  uint32_T c2_nu;
  uint32_T c2_ju;
  boolean_T c2_tst;
  int32_T c2_b;
  int32_T c2_a;
  int32_T c2_i1;
  int32_T c2_b_i;
  int32_T c2_b_a;
  int32_T c2_i2;
  creal_T c2_temp;
  int32_T c2_c_a;
  int32_T c2_iDelta;
  int32_T c2_k;
  int32_T c2_istart;
  int32_T c2_d_a;
  real_T c2_theta;
  real_T c2_d_x;
  real_T c2_e_x;
  real_T c2_f_x;
  real_T c2_g_x;
  creal_T c2_twid;
  int32_T c2_c_i;
  int32_T c2_e_a;
  int32_T c2_b_b;
  int32_T c2_f_a;
  int32_T c2_c_b;
  int32_T c2_g_a;
  int32_T c2_h_a;
  int32_T c2_d_b;
  int32_T c2_i_a;
  int32_T c2_d_i;
  uint32_T c2_ui;
  uint32_T c2_u0;
  int32_T c2_i8;
  for(c2_i5 = 0; c2_i5 < 1024; c2_i5 = c2_i5 + 1) {
    c2_b_x[c2_i5].re = c2_x[c2_i5].re;
    c2_b_x[c2_i5].im = c2_x[c2_i5].im;
  }
  for(c2_i6 = 0; c2_i6 < 1024; c2_i6 = c2_i6 + 1) {
    c2_c_x[c2_i6].re = c2_b_x[c2_i6].re;
    c2_c_x[c2_i6].im = c2_b_x[c2_i6].im;
  }
  for(c2_i7 = 0; c2_i7 < 1024; c2_i7 = c2_i7 + 1) {
    c2_b_y[c2_i7].re = 0.0;
    c2_b_y[c2_i7].im = 0.0;
  }
  c2_ix = 1;
  c2_j = 0;
  c2_iy = 1;
  for(c2_i = 1; c2_i < 1024; c2_i = c2_i + 1) {
    c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("iy",
      (real_T)c2_iy), 1, 1024, 1) - 1].re = c2_c_x[
      _SFD_EML_ARRAY_BOUNDS_CHECK("x", _SFD_INTEGER_CHECK("ix", (real_T)c2_ix),
     1, 1024, 1) - 1].re;
    c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("iy",
      (real_T)c2_iy), 1, 1024, 1) - 1].im = c2_c_x[
      _SFD_EML_ARRAY_BOUNDS_CHECK("x", _SFD_INTEGER_CHECK("ix", (real_T)c2_ix),
     1, 1024, 1) - 1].im;
    c2_b_j = c2_j;
    c2_j = c2_b_j;
    c2_nu = 1024U;
    c2_ju = (uint32_T)c2_j;
    for(c2_tst = 1U; c2_tst; c2_tst = ((real_T)(c2_ju & c2_nu) == 0.0)) {
      c2_nu = c2_nu >> 1U;
      c2_ju = c2_ju ^ c2_nu;
    }
    c2_j = (int32_T)c2_ju;
    c2_b = c2_j;
    c2_iy = 1 + c2_b;
    c2_a = c2_ix;
    c2_ix = c2_a + 1;
  }
  c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("iy",
    (real_T)c2_iy), 1, 1024, 1) - 1].re = c2_c_x[
    _SFD_EML_ARRAY_BOUNDS_CHECK("x", _SFD_INTEGER_CHECK("ix", (real_T)c2_ix), 1,
   1024, 1) - 1].re;
  c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("iy",
    (real_T)c2_iy), 1, 1024, 1) - 1].im = c2_c_x[
    _SFD_EML_ARRAY_BOUNDS_CHECK("x", _SFD_INTEGER_CHECK("ix", (real_T)c2_ix), 1,
   1024, 1) - 1].im;
  c2_i1 = 1;
  for(c2_b_i = 0; c2_b_i < 1023; c2_b_i = c2_b_i + 2) {
    c2_b_a = c2_i1;
    c2_i2 = c2_b_a + 1;
    c2_temp.re = c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y",
     _SFD_INTEGER_CHECK("i2", (real_T)c2_i2), 1, 1024, 1) - 1].re;
    c2_temp.im = c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y",
     _SFD_INTEGER_CHECK("i2", (real_T)c2_i2), 1, 1024, 1) - 1].im;
    c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i2",
      (real_T)c2_i2), 1, 1024, 1) - 1].re = c2_b_y[
      _SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1", (real_T)c2_i1),
     1, 1024, 1) - 1].re - c2_temp.re;
    c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i2",
      (real_T)c2_i2), 1, 1024, 1) - 1].im = c2_b_y[
      _SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1", (real_T)c2_i1),
     1, 1024, 1) - 1].im - c2_temp.im;
    c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1",
      (real_T)c2_i1), 1, 1024, 1) - 1].re = c2_b_y[
      _SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1", (real_T)c2_i1),
     1, 1024, 1) - 1].re + c2_temp.re;
    c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1",
      (real_T)c2_i1), 1, 1024, 1) - 1].im = c2_b_y[
      _SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1", (real_T)c2_i1),
     1, 1024, 1) - 1].im + c2_temp.im;
    c2_c_a = c2_i2;
    c2_i1 = c2_c_a + 1;
  }
  c2_iDelta = 2;
  for(c2_k = 256; (real_T)c2_k > 0.0; c2_k = c2_i8) {
    c2_istart = 0;
    for(c2_j = 0; c2_j < 512; c2_j = c2_h_a + c2_d_b) {
      c2_d_a = c2_istart;
      c2_i1 = c2_d_a + 1;
      c2_theta = (real_T)c2_j * -6.1359231515425647E-003;
      c2_d_x = c2_theta;
      c2_e_x = c2_d_x;
      c2_e_x = sin(c2_e_x);
      c2_f_x = c2_theta;
      c2_g_x = c2_f_x;
      c2_g_x = cos(c2_g_x);
      c2_twid.re = c2_g_x;
      c2_twid.im = c2_e_x;
      for(c2_c_i = 1; c2_c_i <= c2_k; c2_c_i = c2_c_i + 1) {
        c2_e_a = c2_i1;
        c2_b_b = c2_iDelta;
        c2_i2 = c2_e_a + c2_b_b;
        c2_temp.re = c2_twid.re * c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y",
         _SFD_INTEGER_CHECK("i2", (real_T)c2_i2), 1, 1024, 1) - 1].re -
        c2_twid.im * c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y",
         _SFD_INTEGER_CHECK("i2", (real_T)c2_i2), 1, 1024, 1) - 1].im;
        c2_temp.im = c2_twid.re * c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y",
         _SFD_INTEGER_CHECK("i2", (real_T)c2_i2), 1, 1024, 1) - 1].im +
        c2_twid.im * c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y",
         _SFD_INTEGER_CHECK("i2", (real_T)c2_i2), 1, 1024, 1) - 1].re;
        c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i2",
          (real_T)c2_i2), 1, 1024, 1) - 1].re = c2_b_y[
          _SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1",
          (real_T)c2_i1), 1, 1024, 1) - 1].re - c2_temp.re;
        c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i2",
          (real_T)c2_i2), 1, 1024, 1) - 1].im = c2_b_y[
          _SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1",
          (real_T)c2_i1), 1, 1024, 1) - 1].im - c2_temp.im;
        c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1",
          (real_T)c2_i1), 1, 1024, 1) - 1].re = c2_b_y[
          _SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1",
          (real_T)c2_i1), 1, 1024, 1) - 1].re + c2_temp.re;
        c2_b_y[_SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1",
          (real_T)c2_i1), 1, 1024, 1) - 1].im = c2_b_y[
          _SFD_EML_ARRAY_BOUNDS_CHECK("y", _SFD_INTEGER_CHECK("i1",
          (real_T)c2_i1), 1, 1024, 1) - 1].im + c2_temp.im;
        c2_f_a = c2_i2;
        c2_c_b = c2_iDelta;
        c2_i1 = c2_f_a + c2_c_b;
      }
      c2_g_a = c2_istart;
      c2_istart = c2_g_a + 1;
      c2_h_a = c2_j;
      c2_d_b = c2_k;
    }
    c2_i_a = c2_iDelta;
    c2_iDelta = c2_i_a * 2;
    c2_d_i = c2_k;
    c2_k = c2_d_i;
    c2_ui = (uint32_T)c2_k;
    c2_u0 = c2_ui >> 1U;
    if(c2_u0 > 2147483647U) {
      c2_i8 = MAX_int32_T;
    } else {
      c2_i8 = (int32_T)c2_u0;
    }
  }
}

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_c_y;
  real_T c2_c_x;
  real_T c2_d_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_c_y = c2_b;
    c2_a = c2_b_x / c2_c_y;
    return c2_b * sqrt(1.0 + c2_a * c2_a);
  } else {
    c2_c_x = c2_b;
    c2_d_y = c2_a;
    c2_b = c2_c_x / c2_d_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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -