c语言 整形参数 英文,C语言的谱减法实现(国外英文资料).doc

C语言的谱减法实现(国外英文资料)

C语言的谱减法实现(国外英文资料)

# include < stdio . h >

# include < stdlib.h >

# include < math.h >

#定义WL 256 / /窗长

#定义P 10 / /预测系数

# undefπ

#定义3.1415926535897932384626434π

#定义3.1415926π

#定义winsize 256

#定义tempsize winsize / 2

#定义buffsize winsize * 10

typedef struct {

双的;

双编码器;

}复杂;

unsigned int f = 0;

无符号整型c = 0;

复杂的噪声(winsize);

双buff_r[buffsize];

双buff_w[buffsize];

双温度(tempsize);

复杂的x(winsize);

复杂的y(winsize);

int hr = 0;

复杂的W(winsize);

复杂的W1[winsize];

双x_abs[winsize];

双y_abs[winsize];

双noise_abs[winsize];

空白fft(复杂* x,int size_x复杂* W);/ *快速傅里叶变换* /

void ifft(复合* x,int size_x,complex * W1);

二倍角(复杂);/ /

空白添加(复杂的,复杂的,复杂的*);/ *复数加法* /

空白mul(复杂的,复杂的,复杂的*);/ *复数乘法* /

无效子(复杂的,复杂的,复杂的*);/ *复数减法* /

空变化(复杂* x,int size_x);/ *数组转置* /

双abs1(复杂的);

无效的汉明(复杂hw[]);

/ * int型read波形文件(char * fn,int * fs,short * * dat);

int ReadWaveFile(

/ /我char * fn:文件名

int * fs,/ / O:文件大小

短* * dat / / O:语音数据

)

{

文件*《外交政策》;

int dsize;

如果(fp = fn," rb + ")= = NULL){

fprintf(stderr," % s:No such file \ n ",fn);返回(- 1);

}

fseek(fp,0 l,SEEK_END);

dsize = ftell(fp)/ 2;

fseek(fp,0 l,SEEK_SET);

if(* dat =(short *)malloc(sizeof(short)* dsize)= = NULL)

fprintf(stderr,“内存错误\ n”);返回(- 1);

}

if(* dat,sizeof(short),dsize,fp)!=(unsigned int)dsize){

自由(* dat);

返回(1);

}

文件关闭(fp);

* fs = dsize;

返回(0);

} * /

无效的汉明(复杂hw[])

{

双x;

int我;

(我= 0;

{

双cos(x);

x = 2π* *我/(WL-1);

hw[我].real = hw[我].real *(0.54 - -0.46 * cos(x));/ / * 32768;

}

}

void fft(复合* x,int size_x,complex * W){

int i = 0 j = 0 k = 0,l = 0,jk = 0;

复杂的上,下,产品;

改变(x,size_x);

(我= 0;

l = 1 <

(j = 0;< size_x;j + = 2 * l){ / *一组蝶形运算* /

(k = 0;k < l;k + +){ / *一个蝶形运算* /

jk = j + k;

mul(x(jk + l),W(size_x * k / 2 / l),产品);

up.real = x(jk).real + product.real;

up.img = x(jk)。img + product.img;

down.real = x[jk].real-product.real;

下来。img = x[jk].img-product.img;

x(jk)=;

x(jk + l)=;

}

}

}

}

/ *变址计算,将x(n)码位倒置* /

空变化(复杂* x,int size_x){

复杂的温度;

无符号短我= 0,j = 0,k = 0;

双t;

(我= 0;< size_x;+ +){

k = i,j = 0;

t =(日志(size_x)/日志(2));

在((t -)> 0){

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值