资源简介
可实现多层小波分解,使用DB4,用于电网数据压缩。
代码片段和文件信息
#include
#include
#include
#define LENGTH 40//信号长度
/*****************************************************************
* 一维卷积函数
*
* 说明: 循环卷积卷积结果的长度与输入信号的长度相同
*
* 输入参数: data[]输入信号; h[]Daubechies小波基低通滤波器系数;
* g[]Daubechies小波基高通滤波器系数; cov[]卷积结果;
n输入信号长度; m卷积核长度.
*****************************************************************/
void Covlution(double data[] double h[] double g[] double cov[] int n int mint nStep)
{
int i = 0;
int j = 0;
int k = 0;
// int knl;
// double ckdk;
// double e[]f[];
// for(k=0;k // {
// ck=0.0;
// dk=0.0;
// for(l=0;l<8;l++)
// {
// n=k+l;
// ck+=data[n%LENGTH/pow(2i)]*h[l];
// dk+=data[n%LENGTH/pow(2i)]*g[l];
// }
// e[k]=ck;
// f[k]=dk;
// }
//将cov[]清零
for(i = 0; i < n; i++)
{
cov[i] = 0;
}
//****************************************************
//奇数行用h[]进行卷积
//****************************************************
//前m/2+1行
i = 0;
for(j = 0; j < m/2; j+=2 i+=2)
{
for(k = m/2-j; k < m; k++ )
{
cov[i] += data[k-(m/2-j)] * h[k];//k针对core[k]
}
for(k = n-m/2+j; k < n; k++ )
{
cov[i] += data[k] * h[k-(n-m/2+j)];//k针对data[k]
}
}
//中间的n-m行
for( ; i <= (n-m)+m/2; i+=2)
{
for( j = 0; j < m; j++)
{
cov[i] += data[i-m/2+j] * h[j];
}
}
//最后m/2-1行
// i = ( (n - m) + m/2 + 1 )/2*2;//**********
for(j = 1; j <= m/2; j+=2 i+=2)
{
for(k = 0; k < j; k++)
{
cov[i] += data[k] * h[m-j-k];//k针对data[k]
}
for(k = 0; k < m-j; k++)
{
cov[i] += h[k] * data[n-(m-j)+k];//k针对core[k]
}
}
//****************************************************
//偶数行用g[]进行卷积
//****************************************************
//前m/2+1行
i = 1;
for(j = 0; j < m/2; j+=2 i+=2)
{
for(k = m/2-j; k < m; k++ )
{
cov[i] += data[k-(m/2-j)] * g[k];//k针对core[k]
}
for(k = n-m/2+j; k < n; k++ )
{
cov[i] += data[k] * g[k-(n-m/2+j)];//k针对data[k]
}
}
//中间的n-m行
for( ; i <= (n-m)+m/2; i+=2)
{
for( j = 0; j < m; j++)
{
cov[i] += data[i-m/2+j] * g[j];
}
}
//最后m/2-1行
// i = ( (n - m) + m/2 + 1 ) ;//*********
for(j = 1; j <= m/2; j+=2 i+=2)
{
for(k = 0; k < j; k++)
{
cov[i] += data[k] * g[m-j-k];//k针对data[k]
}
for(k = 0; k < m-j; k++)
{
- 上一篇:STC12c4052ad AD程序
- 下一篇:log算子的边缘检测算法
评论
共有 条评论