小波变换c语言程序包,小波包3层分解C语言源程序

本文提供了一段使用C语言实现的小波包3层分解的代码,包含一维卷积函数和一维小波变换函数。通过读取文件数据,对信号进行小波变换,并将结果输出到多个文件中。
摘要由CSDN通过智能技术生成

#include

#include

#include

#include

#define LENGTH 4096//信号长度

#define DB_LENGTH 8  //Daubechies小波基紧支集长度

/******************************************************************

* 一维卷积函数

*

* 说明: 循环卷积,卷积结果的长度与输入信号的长度相同

*

* 输入参数: data[],输入信号; core[],卷积核; cov[],卷积结果;

*            n,输入信号长度; m,卷积核长度.

*

* 李承宇, lichengyu2345@126.com

*

*  2010-08-18

******************************************************************/

/*void Covlution(double data[], double core[], double cov[], int n, int m)

{

int i = 0;

int j = 0;

int k = 0;

//将cov[]清零

for(i = 0; i < n; i++)

{

cov[i] = 0;

}

//前m/2+1行

i = 0;

for(j = 0; j < m/2; j++, i++)

{

for(k = m/2-j; k < m; k++ )

{

cov[i] += data[k-(m/2-j)] * core[k];//k针对core[k]

}

for(k = n-m/2+j; k < n; k++ )

{

cov[i] += data[k] * core[k-(n-m/2+j)];//k针对data[k]

}

}

//中间的n-m行

for( i = m/2; i <= (n-m)+m/2; i++)

{

for( j = 0; j < m; j++)

{

cov[i] += data[i-m/2+j] * core[j];

}

}

//最后m/2-1行

i = (n - m) + m/2 + 1;

for(j = 1; j < m/2; j++, i++)

{

for(k = 0; k < j; k++)

{

cov[i] += data[k] * core[m-j-k];//k针对data[k]

}

for(k = 0; k < m-j; k++)

{

cov[i] += core[k] * data[n-(m-j)+k];//k针对core[k]

}

}

}

*/

//定义一个线性卷积

void Covlution(double data[], double core[], double cov[], int n, int m)

{

int i = 0;

int j = 0;

int t = 0;

//将cov[]清零

for(j = 0; j < n+m-1; j++)

{

cov[j] = 0;

}

for(j=0;j

{

if(j<=m-1)       //前面m行

{

for(i=0,t=j;t>=0;i++,t--)

cov[j]+=data[i]*core[t];

}

else if(j<=n-1)    //中间n-m行

{

for(i=j-m+1,t=m-1;t>=0;i++,t--)

cov[j]+=data[i]*core[t];

}

else     //后面m行

{

for(i=j-m+1,t=m-1;i

cov[j]+=data[i]*core[t];

}

}

}

/******************************************************************

* 一维小波变换函数

*

* 说明: 一维小波变换,只变换一次

*

* 输入参数: input[],输入信号; output[],小波变换结果,包括尺度系数和

* 小波系数两部分; temp[],存放中间结果;h[],Daubechies小波基低通滤波器系数;

* g[],Daubech

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值