如果数组x的尾随维数为奇数,则转换y = irfftn(rfftn(x))不具有与输入数组相同的形状。这是故意的吗?如果是的话,动机是什么?示例代码如下。
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)发布于 2017-03-05 16:32:57
在您的情况下,需要传递第二个参数x.shape,代码如下所示:
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
https://stackoverflow.com/questions/42610857
复制相似问题