ifft
快速傅里叶逆变换
说明
示例
向量的逆变换
时空采样数据与频率采样数据间的傅里叶变换及其逆变换。
创建一个向量并计算其傅里叶变换。
X = [1 2 3 4 5]; Y = fft(X)
Y = 1×5 complex
15.0000 + 0.0000i -2.5000 + 3.4410i -2.5000 + 0.8123i -2.5000 - 0.8123i -2.5000 - 3.4410i
计算 Y
的逆变换,结果与原始向量 X
相同。
ifft(Y)
ans = 1×5
1 2 3 4 5
填充的矩阵逆变换
ifft
函数允许您控制变换的大小。
创建一个随机的 3×5 矩阵,并计算每一行的 8 点傅里叶逆变换。每一行结果的长度均为 8。
Y = rand(3,5); n = 8; X = ifft(Y,n,2); size(X)
ans = 1×2
3 8
共轭对称向量
对于接近共轭对称的向量,通过指定 'symmetric'
选项,可以更快地计算傅里叶逆变换,还可以确保输出为实数。当计算引入舍入误差时,可能会出现接近共轭对称数据。
创建一个接近共轭对称的向量 Y
,并计算其傅里叶逆变换。然后计算逆变换并指定 'symmetric'
选项,这样可以消除接近 0 的虚部。
Y = [1 2:4+eps(4) 4:-1:2]
Y = 1×7
1.0000 2.0000 3.0000 4.0000 4.0000 3.0000 2.0000
X = ifft(Y)
X = 1×7 complex
2.7143 + 0.0000i -0.7213 + 0.0000i -0.0440 - 0.0000i -0.0919 + 0.0000i -0.0919 - 0.0000i -0.0440 + 0.0000i -0.7213 - 0.0000i
Xsym = ifft(Y,'symmetric')
Xsym = 1×7
2.7143 -0.7213 -0.0440 -0.0919 -0.0919 -0.0440 -0.7213
输入参数
Y
— 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。如果 Y
的类型为 single
,则 ifft
本身以单精度进行计算,X
的类型也是 single
。否则,X
以 double
类型返回。
数据类型: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
复数支持: 是
n
— 逆变换长度
[]
(默认) | 非负整数标量
逆变换长度,指定为 []
或非负整数标量。通过指定比 Y
的长度更大的变换长度来用零填充 Y
,可以提高 ifft
的性能。长度通常指定为 2 的幂或小质数的乘积。如果 n
小于信号的长度,则 ifft
忽略第 n
个条目之后的其余信号值,并返回截断后的结果。如果 n
为 0,则 ifft
返回空矩阵。
数据类型: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
dim
— 沿其运算的维度
正整数标量
沿其运算的维度,指定为正整数标量。默认情况下,dim
是大小不等于 1 的第一个数组维度。例如,假设有一个矩阵 Y
。
ifft(Y,[],1)
返回每一列的傅里叶逆变换。ifft(Y,[],2)
返回每一行的傅里叶逆变换。
数据类型: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
symflag
— 对称类型
'nonsymmetric'
(默认) | 'symmetric'
对称类型,指定为 'nonsymmetric'
或 'symmetric'
。当 Y
由于舍入误差而导致不完全共轭对称时,ifft(Y,'symmetric')
会通过忽略 Y
的后一半元素(在负频谱中)将它视为共轭对称。有关共轭对称的详细信息,请参阅算法。
详细信息
向量的离散傅里叶变换
Y = fft(X)
和 X = ifft(Y)
分别实现傅里叶变换和傅里叶逆变换。对于长度为 n
的 X
和 Y
,这些变换定义如下:
其中
为 n 次单位根之一。
算法
ifft
函数测试Y
中的向量是否共轭对称。如果Y
中的向量共轭对称,则逆变换的计算速度更快,并且输出为实数。如果 ,则函数 为共轭对称函数。然而,时域信号的快速傅里叶变换有一半频谱处于正频率,另一半处于负频率,第一个元素保留用于零频率。因此,当
v(2:end)
等于conj(v(end:-1:2))
时,向量v
为共轭对称向量。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
输出为复数。
不支持对称类型
'symmetric'
。有关可变大小数据的限制,请参阅Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder)。
对于 MEX 输出,MATLAB® Coder™ 使用 MATLAB 用于 FFT 算法的库。对于独立的 C/C++ 代码,默认情况下,代码生成器生成用于 FFT 算法的代码,而不是生成 FFT 库调用。要生成对安装的特定 FFTW 库的调用,请提供 FFT 库回调类。有关 FFT 库回调类的详细信息,请参阅
coder.fftw.StandaloneFFTW3Interface
(MATLAB Coder)。对于 MATLAB Function 模块的仿真,仿真软件使用 MATLAB 用于 FFT 算法的库。对于 C/C++ 代码生成,默认情况下,代码生成器生成用于 FFT 算法的代码,而不是生成 FFT 库调用。要生成对安装的特定 FFTW 库的调用,请提供 FFT 库回调类。有关 FFT 库回调类的详细信息,请参阅
coder.fftw.StandaloneFFTW3Interface
(MATLAB Coder)。使用代码替换库 (CRL),您可以生成在 ARM® Cortex®-A 处理器(带 Neon 扩展)上运行的优化代码。要生成此优化代码,您必须安装 Embedded Coder® Support Package for ARM Cortex-A Processors (Embedded Coder)。为 ARM Cortex-A 生成的代码使用 Ne10 库。有关详细信息,请参阅 Ne10 Conditions for MATLAB Functions to Support ARM Cortex-A Processors (Embedded Coder)。
使用代码替换库 (CRL),您可以生成在 ARM Cortex-M 处理器上运行的优化代码。要生成此优化代码,您必须安装 Embedded Coder Support Package for ARM Cortex-M Processors (Embedded Coder)。为 ARM Cortex-M 生成的代码使用 CMSIS 库。有关详细信息,请参阅 CMSIS Conditions for MATLAB Functions to Support ARM Cortex-M Processors (Embedded Coder)。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
用法说明和限制:
输出为复数。
不支持对称类型
'symmetric'
。有关可变大小数据的限制,请参阅Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder)。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
用法说明和限制:
除非
symflag
是'symmetric'
,否则即使所有虚部都为零,输出也始终为复数。
有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)