資源簡介
用簡單的haar 小波對信號進行二層分解

代碼片段和文件信息
/***********************
@author?張浩龍
@all?rights?reserved
采用haar小波對信號進行分析?
分解層數:一層
目標信號:sin?函數
其他說明:若想多層分解?只需將coffe數組中的偶數項(對應于低頻信號)再通過函數進行一次即可?
若想采用其他小波?例如db2小波?則需要變換一下系數?
比如db2?小波有四個系數?分別為?0.48296?0.83651?0.22414?-0.1294?可在matlab下用?wfilter(‘db2‘‘d‘)得到相應系數
************************/
#include?
#include?
#define?M?100?//M為采樣個數?
//以下四個宏為高通和低通濾波器系數(濾波器分解系數)?也為haar小波方程和尺度方程的分解系數
#define?H1_0?-0.7071?
#define?H1_1?0.7071
#define?H0_0?0.7071
#define?H0_1?0.7071
double?signal[M];//原信號
double?rec_signal[M];//重建的信號
double?error[M];//誤差數組
double?coffe[M];?//系數矩陣?存儲一次變換后?ca?和?cd?
void?input_Signal(void)
{
//暫且用正弦信號作為輸入?當然可以改成昨天你給我看的那個調頻信號?不過需要你自己在這構建函數表達式
for(int?i?=?0;?i signal[i]?=?sin(i);
}
void?Haar_transform(void)
{
????for(int?i=0;?i {
?????????if(0?==?i%2)
?{
?????????????coffe[i]?=?signal[i]*H0_1?+?signal[i+1]*H0_0;//此處為進行卷積計算?低通濾波
?}
?else
?{
?????????????coffe[i]?=?signal[i-1]*H1_1?+?signal[i]*H1_0;//此處為進行卷積計算?高通濾波
?}
}
}
void?Haar_reconstruction(void)
{
for(int?i=0;?i {
if(0?==?i%2)
{
rec_signal[i]?=?coffe[i]*H0_1?+?coffe[i+1]*H1_1;//此處為進行卷積計算?低通濾波
}
else
{
rec_signal[i]?=?coffe[i-1]*H0_0?+?coffe[i]*H1_0;//此處為進行卷積計算?高通濾波
}
}
}
void?Error_Calculate(void)
{
?????for(int?i=0;?i ?error[i]?=?fabs(signal[i]?-?rec_signal[i]);
}
void?output(void)
{
int?i;
????printf(“一層分解低頻系數為:\n“);
for(i=0;?i {
printf(“%??????lf“coffe[i]);
}
printf(“一層分解高頻系數為:\n“);
for(i=1;?i {
printf(“%??????lf“coffe[i]);
}
printf(“原信號為:\n“);
for(i=0;?i {
printf(“%??????lf“signal[i]);
}
printf(“重建信號為:\n“);
for(i=0;?i {
printf(“%??????lf“rec_signal[i]);
}
????printf(“誤差為:\n“);
for(i=0;?i {
printf(“%??????lf“error[i]);
}
}
void?main(void)
{
???input_Signal();
???Haar_transform();
???Haar_reconstruction();
???Error_Calculate();
???output();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2333??2013-04-20?12:29??Simple_Haar_Wavelet\Haar_wavelet.txt
?????文件????????2333??2013-04-20?12:28??Simple_Haar_Wavelet\Haar_wavelets.cpp
?????文件?????????211??2013-04-20?12:32??Simple_Haar_Wavelet\說明.txt
?????目錄???????????0??2013-04-20?12:30??Simple_Haar_Wavelet\
評論
共有 條評論