搜档网
当前位置:搜档网 › HARR小波分解与重构C++代码

HARR小波分解与重构C++代码

//*********************
// 小波分解与才重构
// 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[i]=(int)(((double)rand()/RAND_MAX)*1000);}
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<<"源随机数: "<for(int k=0;k<1024;k++)
{
cout<}
cout<for(int k=0;k<1024;k++)
{
cout<}
cout<for(int k=0;k<1024;k++)
{
cout<}
//输出到文件
fout<fout<<"源随机数: "<for(int k=0;k<1024;k++)
{
fout<}
fout<for(int k=0;k<1024;k++)
{
if(k==511)
fout<fout<}
fout<for(int k=0;k<1024;k++)
{
fout<}
return(0);
}

相关主题