我正在尝试获得(下降)锯齿信号的幅度和相位。 我的锯齿长度为1024个样本,生成为
int numSamples = 1024;
for (int i = 0; i < numSamples; i++)
{
samples[i] = -((float)i / (float)(numSamples - 1) * 2.0f - 1.0f);
}
我将实数和虚数数组设置为
for (int i = 0; i < numSamples; i++)
{
double sample = samples[i];
re[i] = sample;
im[i] = 0.0;
}
然后将其传递给FFT函数。 我将结果读出为
int numPartials = numSamples / 2;
for (int i = 1; i < numPartials; i++)
{
outMagnitudes[i] = (float)sqrt(re[i] * re[i] + im[i] * im[i]);
outPhases[i] = (float)atan2(im[i], re[i]);
}
发生了2个问题:
我真的不知道我在这里做错了什么。
有没有人有想法?
答案 0 :(得分:1)
您只打印一半FFT结果,只有一半的能量,因此您可以获得一半的大小。其余的是负频镜像复共轭半。
你的锯齿不是以样品[0]为中心圆形,因此存在相移。