性格悪い人が優勝

ネットに載っていたものなのですが、エラーが出てしまい実行できません。
どこを直したらよいのかご教授ください。

#include <stdio.h>
#include <math.h>
#include "common.h"
#include "fftcore.h"
#define SIZE 16

void maketimedomain(double x[],int size)
{
int i;
for (i=0;i<size;i++) {
x[i]=sin((2*M_PI)*i/size);
}
}



main()
{
double timedomain[SIZE]; /*時間領域データ格納域*/
dcomplex_t fftwork[SIZE]; /*複素数作業領域*/

/*FFTの初期化*/
initfft(SIZE);

/*時間領域データの作成とファイル保存*/
maketimedomain(timedomain,SIZE);
savereal(timedomain,SIZE,"timedomain.txt");

/*FFT作業の準備のため,時間領域データを複素数作業領域へ*/
/*コピーとファイル保存*/
real2cmp(timedomain,fftwork,SIZE);
savecmp(fftwork,SIZE,"comptimedomain.txt");

/*FFT(順方向フーリエ変換)*/
/*作業領域fftworkの内容がスペクトルになる*/
/*得られたスペクトルのファイルへの保存*/
fft(1,fftwork,SIZE);
savecmp(fftwork,SIZE,"spectrum.txt");

}



そしてfftcore.h は

void savereal(double r[],int size,char *fname);
void savecmp(dcomplex_t c[],int size,char *fname);
void real2cmp(double r[],dcomplex_t c[],int size);
void cmp2real(dcomplex_t c[],double r[],int size);
void movecmp(dcomplex_t s[],dcomplex_t d[],int size);
void movereal(double s[],double d[],int size);
void compress(dcomplex_t x[],int size);
void expand(dcomplex_t x[],int size);
void makepower(dcomplex_t s[],double pow[],int size,int mode);
void makecross(dcomplex_t x[],dcomplex_t y[],dcomplex_t crs[],int size,int mode);
void makecohe(double psx[], double psy[], dcomplex_t crs[],double cohe[],int size);
/* mode -1:clear&calc, 0:calc&add, 0<m:calc,add&normarize by m */
void makecoheop(double pow[],double cohe[],double cohepow[],int size);
void makexfunc(double psx[], dcomplex_t crs[], dcomplex_t trans[],int size);
void hanning(dcomplex_t data[],int size);
void hamming(dcomplex_t data[],int size);
void rectwindow(dcomplex_t data[],int size,int lowerlimit,int upperlimit);
void fft(int cdir,dcomplex_t x[],int size);
void initfft(int fftsize);
void windowout(void);


そしてcommon.h は

typedef struct {
double real;
double image;
} dcomplex_t;

typedef struct {
double *firdfcoef;
double *firdfx;
int firdflen;
int ptr;
} firdf_t;

/*#define WORKSIZE 256
#define FREQDSIZE (WORKSIZE/2)+1*/

#ifndef M_PI
#define M_PI 3.14159265358979
#endif

になります。

A 回答 (3件)

fftcore.c と common.c を作らないといけないと思います。


ヘッダで定義したもののクラス実態がない
    • good
    • 0

構造体の定義をfftcore.hの中に書いたらどうですか?

    • good
    • 0

さて・・・・


どんなエラーが出たんでしょうか・・・・・

エラーの中身が分からなければ何が起きたのかは分かりませんね
    • good
    • 0
この回答へのお礼

時数足りなくて一行だけ書けないところがあったのですが以下の通りです。

17 | main()
| ^~~~
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\kymt\AppData\Local\Temp\ccvwMcEA.o:gyouretu4.c:(.text+0x67): undefined reference to `initfft'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\kymt\AppData\Local\Temp\ccvwMcEA.o:gyouretu4.c:(.text+0x9d): undefined reference to `savereal'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\kymt\AppData\Local\Temp\ccvwMcEA.o:gyouretu4.c:(.text+0xbc): undefined reference to `real2cmp'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\kymt\AppData\Local\Temp\ccvwMcEA.o:gyouretu4.c:(.text+0xd8): undefined reference to `savecmp'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\kymt\AppData\Local\Temp\ccvwMcEA.o:gyouretu4.c:(.text+0xf4): undefined reference to `fft'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:

お礼日時:2021/10/12 14:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!