MATLAB 中ifft 函数用法、性质、特性,以及与 fft 的组合应用全面深入解析(含程序) 前言 在我之前的《MATLAB 中fft 函数用法、性质、特性、缺陷全面深入解析(含程序)》中,我已经详细阐述了 fft 的所有性质,大家应该能够正确使用fft 来获得合适的信号频谱图。鉴于网上的程序代码基本都只介绍了使用fft 实现信号时域到频域的转换,很少有介绍使用ifft将频域信号转换为时域信号,尤其是对同一信号进行连续 fft 和 ifft 的控制和变换,更不用说网上的很多程序都有很大局限性,考虑不周全,直接拿来用会出很多问题。所以这里我在前面那篇文章的基础上,利用程序全面讲解 fft 和 ifft 的组合用法,来保证信号的正确变换,同时说明如何调整参数来减少失真,降低误差。让大家能够将信号在时域频域间自由轻松变换,同时根据需要修改参数,来获得所需的时域或频域信号。 ifft ifft 是 fft 的逆运算,也就是将频域信号反变换为时域信号,要使用ifft,就必须先清除fft 后的信号频谱的结构,大家应该先看我之前的那篇《MATLAB 中fft 函数用法、性质、特性、缺陷全面深入解析(含程序)》就知道了。我们需要先将频域值变换为最初的 fft 后的结构,再使用ifft,才能经过变换,直接获得正确的信号时域值。 这里先说明一下,对信号进行 fft 后,如果直接进行 ifft,那么可以直接还原时域信号,误差可以忽略,这个我就不演示了。我这篇文章要讲解的是在利用fft 变换后,又进行了各个运算步骤获得了最后的正确的频域图后,如何利用这个频域图进行反运算,最后利用ifft获得正确的原来的时域图。或者是已知一个信号的准确的频域图,如何进行正确运算,利用ifft 获得正确的时域图。 ifft 的定性解析 首先我通过程序给大家展示一下 fft 和 ifft 的组合用法,下面的程序演示的是 fft 后运算获得正确的频域图后,再反变换利用ifft 获得原来的时域图。最后测量输出恢复的时域信号与原时域信号的误差。 组合程序解释如下: %这个程序用于初步测试 ifft 的正确性 clear all; clc; Fs = 1e3; %这是原始时域信号 x 的采样频率 multiple=0; %x 进行 fft 前的补零倍数,可以增加频率分辨率,也会影响信号频域值 time=10; t = 0:1/Fs:time-1/Fs; %这个会影响x 的采样点数,当然点数越多,频域越精确越平滑 %x = 1.5*cos(2*pi*100*t)+3*sin(2*pi*202.5*t)+2*sin(2*pi*1450*t); x = 1.5*cos(2*pi*1...