fftshift
将零频分量移到频谱中心
说明
示例
平移向量元素
交换行向量的左右两半部分。如果一个向量的元素数为奇数,则中间的元素被视为属于向量的左半部分。
Xeven = [1 2 3 4 5 6]; fftshift(Xeven)
ans = 1×6
4 5 6 1 2 3
Xodd = [1 2 3 4 5 6 7]; fftshift(Xodd)
ans = 1×7
5 6 7 1 2 3 4
平移一维信号
分析信号的频率分量时,将零频分量平移到中心会很有帮助。
创建信号 S
、计算其傅里叶变换,然后绘制功率。
fs = 100; % sampling frequency t = 0:(1/fs):(10-1/fs); % time vector S = cos(2*pi*15*t); n = length(S); X = fft(S); f = (0:n-1)*(fs/n); %frequency range power = abs(X).^2/n; %power plot(f,power)
平移零频分量,然后绘制以零为中心的功率。
Y = fftshift(X); fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range powershift = abs(Y).^2/n; % zero-centered power plot(fshift,powershift)
平移矩阵中的信号
要处理多个一维信号,可将它们表示为一个矩阵的各行。然后使用维度参量计算傅里叶变换,并平移每一行的零频分量。
创建矩阵 A
,其行表示两个一维信号,然后计算每个信号的傅里叶变换。绘制每个信号的功率。
fs = 100; % sampling frequency t = 0:(1/fs):(10-1/fs); % time vector S1 = cos(2*pi*15*t); S2 = cos(2*pi*30*t); n = length(S1); A = [S1; S2]; X = fft(A,[],2); f = (0:n-1)*(fs/n); % frequency range power = abs(X).^2/n; % power plot(f,power(1,:),f,power(2,:))
平移零频分量,然后绘制每个信号以零为中心的功率。
Y = fftshift(X,2); fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range powershift = abs(Y).^2/n; % zero-centered power plot(fshift,powershift(1,:),fshift,powershift(2,:))
输入参数
X
— 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
数据类型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
复数支持: 是
dim
— 沿其运算的维度
正整数标量
沿其运算的维度,指定为正整数标量。如果未指定任何值,则 fftshift
沿所有维度进行交换。
以输入矩阵
Xc
为例。运算fftshift(Xc,1)
会将Xc
的每一列的上下两半部分进行交换。假设有一个矩阵
Xr
。运算fftshift(Xr,2)
会将Xr
的每一行的左右两半部分进行交换。
数据类型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
fftshift
函数完全支持 GPU 数组。要在 GPU 上运行该函数,请将输入数据指定为 gpuArray
(Parallel Computing Toolbox)。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)