Engee 文档

fft2

二维快速傅立叶变换。

库::`工程师`

语法

函数调用

  • [参数:Y]=fft2(<参数:X>>) -回报 二维傅立叶变换矩阵 [参数:X] 采用快速傅立叶变换算法,相当于计算 fft(fft(X)。').'.

    如果 [参数:X] -多维数组, fft2 计算每个子阵列的前两个维度的二维傅立叶变换 [参数:X],其可以被认为是维数大于的二维矩阵 2. 例如,如果 [参数:X] -大小的数组 m×n×1×2 然后 Y(:,:,1,1) = fft2(X(:,:,1,1))Y(:,:,1,2) = fft2(X(:,:,1,2)). 输出尺寸 [参数:Y] 匹配的大小 [参数:X].

争论

输入参数

# X — 输入数组

+ 矩阵 | 多维数组

Details

输入数组,指定为矩阵或多维数组。 如果 X 有一个类型 漂浮物32,则函数 fft2 它最初是用单精度计算的,并且 [参数:Y] 它也有一个类型 漂浮物32. 否则的话 [参数:Y] 返回为 漂浮64.

数据类型

漂浮64, 漂浮物32, Int8, Int16, Int32, UInt8, UInt16, UInt32, 布尔</无翻译> 支持复数::是

# m — 转换行数

+ 正整数标量

Details

指定为正整数的转换行数。

数据类型

漂浮64, 漂浮物32, Int8, Int16, Int32, UInt8, UInt16, UInt32, 布尔</无翻译>

# n 是 转换列数

+ 正整数标量

Details

转换列数,设置为正整数。

数据类型

漂浮64, 漂浮物32, Int8, Int16, Int32, UInt8, UInt16, UInt32, 布尔</无翻译>

输出参数

# Y — 输出阵列

+ 矩阵 | 多维数组

Details

作为矩阵或多维数组返回的输出数组。

例子:

二维变换

Details

该二维傅立叶变换对于处理二维信号和诸如图像的其他二维数据是有用的。

让我们在图形上创建和显示具有重复块的二维数据。

function peaks(n)
    x = range(-3, 3, length=n)
    y = range(-3, 3, length=n)
    X = repeat(x', n, 1)
    Y = repeat(y, 1, n)
    Z = 3 * (1 .- X).^2 .* exp.(-X.^2 .- (Y .+ 1).^2) .-
        10 * (X/5 .- X.^3 .- Y.^5) .* exp.(-X.^2 .- Y.^2) .-
        1/3 * exp.(-(X .+ 1).^2 .- Y.^2)
    return Z
end

P = peaks(20)
X = repeat(P, 5, 10)

heatmap(X, aspect_ratio=1, c=:viridis, yflip=true)

fft2 1

计算数据的二维傅立叶变换。 将零频率分量移到输出信号的中心,并绘制得到的矩阵大小 100200,其对应于尺寸 X.

import EngeeDSP.Functions: fft2, fftshift

Y=fft2(X)
Y_shifted=fftshift(Y)

热图(abs。(Y_shifted),aspect_ratio=1,c=:viridis,yflip=true)

fft2 2

完成它 X 用零来计算变换大小 128256.

n1 = nextpow(2, 100)  # 2^7 = 128
n2 = nextpow(2, 200)  # 2^8 = 256
Y_padded = fft2(X, n1, n2)
Y_padded_shifted = fftshift(Y_padded)

heatmap(abs.(Y_padded_shifted), aspect_ratio=1, c=:viridis, yflip=true)

fft2 3

此外

二维傅立叶变换

Details

该公式定义了离散傅立叶变换。 矩阵 大小 :

哪里 -统一的复杂根源:



哪里 -假想单位。 -索引范围从 以前 ,而 -索引范围从 以前 . 这个公式改变了索引 1 以反映 AnyMath 中矩阵的索引。