python内积 卷积

举报
风吹稻花香 发表于 2021/06/05 22:12:24 2021/06/05
【摘要】 内积就是点乘,卷积先取反。 import numpy as np bb=[1,2]cc=[2,3] aa=np.dot(bb,cc) print(aa) dd= np.convolve([2,1],cc,'valid')print(dd) dd= np.convolve(bb,cc,'same')print(dd) dd= np.convolve(bb,cc,'ful...

内积就是点乘,卷积先取反。


  
  1. import numpy as np
  2. bb=[1,2]
  3. cc=[2,3]
  4. aa=np.dot(bb,cc)
  5. print(aa)
  6. dd= np.convolve([2,1],cc,'valid')
  7. print(dd)
  8. dd= np.convolve(bb,cc,'same')
  9. print(dd)
  10. dd= np.convolve(bb,cc,'full')
  11. print(dd)

结果:

8
[8]
[2 7]
[2 7 6]

scipy的signal模块经常用于信号处理,卷积、傅里叶变换、各种滤波、差值算法等。 
*两个一维信号卷积

数组卷积的例子:

 


  
  1. import scipy.signal
  2. import numpy as np
  3. x=np.array([1,2,3,4])
  4. h=np.array([1,1,1])
  5. bb= scipy.signal.convolve(x,h) #卷积运算
  6. print(bb)

       卷积运算大致可以分成3步,首先先翻转,让两个信号列反过来,如上面就是1,2,3和6,5,4。然后作平移,6,5,4最开始在1,2,3的左边,没有重叠,现在向右移动,4和1就重叠了。对于重叠的部分,作乘积求和。也就是1x4得到第一个结果1,然后再移动后5x1+4x2得到第二个结果13以此类推。 

卷积运算可以用来做大整数的乘法(数组表示数的乘法),比如在上面的例子中,要求123乘以456,可以先得到它的卷积序列,然后从后往前,18将8保留,进位1给27;然后27变成28,把8保留进位2给28;然后28变成30,把0保留进位3给13;然后13变成16,把6保留进位1给4;4变成5即是最高位。也就是乘法的结果是56088。

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/95863571

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。