首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么伊夫万亿(rff万亿(X))不等于x?

为什么伊夫万亿(rff万亿(X))不等于x?
EN

Stack Overflow用户
提问于 2017-03-05 16:25:47
回答 1查看 616关注 0票数 2

如果数组x的尾随维数为奇数,则转换y = irfftn(rfftn(x))不具有与输入数组相同的形状。这是故意的吗?如果是的话,动机是什么?示例代码如下。

代码语言:javascript
复制
import numpy as np

shapes = [(10, 10), (11, 11), (10, 11), (11, 10)]

for shape in shapes:
    x = np.random.uniform(0, 1, shape)
    y = np.fft.irfftn(np.fft.rfftn(x))
    if x.shape != y.shape:
        print("expected shape %s but got %s" % (shape, y.shape))

# Output
# expected shape (11, 11) but got (11, 10)
# expected shape (10, 11) but got (10, 10)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-05 16:32:57

在您的情况下,需要传递第二个参数x.shape,代码如下所示:

代码语言:javascript
复制
import numpy as np

shapes = [(10, 10), (11, 11), (10, 11), (11, 10)]

for shape in shapes:
    x = np.random.uniform(0, 1, shape)
    y = np.fft.irfftn(np.fft.rfftn(x),x.shape)
    if x.shape != y.shape:
        print("expected shape %s but got %s" % (shape, y.shape))

从医生那里

该函数利用快速傅里叶变换(FFT)计算N维离散傅里叶变换在任意多个轴上的实际输入的逆函数。换句话说,在数值精度范围内,a.shape(rfftn(A),== a)为==a。( a.shape是必要的,就像len(a)对于irfft一样,也是出于同样的原因。)

来自同一文档的x.shape描述:

输出的可选形状(每个转换轴的长度) (s指轴0,s1表示轴1,等等)。S也是沿着这个轴使用的输入点的数目,除了最后一个轴,其中使用输入的s-1//2+1点。沿任意轴,如果s表示的形状小于输入的形状,则裁剪输入。如果它更大,输入将被填充零。如果不给出s,则使用沿轴所指定的轴的输入形状。

https://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.irfftn.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42610857

复制
相关文章

相似问题

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