fft2
二维快速傅立叶变换。
库::`工程师`
争论
例子:
二维变换
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)
计算数据的二维傅立叶变换。 将零频率分量移到输出信号的中心,并绘制得到的矩阵大小 100 上 200,其对应于尺寸 X.
import EngeeDSP.Functions: fft2, fftshift
Y=fft2(X)
Y_shifted=fftshift(Y)
热图(abs。(Y_shifted),aspect_ratio=1,c=:viridis,yflip=true)
完成它 X 用零来计算变换大小 128 上 256.
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)