首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么scipy.signal.windows.gaussian产生的数字与Matlab和Octave的gausswin不同?

为什么scipy.signal.windows.gaussian产生的数字与Matlab和Octave的gausswin不同?
EN

Stack Overflow用户
提问于 2022-02-20 16:35:18
回答 1查看 138关注 0票数 0

例如,我们可以使用长度为16的窗口,以3作为偏差:

代码语言:javascript
运行
复制
scipy.signal.windows.gaussian(16,3)
#returns : 
array([0.04393693, 0.09563444, 0.18627046, 0.32465247, 0.50633562,
       0.70664828, 0.8824969 , 0.98620712, 0.98620712, 0.8824969 ,
       0.70664828, 0.50633562, 0.32465247, 0.18627046, 0.09563444,
       0.04393693])

作为八度音阶产生的地方:

代码语言:javascript
运行
复制
gausswin(16,3)
#returns : 
0.011109
   0.034047
   0.088922
   0.197899
   0.375311
   0.606531
   0.835270
   0.980199
   0.980199
   0.835270
   0.606531
   0.375311
   0.197899
   0.088922
   0.034047
   0.011109

Matlab产生了类似于八度的结果。我真的不明白为什么数字会故意不同?是虫子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-20 19:44:38

来自scipy.signal.windows的函数gausswin(m, a)和来自Octave signal包的Octave函数gausswin(m, a)不以相同的方式处理第二个参数。要将八度参数ma转换为scipy参数,可以使用

代码语言:javascript
运行
复制
std = (m - 1)/(2*a)

例如,下面是如何获得使用gausswin(16, 3)在Octave中生成的相同值

代码语言:javascript
运行
复制
In [74]: from scipy.signal.windows import gaussian

In [75]: m = 16

In [76]: a = 3

In [77]: gaussian(m, (m - 1)/(2*a))
Out[77]: 
array([0.011109  , 0.03404745, 0.08892162, 0.1978987 , 0.3753111 ,
       0.60653066, 0.83527021, 0.98019867, 0.98019867, 0.83527021,
       0.60653066, 0.3753111 , 0.1978987 , 0.08892162, 0.03404745,
       0.011109  ])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71196448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档