Main Content

fft2

二维快速傅里叶变换

说明

示例

Y = fft2(X) 使用快速傅里叶变换算法返回矩阵 X二维傅里叶变换,这等同于计算 fft(fft(X).').'

X 是多维数组时,fft2 计算 X 的每个子数组的前两个维度上的二维傅里叶变换,该子数组可被视为维度高于 2 的二维矩阵。例如,如果 Xm×n×1×2 数组,则 Y(:,:,1,1) = fft2(X(:,:,1,1))Y(:,:,1,2) = fft2(X(:,:,1,2))。输出 Y 的大小与 X 相同。

示例

Y = fft2(X,m,n) 将截断 X 或用尾随零填充 X,以便在计算变换之前形成 m×n 矩阵。如果 X 是矩阵,则 Ym×n 矩阵。如果 X 是一个多维数组,fft2 将根据 mn 决定 X 的前两个维度的形状。

示例

全部折叠

二维傅里叶变换对处理二维信号和其他二维数据(如图像)很有用。

创建并绘制具有重复块的二维数据。

P = peaks(20);
X = repmat(P,[5 10]);
imagesc(X)

Figure contains an axes object. The axes object contains an object of type image.

计算数据的二维傅里叶变换。将零频分量移动到输出的中心,并绘制生成的 100×200 矩阵,它与 X 的大小相同。

Y = fft2(X);
imagesc(abs(fftshift(Y)))

Figure contains an axes object. The axes object contains an object of type image.

用零填充 X 以计算 128×256 变换。

Y = fft2(X,2^nextpow2(100),2^nextpow2(200));
imagesc(abs(fftshift(Y)));

Figure contains an axes object. The axes object contains an object of type image.

输入参数

全部折叠

输入数组,指定为矩阵或多维数组。如果 X 的类型为 single,则 fft2 本身以单精度进行计算,Y 的类型也是 single。否则,Ydouble 类型返回。

数据类型: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
复数支持:

变换行数,指定为正整数标量。

数据类型: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

变换列数,指定为正整数标量。

数据类型: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

详细信息

全部折叠

二维傅里叶变换

以下公式定义 m×n 矩阵 X 的离散傅里叶变换 Y:

Yp+1,q+1=j=0m1k=0n1ωmjpωnkqXj+1,k+1

ωm 和 ωn 是复单位根:

ωm=e2πi/mωn=e2πi/n

i 是虚数单位。p 和 j 是值范围从 0 到 m–1 的索引,q 和 k 是值范围从 0 到 n–1 的索引。此公式将 X 和 Y 的索引平移 1 位,以反映 MATLAB® 中的矩阵索引。

扩展功能

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2006a 之前推出

另请参阅

| | |