小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

DSP中重要的傅立葉變換的源程序

 molei 2015-04-03
#include<stdio.h> 
#include<math.h> 
#include<float.h> 
#include<malloc.h> 
#include<stdlib.h> 
void initial(int num_data, float* real, float* inm); 
void enter_data(int num_data, float* data); 
void wave_sin(int num_data, float* data); 
void wave_cos(int num_data, float* data); 
void decay(int num_data, float* data); 
void random(int num_data, float* data); 
void table(int num_data, char flag, 
float* tablesin, float* tablecos); 
void DFT(int num_data, char flag, float* real, float* img, 
float* tablesin, float* tablecos); 
float period; 

void main() 

int num_data; 
int i; 
char flag; 
float *real, *img; 
float *tablecos, *tablesin; 
printf("PLEASE INPUT SAMPLE PERIOD(Second):"); 
scanf("%f", &period); 
printf("PLEASE INPUT SAMPLE POINT NUMBER:"); 
scanf("%d", &num_data); 
fflush(stdin); 
printf("DFT OR IDFT (D/I):"); 
flag=getchar(); 
if(flag==‘d’) flag=‘D’; 
if(flag==‘i’) flag=‘I’; 
printf("\n"); 
real=(float*)malloc(sizeof(float)* num_data); 
img=(float*)malloc(sizeof(float)* num_data); 
tablesin=(float*)malloc(sizeof(float)* num_data); 
tablecos=(float*)malloc(sizeof(float)* num_data); 
initial(num_data, real, img); 
table(num_data, flag, tablesin, tablecos); 
DFT(num_data, flag, real, img, tablesin, tablecos); 
for(i=0; i<num_data; i++) 
printf("%8d real=%12.6f img=%12.6f\n", 
i, real, img); 
free(real); 
free(img); 
free(tablesin); 
free(tablecos); 


void initial(int num_data, float* real, float* img) 

int n; 
for(n=0; n<num_data; n++) 

real[n]=0; 
img[n]=0; 

printf("INITIAL REAL DATA\n"); 
enter_data(num_data, real); 
printf("\nINITIAL IMG DATA\n"); 
enter_data(num_data, img); 
}

void enter_data(int num_data, float* data) 

int selection; 
printf("FUNCTION SELECTION\n"); 
printf("1-----AMPLITUDE*SIN(2*3.1415926 
*FREQUENCY*PERIOD*T)\n"); 
printf(&

quot;2-----AMPLITUDE*COS(2*3.1415926 
*FREQUENCY*PERIOD*T)\n"); 
printf("3-----AMPLITUDE*EXP(-PERIOD)\n"); 
printf("4-----DATA=0\n"); 
printf("5-----ENTER DATA\n"); 
printf("ENTER SELECTION---"); 
scanf("%d", &selection); 
switch(selection) 

case 1:wave_sin(num_data, data);break; 
case 2:wave_cos(num_data, data);break; 
case 3:decay(num_data, data);break; 
case 4:break; 
case 5:random(num_data, data);break; 

}

void wave_sin(int num_data, float* data) 

float amplitude, frequency, c; 
int n; 
printf("PLEASE INPUT AMPLITUDE OF WAVE:\n"); 
scanf("%f", &amplitude); 
printf("PLEASE INPUT FREQUENCY OF WAVE(Hz):\n"); 
scanf("%f", &frequency); 
for(n=0; n<num_data; n++) 

c=2*3.1415926*frequency*period*n; 
data[n]=(float)(amplitude*sin(c)); 

}

void wave_cos(int num_data, float* data) 

float amplitude, frequency, c; 
int n; 
printf("PLEASE INPUT AMPLITUDE OF WAVE:\n"); 
scanf("%f", &amplitude); 
printf("PLEASE INPUT FREQUENCY OF WAVE(Hz):\n"); 
scanf("%f", &frequency); 
for(n=0; n<num_data; n++) 

c=2*3.1415926*frequency*period*n; 
data[n]=(float)(amplitude*cos(c)); 



void decay(int num_data, float* data) 

float amplitude, c; 
int n; 
printf("PLEASE INPUT AMPLITUDE OF WAVE\n"); 
scanf("%f", &amplitude); 
for(n=0; n<num_data; n++) 

c=-period*n; 
data[n]=(float)(amplitude*exp(c)); 

}

void random(int num_data, float* data) 

int n; 
for(n=0; n<num_data; n++) 

printf("PLEASE INPUT DATA[%d]:", n); 
scanf("%f", &data[n]); 

}

void table(int num_data, char flag, 
float* tablesin, float* tablecos) 

float w, c; 
int n; 
w=(float)(8*atan(1)/num_data); 
if(flag==‘D’) w=-w; 
for(n=0; n<num_data; n++) 


c=w*n; 
tablecos[n]=(float)cos(c); 
tablesin[n]=(float)sin(c); 

}

void DFT(int num_data, char flag, float* img, 
float* tablesin, float* tablecos) 

int i, j, L; 
float *result_r, *result_i; 
result_r=(float*)malloc(sizeof(float)*num_data); 
result_i=(float*)malloc(sizeof(float)*num_data); 
for(i=0; i<num_data; i++) 

result_r=0; 
result_i=0; 
for(j=0; j<num_data; j++) 

L=i*j%num_data; 
result_r=result_r+real[j]*tablecos[L] 
+img[j]*tablesin[L]; 
result_i=result_i+img[j]*tablecos[L] 
-real[j]*tablesin[L]; 


if(flag==‘D’) 

for(i=0; i<num_data; i++) 

real=result_r; 
img=result_i; 


else if(flag==‘I’) 

for(i=0; i<num_data; i++) 

real=result_r/num_data; 
img=result_i/num_data; 


free(result_r); 
free(result_i); 
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多