我正在用C语言开发代码以获得系统的总体光谱。在这个光谱中,我需要展开函数来执行我的系统的更多步骤。
我已经在下面提到的代码中正确声明了所有参数,这是我需要你帮助的唯一代码段。
以下是代码:
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*/
}
答案 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()
。