c语言算法公式大全,二、小波分析算法的C语言实现 - 小波分析算法的公式与C语言实现...

二、小波分析算法的C语言实现

小波变换程序:

voidDB4DWT(doubleData[],intn)

{

if(n》=4)

}

inTI,j;

intbalf=n》》1;

double*tmp=newdouble[n];

i=0;

for(j=0;j《half;j++)

{

tmp[j]=Data[(2*j)%n]*h0+

Data(2*j+l)%n]*h1+

Data[(2*j+2)%n]*h2+

Data[(2*j+3)%n]*h3;

tmp[j+half]=Datal(2*j)%n]*g0+

Data[(2*j+I)%n]*g1+

Datal(2*j+2)%n]*g2+

Data[(2*j+3)%n]*g3;

}

for(i=0;i《n;i++)

{

Data[i]=tmp[i];

}}}

提升算法的程序

小波的分解算法的提升过程如下:

57e61eb4a91baf82aa4c79d343d6800d.png

使用提升算法的程序:

voidDB4LiftDWT(doubleData[],intn)

应用研究

inTI,half=n》》1;

double*pS=newdouble[half];

//临时变量存放平滑系数

double*pD=new

double[half];

//临时变量存放细节系数

for(i=0;i《half;it+)/赋值

{

pS[j]=Data[2*i]://even,

pD[i]=Data[2*i+1]://odd

}

for(i=0;i《half;i++)11DB4变换Update1

{

pS[i]=pS[i]+pD[i]*sqrt_3;

}

for(i=0;i《half;i++)//DB4的predict

{

pD[i]=pD[i]-sqrt_3*p$[i14

(sqt_3-2)*pS[(-1)》=0?(i-1):(halfTI-1)14;

//边界是采用周期延拓

}

for(i=0;i《half;i++)//DB4的update2

{

pS[i]=pS[i]-pD[(i+1)%half];

/1边界采用周期延拓

}

for(i=0;i《half;i++)

{

p$[i]=(sqt_3-1)*pS[iV(sqnt_2);/比例系数

pD[i]=(sqrt_3+1)*pD[i](sqrt_2);

}

for(i=0;i《half;i++)

{

Data[i]=pS[i];//将平滑系数放回原数组

}

for(i=half;i《length;i++)

{

Data[i]=pD[i-half];

/将细节系数放回原数组

}

deleteOpD;

delete[DpS;

在目述程序中用到了两个临时变量数组,虽然程

序结构清楚,容易阅读但消耗较大的内存空间,这里给

出另一种方法不用辅助数组,带来节约内存,但耗时。

voidsplit(doubleData[],intn)

{intstart=1;

intend=n-1;

while(start《end)

{for(inTI=start;i《end;i=i+2)

{doubletmp=Data[i];

Data[i]=Data[i+1];

Data[i+l]=tmp;}

start=start+1;

end=end-1;}}

对原数组调用split函数进行处理后,则Data数组的前半部分是偶数索引值,后半部分是奇数索引值。再对提升算法的程序进行一些修正就可以起到节约内存的目的。具体的实现限于篇幅不多介绍。利用提升算法的小波程序结构清楚,与Mallat算法相比运算量也小[3]。同时它的反变换也很易实现,这里由于篇幅限制,不对反变换作多的介绍。

本文给出了一维小波变换的C的实现,可在基础上实现:二维的小波变换,希望对要自己实现小波变换的读者有一定的帮助。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值