C 用kiss_-fft实现复频率到实信号的变换
我正在尝试FFT我的复杂信号,输出应该是真实的。所以我做了这个代码C 用kiss_-fft实现复频率到实信号的变换,c,type-conversion,fft,kissfft,C,Type Conversion,Fft,Kissfft,我正在尝试FFT我的复杂信号,输出应该是真实的。所以我做了这个代码 #include <stdio.h> #include <stdlib.h> #include <math.h> #include "lib\kiss_fftr.c" int N = 16; void TestFftReal(const char* title, const kiss_fft_cpx in[N/2+1], kiss_fft_scalar out[N/2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "lib\kiss_fftr.c"
int N = 16;
void TestFftReal(const char* title, const kiss_fft_cpx in[N/2+1], kiss_fft_scalar out[N/2+1])
{
kiss_fftr_cfg cfg = kiss_fftr_alloc(N, 1/*is_inverse_fft*/, NULL, NULL);
printf("%s\n", title);
if (cfg != NULL)
{
size_t i;
kiss_fftr(cfg, in, out);
free(cfg);
for (i = 0; i < N; i++)
{
printf("out[%2zu] = %+f ", i, out[i]);
if (i < N/2+1 )
{
printf(" in[%2zu] = %+f, %+f ", i, in[i].r, in[i].i);
}
printf("\n");
}
}
}
int main(void)
{
kiss_fft_cpx In[N/2+1];
kiss_fft_scalar Out[N];
size_t i;
for (i = 0; i < N; i++)
{
In[i].r = In[i].i = 0;
}
TestFftReal("Zeroes (real)", In, Out);
for (i = 0; i < N; i++)
{
In[i].r = 1, In[i].i = 0;
}
TestFftReal("Ones (real)", In, Out);
for (i = 0; i < N; i++)
{
In[i].r = sin(45 * i * (M_PI / 180)), In[i].i =0;
}
TestFftReal("SineWave (real)", In, Out);
return 0;
}
#包括
#包括
#包括
#包括“lib\kiss\u fftr.c”
int N=16;
void TestFftReal(常量字符*标题,常量kiss\u fft\u cpx输入[N/2+1],kiss\u fft\u标量输出[N/2+1])
{
kiss_fftr_cfg cfg=kiss_fftr_alloc(N,1/*是逆的,NULL,NULL);
printf(“%s\n”,标题);
如果(cfg!=NULL)
{
尺寸i;
kiss_fftr(cfg、in、out);
免费(cfg);
对于(i=0;i
但是现在我对函数kiss_fftr()有一个问题。我应该用kiss_fft()吗?
错误表明in或out不是正确的类型,但在Git Hub上它表示应该这样。 至少这个问题: 代码尝试在3个不同的循环中分配[]范围内的外部
kiss_fft_cpx In[N/2+1];
...
for (i = 0; i < N; i++)
{
In[i].r = In[i].i = 0;
}
。。。然后函数从kiss\u fft\u scalar
到kiss\u fft\u cpx
。OP的代码是相反的
TestFftReal( ... const kiss_fft_cpx in[N/2+1], kiss_fft_scalar out[N/2+1]) {
kiss_fftr(cfg, in, out);
也许OP想要的是亲吻而不是亲吻
“错误说明in或out类型不正确”-->最好在此处发布准确的错误消息。让你的帖子更容易为其他有类似问题的人找到。谢谢我以后会这么做
void kiss_fftr(kiss_fftr_cfg st,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata)
TestFftReal( ... const kiss_fft_cpx in[N/2+1], kiss_fft_scalar out[N/2+1]) {
kiss_fftr(cfg, in, out);
void kiss_fftri(kiss_fftr_cfg st,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata)