- 积分
- 26952
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 150
- 最后登录
- 1970-1-1
签到天数: 198 天 连续签到: 155 天 [LV.7]常住居民III
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
卷积(褶积,Convolution)最早在1754年由法国数学家达朗贝尔提出,当时他在《宇宙体系的几个要点研究》中采用卷积积分推导泰勒定理;随后的1778年法国数学家拉普拉斯在概率论中正式使用卷积。至此,卷积还都只是在数学领域应用。
1960年代到1980年代,美国和日本的多位科学家用于矩阵输入系统的模式识别,随后开辟出卷积神经网络应用于工程(生物)领域并持续发展至今。此是应用于神经生物学领域。
在几乎同时期发展的双控理论及与各类线性变换一同发展的时频域信号分析中,卷积、反卷积、卷积定理等数学工具也大量应用,并成为我们电气工程专业基础课《电路》中的必修内容(一般人在大二之前的学习内容中都不会遇到);同时在地质探测、地震研究、油气勘探和开采中也都有应用。
在20年前的本世纪初,当Schroeter、Hollaender和Gringarten等人解决了反卷积计算方法上的稳定性问题后,有专家预言:随着测试新工具和新技术的增加和应用,以及与其它专业研究成果的更紧密结合,采用包含卷积算法的运算工具在工程测量中的作用与重要性将不断增大;
引用《数字信号处理》中的卷积定理:将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算、节省运算。
其C++代码如下:
1 void convolution(double *input1, double *input2, double *output, int mm, int nn)
2 {
3 double *xx = new double[mm + nn - 1];
4 // do convolution 【进行卷积】
5 for (int i = 0; i < mm + nn - 1; i++)
6 {
7 xx[i] = 0.0;
8 for (int j = 0; j < mm; j++)
9 {
10 if (i - j >= 0 && i - j < nn)
11 xx[i] += input1[j] * input2[i - j];
12 }
13 }
14 // set value to the output array 【输出数组XX值】
15 for (int i = 0; i < mm + nn - 1; i++)
16 output[i] = xx[i];
17 delete[] xx;
18}
|
|