📄 哈尔变换基函数.txt
字号:
产生哈尔变换基函数的C语言源代码[原创]
做图像处理的朋友都知道哈尔变换,就不多介绍了。哈尔变换基函数定义为:
(1)h0(x)=1/N1/2
1/N1/2*2p/2,(q-1)/2p≤x<(q-1/2)/2p
(2)hk(x)=1/N1/2*(-2p/2),(q-1/2)/2p≤x<q/2p
0,对于其他x
式中,有k=2p+q-1,k≥0,p为满足2p≤k的最大整数,q-1是余数。
产生这样基函数的C语言代码如下,欢迎交流:
#i nclude <math.h>
#i nclude <conio.h>
void haer(int k,double r[],int n)
{
int p,q,i;
double start,mid,end;
if(k==0)
{
for(i=0;i<n;i++)
r[i]=1.0/sqrt(1.0*n);
return;
}
p=5;
while(pow(2,p)>k)
p--;
q=k-pow(2,p)+1;
start=(double)(q-1)/pow(2,p)*n;
mid=(double)(q-1.0/2)/pow(2,p)*n;
end=(double)q/pow(2,p)*n;
for(i=0;i<n;i++)
if(i>=start&&i<mid)
r[i]=1.0/sqrt(n*1.0)*pow(2,1.0*p/2);
else if(i>=mid&&i<end)
r[i]=-1.0/sqrt(n*1.0)*pow(2,1.0*p/2);
else if(i>=end||i<start)
r[i]=0;
}
void main()
{
int i,j;
double r[8]={0.0};
clrscr();
for(i=0;i<8;i++)
{
haer(i,r,8);
printf("\n%d\n",i);
for(j=0;j<8;j++)
{
if(j%4==0)
printf("\n");
printf("%13lf",r[j]);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -