⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wavelet.c

📁 源程序是关于9/7小波的提升方案的c语言的实现
💻 C
字号:
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
//分解重构系数
#define ALPHA  -1.586134342
#define BELTA  -0.05298011854
#define GAMMA  0.8829110762
#define DELTA  0.4435068522
#define K 1.230174105

void main()
{
	double data[20];
	int Datalen = 20;
	int c;
	int mid = (Datalen+1)/2;   
	double odd[10],even[10];     // 分解的奇分量和偶分量
 
	for(c=0;c<Datalen;c++)       //待分解的数
	{
		data[c] = c;
	}

	printf("原始数据\n");        //产生小波的原始数据
	for(c=0;c<mid;c++)
	{
		even[c]=data[c*2];       //分裂的偶分量
		odd[c]=data[c*2+1];      //分裂的奇分量
        printf("%f\t%f\n",even[c],odd[c]);      //输出待分解的数
	}
//分解////////////////////////////////////////

	for(c=0;c<mid-1;c++)         //预测
	{
		odd[c]+=ALPHA*(even[c]+even[c+1]);
	}
	odd[mid-1]+=ALPHA*(even[mid-1])*2;

	even[0]+=BELTA*(odd[0])*2;    //更新
	for(c=1;c<mid;c++)
	{
		even[c]+=BELTA*(odd[c-1]+odd[c]);
	}
 
	for(c=0;c<mid-1;c++)          //预测
	{
		odd[c]+=GAMMA*(even[c]+even[c+1]);
	}
	odd[mid-1]+=GAMMA*(even[mid-1])*2;

	even[0]+=DELTA*(odd[0])*2;    //更新
	for(c=1;c<mid;c++)
	{
		even[c]+=DELTA*(odd[c-1]+odd[c]);
	}

	printf("小波分解结果\n");     //输出结果
	for(c=0;c<mid;c++)
	{
		even[c]=even[c]/K;
		odd[c]=odd[c]*K;
		printf("%f\t%f\n",even[c],odd[c]);
	}	

//重构//////////////////////////////////////
	
	for(c=0;c<mid;c++)
	{
		even[c]=even[c]*K;
		odd[c]=odd[c]/K;
	}

	even[0]+=DELTA*(odd[0])*2;    //反更新
	for(c=1;c<mid;c++)
	{
		even[c]+=DELTA*(odd[c-1]+odd[c]);
	}

	for(c=0;c<mid-1;c++)          //反预测
	{
		odd[c]+=GAMMA*(even[c]+even[c+1]);
	}
	odd[mid-1]+=GAMMA*(even[mid-1])*2;

	even[0]+=BELTA*(odd[0])*2;    //反更新
	for(c=1;c<mid;c++)
	{
		even[c]+=BELTA*(odd[c-1]+odd[c]);
	}

	for(c=0;c<mid-1;c++)          //反预测
	{
		odd[c]+=ALPHA*(even[c]+even[c+1]);
	}
	odd[mid-1]+=ALPHA*(even[mid-1])*2;

	printf("重构结果\n");         //输出结果
	for(c=0;c<mid;c++)
	{
		printf("%f\t%f\n",even[c],0-odd[c]);
	}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -