HARR小波分解与重构C++代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//*********************
// 小波分解与才重构
// Edit by Atp
//*********************
#include
#include
#include
#include
#include
using namespace std;
int main(){
srand(time(NULL));
ofstream fout("OutPut.txt",ios::out);
int RandomTime=1024;
double h[2]={0.5,0.5};
double h_[2]={1,1};
double g[2]={-0.5,0.5};
double g_[2]={-1,1};
int OriginalData[1025];
double DiTong[2][1024];
double GaoTong[2][1024];
double CaiYang1[512];
double CaiYang2[512];
double Separate[1024];
double YanTuo1[1025];
double YanTuo2[1025];
double CaiYang3[512];
double CaiYang4[512];
//double ChongGou[1024];
double Result[1024];
//生成源随机数
for(int i=0;i
OriginalData[1024]=OriginalData[0];
//低通滤波
for(int j=0;j
DiTong[0][j]=OriginalData[j]*h[0]+OriginalData[j+1]*h[1];
}
//高通滤波
for(int j=0;j
GaoTong[0][j]=OriginalData[j]*g[0]+OriginalData[j+1]*g[1];
}
//下采样
for(int j=0;j<512;j++)
{
CaiYang1[j]=DiTong[0][j*2];
CaiYang2[j]=GaoTong[0][j*2];
//一级小波分解
Separate[j]=CaiYang1[j];
Separate[j+512]=CaiYang2[j];
}
//*****************重构**********************
//上采样及延拓
for(int j=0;j<512;j++)
{
YanTuo1[2*j+1]=CaiYang1[j];
YanTuo1[2*j+2]=0.0;
YanTuo2[2*j+1]=CaiYang2[j];
YanTuo2[2*j+2]=0.0;
}
YanTuo1[0]=0.0;
YanTuo2[0]=0.0;
//低通滤波
for(int j=0;j
DiTong[1][j]=YanTuo1[j]*h_[1]+YanTuo1[j+1]*h_[0];
}
//高通滤波
for(int j=0;j
GaoTong[1][j]=YanTuo2[j]*g_[1]+YanTuo2[j+1]*g_[0];
}
for(int j=0;j<1024;j++){
Result[j]=DiTong[1][j]+GaoTong[1][j];
}
//输出结果
cout<
{
cout<
cout<
{
cout<
cout<
{
cout<
//输出到文件
fout<
{
fout<
fout<
{
if(k==511)
fout<
fout<
{
fout<
return(0);
}