0
#include <stdio.h>
#include <Windows.h>
#include <string.h>
#include <stdlib.h>
#include "fftw3.h"


int main(void)
{
    FILE *fp;

    int rozmiar_pliku;
    char standard[5] = {0};
    char format[5] = {0};
    int samplerate;

    int k,i;

    fftw_complex in[128];
    fftw_complex out[128];
    fftw_plan p;


    fp = fopen("Kalimba.wav","rb" );

    //printf("%d\n",fp);

    if (fp)
    {
        fread(standard,1,4,fp);
        printf("%s\n",standard);
        printf("RIFF\n");
        if (!strcmp(standard,"RIFF" ))
        {

            fread(&rozmiar_pliku,4,1,fp);

            printf("size: %d\n", rozmiar_pliku);
        }

        fread(format,1,4,fp);

        printf("format: %s\n",format);

        fseek(fp,24,SEEK_SET);

        fread(&samplerate,1,4,fp);

        printf("sample rate: %d\n",samplerate);


        fseek(fp,44,SEEK_SET);


        for(i=0;i<128;++i)
        {
            in[i][0]=getc(fp);
            in[i][1]=in[i][0];

        }


/*
        p = fftw_plan_dft_1d(128, in, out, FFTW_FORWARD, FFTW_ESTIMATE);

        fftw_execute(p);


        for(int j=0;j<128;++j)
            printf("%lf+i*%lf",out[j][0],out[j][1]);

        fftw_destroy_plan(p);
        fftw_free(in);
        fftw_free(out);
*/
    }

    return 0;
}

FFTW3を使用してWaveファイルを読み取ってFFTを実行しようとしています。コメントされた部分のコメントを外すと、画面に何も表示されません。コメントしたままにしておくと:

RIFF
RIFF
size: 61392422
format: WAVE
sample rate: 44100

コメントがない場合、何も表示されません。なんでこんな感じなのかわからない。fftw3を使用すると、この状況が発生します。

4

2 に答える 2

0

inおよびout静的に宣言された配列です。&in[0] と &out[0] を渡して、 が期待する型に一致させてみてくださいfftw_plan_dft_1d

于 2013-02-17T16:42:08.267 に答える