✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。
🍎个人主页:算法工程师的学习日志
昨晚分享了matlab的快速傅里叶变换,应群友要求,分享一下快速傅里叶逆变换
昨晚文章:Matlab实现傅里叶变换
Matlab实现快速傅里叶逆变换通过ifft函数。
语法
X = ifft(Y)
X = ifft(Y,n)
X = ifft(Y,n,dim)
X = ifft(___,symflag)
说明
X = ifft(Y) 使用快速傅里叶变换算法计算 Y 的逆离散傅里叶变换。X 与 Y 的大小相同。
- 如果 Y 是向量,则 ifft(Y) 返回该向量的逆变换。
- 如果Y 是矩阵,则 ifft(Y) 返回该矩阵每一列的逆变换。
- 如果 Y 是多维数组,则 ifft(Y) 将大小不等于 1 的第一个维度上的值视为向量,并返回每个向量的逆变换。
X = ifft(Y,n) 通过用尾随零填充 Y 以达到长度 n,返回 Y 的 n 点傅里叶逆变换。
X = ifft(Y,n,dim) 返回沿维度 dim 的傅里叶逆变换。例如,如果 Y 是矩阵,则 ifft(Y,n,2) 返回每一行的 n 点逆变换。
X = ifft(___,symflag) 指定 Y 的对称性。例如,ifft(Y,'symmetric') 将 Y 视为共轭对称。
示例
向量的逆变换,时空采样数据与频率采样数据间的傅里叶变换及其逆变换。
创建一个向量并计算其傅里叶变换。
15.0000 + 0.0000i -2.5000 + 3.4410i -2.5000 + 0.8123i -2.5000 - 0.8123i -2.5000 - 3.4410i
计算 Y 的逆变换,结果与原始向量 X 相同。
ans = 1×5
1 2 3 4 5
多写几句,基于傅里叶结果来重构信号,基本思想是通过傅里叶变换得到的主频幅值和相位得到正弦信号,并叠加重构。
构造一个信号,其中包含幅值为 0.7 的 50 Hz 正弦量和幅值为 1 的 120 Hz 正弦量。
ylabel('X(t)')
Y = fft(S);
grid on;
这种方法其实看起来效果不太好,理论上可以,难得在于得到相位信息,如果得到准确的相位信息,则结果如下图,完美拟合上。