Main Content

ifftn

多维快速傅里叶逆变换

说明

示例

X = ifftn(Y) 使用快速傅里叶变换算法返回 N 维数组的多维离散傅里叶逆变换。N 维逆变换相当于沿 Y 的每个维度计算一维逆变换。输出 X 的大小与 Y 相同。

示例

X = ifftn(Y,sz) 将在进行逆变换之前根据向量 sz 的元素截断 Y 或用尾随零填充 Ysz 的每个元素定义对应变换维度的长度。例如,如果 Y 是一个 5×5×5 数组,X = ifftn(Y,[8 8 8]) 将用零填充每个维度,从而产生 8×8×8 逆变换 X

示例

X = ifftn(___,symflag) 支持上述语法中的任何输入参数组合,且可指定 Y 的对称性。例如,ifftn(Y,'symmetric')Y 视为共轭对称。

示例

全部折叠

您可以使用 ifftn 函数将频率采样多维数据转换为时空采样数据。ifftn 函数还允许您控制变换的大小。

创建一个 3×3×3 数组并计算它的傅里叶逆变换。

Y = rand(3,3,3);
ifftn(Y);

用尾随零填充 Y 的维度,使变换的大小为 8×8×8。

X = ifftn(Y,[8 8 8]);
size(X)
ans = 1×3

     8     8     8

对于接近共轭对称的数组,通过指定 'symmetric' 选项,可以更快地计算傅里叶逆变换,还可以确保输出为实数。

计算接近共轭对称数组的三维傅里叶逆变换。

Y(:,:,1) = [1e-15*i 0; 1 0];
Y(:,:,2) = [0 1; 0 1];
X = ifftn(Y,'symmetric')
X = 
X(:,:,1) =

    0.3750   -0.1250
   -0.1250   -0.1250


X(:,:,2) =

   -0.1250    0.3750
   -0.1250   -0.1250

输入参数

全部折叠

输入数组,指定为向量、矩阵或多维数组。如果 Y 的类型为 single,则 ifftn 本身以单精度进行计算,X 的类型也是 single。否则,Xdouble 类型返回。

数据类型: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
复数支持:

逆变换维度的长度,指定为由正整数组成的向量。

数据类型: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

对称类型,指定为 'nonsymmetric''symmetric'。当 Y 由于舍入误差而导致不完全共轭对称时,ifftn(Y,'symmetric') 会通过忽略 Y 的后一半元素(在负频谱中)将它视为共轭对称。有关共轭对称的详细信息,请参阅算法

详细信息

全部折叠

N 维傅里叶逆变换

N 维数组 Y 的离散傅里叶逆变换 X 定义为

Xp1,p2,...,pN=j1=1m11m1ωm1p1j1j2=1m21m2ωm2p2j2...jN=1mN1mNωmNpNjNYj1,j2,...,jN.

每个维度的长度为 mk,其中 k = 1,2,...,N,而 ωmk=e2πi/mk 是复单位根,其中 i 是虚数单位。

算法

  • ifftn 函数测试多维数组 Y 是否共轭对称。如果 Y 为共轭对称矩阵,则逆变换计算更快,并且输出为实数。

    如果 g(a,b,c,...)=g*(a,b,c,...),则函数 g(a,b,c,...) 为共轭对称函数。然而,多维时域信号的快速傅里叶变换有一半频谱处于正频率,另一半处于负频率,第一行、第一列、第一页等保留给零频率。因此,举例来说,当所有这些条件都成立时,三维数组 Y 为共轭对称:

    • Y(1,1,2:end) 为共轭对称,即 Y(1,1,2:end) = conj(Y(1,1,end:-1:2))

    • Y(1,2:end,1) 为共轭对称,即 Y(1,2:end,1) = conj(Y(1,end:-1:2,1))

    • Y(2:end,1,1) 为共轭对称,即 Y(2:end,1,1) = conj(Y(end:-1:2,1,1))

    • Y(1,2:end,2:end) 为共轭中心对称,即 Y(1,2:end,2:end) = conj(Y(1,end:-1:2,end:-1:2))

    • Y(2:end,1,2:end) 为共轭中心对称,即 Y(2:end,1,2:end) = conj(Y(end:-1:2,1,end:-1:2))

    • Y(2:end,2:end,1) 为共轭中心对称,即 Y(2:end,2:end,1) = conj(Y(end:-1:2,end:-1:2,1))

    • Y(2:end,2:end,2:end) 为共轭中心对称,即 Y(2:end,2:end,2:end) = conj(Y(end:-1:2,end:-1:2,end:-1:2))

扩展功能

版本历史记录

在 R2006a 之前推出

另请参阅

| | | |