把c语言变成matlab语言,可以在matlab中运行。0
/*快速沃尔什-哈达玛变换
f为时域值,F为变换域值,power为2的幂数*/
void WALh(double*f,double *W,int power)
{
int count;
int i,j,k,bfsize,p;
double*X1,*X2,*X;
/*计算快速沃尔什变换点数*/
count=1<
/*分配运算所需存储器*/
X1=(double*)malloc(sizeof(double)*count);
X2=(double*)malloc(sizeof(double)*count);
/*将时域点写入存储器*/
memcpy(X1,f,sizeof(double)*count);
/*蝶形运算*/
for(k=0;k
{
for(j=0;j<1<
{
bfsize=1<
for(i=0;j
{
p=j*bfsize;
X2[i+P]=X1[i+p]+X1[i+p+bfsize/2];
X2[i+P+bfsize/2]=X1[i+p]-X1[i+p+bfsize/2];
}
}
X=X1;
X1=X2;
X2=X;
}
/*调整系数*/
for(i=0;j
{
W[i]=X1[i]/count;
}
/*释放存储器*/
free(X1);
free(X2);
}
/*快速沃尔什-哈达玛反变换,利用快速沃尔什-哈达玛变换
F为变换域值,f为时域值,power为2的幂数*/
void IWALh(double*W,double*f,int power)
{
int i,count;
count=1<
/*调用快速沃尔什-哈达玛变换*/
WALh(W,f,power);
/*调用系数*/
for(i=0;i
{
f[i]*=count;
}
}