迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > MATLAB >

MATLAB 快速傅里叶逆变换

作者:迹忆客 最近更新:2023/03/19 浏览次数:

本文将讨论使用 MATLAB 的 ifft() 函数查找快速傅里叶逆变换。

MATLAB 快速傅里叶逆变换

我们可以使用 Matlab 的 ifft() 函数来找到向量、矩阵或多维数组的快速傅里叶逆变换。ifft() 函数有四种语法,如下所示。

Out = ifft(X)
Out = ifft(X,n)
Out = ifft(X,n,dim)
Out = ifft(___,symflag)

第一种语法将使用快速傅里叶变换算法返回输入 X 的快速傅里叶逆变换。ifft() 函数检查输入 X 中存在的共轭对称向量;如果向量是共轭对称的,则输出将是快速且真实的。

一个向量是共轭对称的,如果它的反对角交换矩阵和它的复共轭的乘积等于原始向量。在时域信号的情况下,其快速傅里叶变换包含半正频谱和半负频谱。

输入 X 可以是向量、矩阵或多维数组。如果输入是向量,第一种语法将返回包含向量的快速傅里叶逆变换的向量,并且输出向量将与输入向量具有相同的长度。

如果输入是矩阵,则语法将返回包含矩阵列的快速傅里叶逆变换的矩阵,输出矩阵的大小将是输入矩阵。如果输入是多维数组,则该函数将沿第一维返回值的快速傅里叶逆变换,将它们视为向量。

第二种语法用于添加我们想要在其上找到快速傅里叶逆变换的点作为第二个参数 n。如果我们不添加点,该函数将使用元素索引作为点。

如果参数 n 为零,则函数的输出将是一个空矩阵。如果参数长度 n 小于输入向量或矩阵的长度,ifft() 函数将忽略剩余值。

如果参数长度 n 大于向量或矩阵的长度,则函数将在输入值之间添加零,从而提高函数的性能。参数长度 n 通常是小素数或 2 的幂的乘积。

第三种语法用于将维度设置为第三个参数 dim,用于在矩阵和多维数组的情况下找到快速傅里叶逆变换。例如,在矩阵输入的情况下,函数会找到每一列的快速傅里叶逆变换,但如果我们将 2 作为第三个参数添加,函数将返回每一行的快速傅里叶逆变换。

第四个参数用于将输入的对称性设置为对称或非对称。如果输入不完全对称,我们可以使用此参数将其设置为对称,以便函数将输入视为对称。

例如,让我们创建一个向量并使用 fft() 函数找到它的快速傅里叶变换,然后我们将使用 ifft() 函数找到快速傅里叶逆变换。请参阅下面的代码。

clc
clear

n = [1 6 2]
fourier = fft(n)
inverse_fourier = ifft(fourier)

输出:

n =

     1     6     2


fourier =

   9.0000 + 0.0000i  -3.0000 - 3.4641i  -3.0000 + 3.4641i


inverse_fourier =

    1.0000    6.0000    2.0000

在上面的代码中,我们使用了一个包含三个元素的向量来查找傅立叶和傅立叶逆变换,以检查 ifft() 函数的结果。我们可以在输出中看到输入向量 nifft() 函数的输出是相同的,这意味着该函数运行良好。

我们可以在输出中看到输入向量 n 的傅里叶变换包含幅度和相位,这两者都用于重建原始信号。如果我们取出傅里叶变换的一部分,例如幅度或相位,我们将无法重建原始信号。

在使用 ifft() 函数重建原始信号之前,我们必须确保信号包含幅度和相位。我们还必须确保信号不会偏离其原始位置。

例如,我们可以使用 fftshift() 函数来找到傅里叶变换并将零频率分量移动到频谱的中心。如果我们使用 ifft() 函数来找到它的傅里叶逆变换,我们将无法正确地重建原始单曲。

在这种情况下,我们可以使用 ifftshift() 函数代替 ifft() 函数,ifftshift() 函数将找到傅里叶逆变换并将信号移回其原始位置。

如果我们使用上面显示的第二种语法设置点,输出也会改变。例如,在点长度大于输入向量长度的情况下,重构信号将包含比原始向量或矩阵元素更多的元素。

如果我们改变 ifft() 函数的维度,输出也会改变,它可能与原始向量或矩阵不匹配。例如,让我们重复上面的示例并更改用于对输入向量进行傅里叶逆变换的点数。

请参阅下面的代码。

clc
clear

n = [1 6 2]
fourier = fft(n)
inverse_fourier = ifft(fourier,4)

输出:

n =

     1     6     2


fourier =

   9.0000 + 0.0000i  -3.0000 - 3.4641i  -3.0000 + 3.4641i


inverse_fourier =

   0.7500 + 0.0000i   3.8660 - 1.6160i   2.2500 + 1.7321i   2.1340 - 0.1160i

我们可以看到 ifft() 函数的输出与输入向量 n 不匹配,因为我们将点数更改为 4,默认为 3。检查此链接以获取有关 ifft() 函数的更多详细信息。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MATLAB 中注释多行

发布时间:2023/04/23 浏览次数:111 分类:MATLAB

可以使用注释块方法或 MATLAB 编辑器在 MATLAB 中注释多行。

MATLAB 最大索引

发布时间:2023/04/23 浏览次数:192 分类:MATLAB

在本教程中,我们将讨论如何使用 MATLAB 中的 max() 函数从数组及其索引中查找最大值。

MATLAB 索引超出矩阵尺寸

发布时间:2023/04/23 浏览次数:103 分类:MATLAB

要解决索引超出矩阵索引的问题,请检查你要获取或替换数据的索引。

MATLAB 检查变量类型

发布时间:2023/04/23 浏览次数:92 分类:MATLAB

在本教程中,我们将讨论如何使用 MATLAB 中的 class() 和 whos 函数检查给定变量的类型。

MATLAB vs Octave

发布时间:2023/04/23 浏览次数:74 分类:MATLAB

我们可以说 Octave 是 MATLAB 的免费版本。

MATLAB MAT 文件

发布时间:2023/04/23 浏览次数:89 分类:MATLAB

可以使用 MAT 文件在 MATLAB 中存储和加载格式化的数据。

MATLAB asv 文件

发布时间:2023/04/23 浏览次数:180 分类:MATLAB

.asv 文件是 MATLAB 生成的自动保存文件,因此在计算机崩溃时你不会丢失数据。

MATLAB 三元运算符

发布时间:2023/04/23 浏览次数:130 分类:MATLAB

MATLAB 中没有三元运算符,因此你必须使用标准格式。

MATLAB & vs &&

发布时间:2023/04/23 浏览次数:134 分类:MATLAB

在 MATLAB 中,&是逻辑与运算符,&&也是表现出短路行为的逻辑运算符。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便