如何在C中使用unwrap函数和iota(复数中的“i”)?

时间:2017-07-14 09:53:18

标签: c++ c gsl

我正在用C语言开发代码以获得系统的总体光谱。在这个光谱中,我需要展开函数来执行我的系统的更多步骤。

  1. 有谁能告诉我,如何在我的代码中使用展开功能?
  2. 如何在代码中使用iota(复数中的“i”)?
  3. 最后如何使用gsl fft函数对函数进行傅里叶变换?
  4. 我已经在下面提到的代码中正确声明了所有参数,这是我需要你帮助的唯一代码段。

    1. 在ph1的功能中,我需要打开phi
    2. 在D和N的功能中,我使用iota作为“i”Plz帮助我如何使用它?
    3. 最后,我想用gsl执行f的fft。怎么办呢?
    4. 以下是代码:

      double dt = 0.01;
      double N1 = 11;
      double Fs = 1 / dt;
      a = dt * (N1 - 1);
      double dx = 1 / a;
      double N;
      for (m = 1; m <= N1; m++) {
          double t1 = (m - 1) * dt;
          //double i = sqrt(-1);
      
          D = pow((cos(om * t1 / 2)), 2) + ((2 * i * sin(om * t1) / om * (Q2 + pow(om, 2) * Q1)) -
              (16 * D1 * ((pow(sin(om * t1 / 2), 2))));
      
          double phi = 1 / tan(pow((cos(om * t1 / 2)), 2) + ((2 * sin(om * t1) / om) * (Q2 + pow(om, 2) * Q1)) / (-16 * D1 * ((pow(sin(om * t1 / 2), 2)))));
          double a = abs(D);
          //printf("%f and %f\n",phi,a);  
          double ph1 = unwrap(phi); /*How to use unwrap function*/
      }
      for (m = 1; m <= N1; m++) {
          double t1 = (m - 1) * dt;
          N = ((i * cos(om * t1 / 2)) * ((pow(Gdot, 2) + pow((om * Gc), 2)) / om) - (4 * sin(om * t1 / 2)) * (Q2 * pow(Gc, 2) + Q1 * pow(Gdot, 2) - (Q1dot * Gdot * Gc))); /* How to use iota */
          double Ds = sqrt(a) * exp(i * ph1 / 2);
          double Ds1 = (a) * exp(i * ph1);
          //Ns(m) = (b) * exp(i * ps1);   
          double E = ((sin(om * t1 / 2)) / Ds1) * N;
          double S = (exp(-E)) / (Ds);
          double b = (pow(p0, 2) + pow((q0 * om), 2)) / (2 * om);
          double S1 = (exp(-i * om * t1 / 2)) * exp(b * (exp(-i * om * t1) - 1));
          fft(S);  /* How to calculate fft using gsl*/
      }
      

1 个答案:

答案 0 :(得分:0)

重新格式化代码,存在一些问题:

  • 似乎ContentDialog行中缺少一个括号。
  • 缺少许多变量声明(D = pow((cos(om * ...m ...)

您应该为您的问题发布一个完整的可编译示例,并学习空格并缩进代码以使其可读。

C99和C11扩展了对复杂算术的支持。您应该将复杂变量定义为:

D

#include <complex.h> complex double D; 的虚根定义为-1(发音为 ai ,而不是 iota )。

确定哪些变量是复杂的并定义它们,使用数学函数的复杂版本(在其名称的开头添加I,例如c,{{1 }}})避免使用ccos()只是平方值,而是使用csin()