fftshift

将零频分量移至频谱中心

描述

例子

Y = fftshift (X)重新安排傅里叶变换X通过将零频率分量移到阵列的中心。

  • 如果X是一个向量fftshift的左右半部分互换X

  • 如果X是矩阵吗fftshift交换的第一象限X第三象限,第二象限和第四象限。

  • 如果X那么是多维数组吗fftshift互换的半空格X每个维度。

例子

Y = fftshift (X,昏暗的)沿着维度运行昏暗的X。例如,如果X一个矩阵的行是否表示多个一维变换,那么fftshift (X, 2)的每一行的一半X

例子

全部折叠

交换行向量的左右半部分。如果一个向量有奇数个元素,那么中间的元素被认为是向量左半部分的一部分。

Xeven = [1 2 3 4 5 6];fftshift (Xeven)
ans =1×64 5 6 1 2 3
Xodd = [1 2 3 4 5 6 7];fftshift (Xodd)
ans =1×75 6 7 1 2 3 4

在分析信号的频率分量时,将零频率分量移向中心是有帮助的。

创建一个信号年代,计算其傅里叶变换,并绘制幂函数。

fs = 100;%采样频率t = 0 (1 / fs): (10 - 1 / fs);%的时间向量S = cos(2 *π* 15 * t);n =长度(S);X = fft(年代);f = (0: n - 1) * (fs / n);%频率范围功率= abs (X) ^ 2 / n;%的权力情节(f、电力)

移零频率分量,绘制零中心功率。

Y = fftshift (X);fshift = (- n / 2: n / 2 - 1) * (fs / n);%零中心频率范围powershift技术= abs (Y) ^ 2 / n;% zero-centered权力情节(fshift powershift技术)

您可以通过将多个一维信号表示为矩阵中的行来处理它们。然后使用维数参数来计算傅里叶变换和移动每一行的零频率分量。

创建一个矩阵一个其行表示两个一维信号,并计算每个信号的傅里叶变换。绘制每个信号的功率。

fs = 100;%采样频率t = 0 (1 / fs): (10 - 1 / fs);%的时间向量S1 = cos(2 *π* 15 * t);S2 = cos(2 *π* 30 * t);n =长度(S1);= (S1);S2);X = fft ([], 2);f = (0: n - 1) * (fs / n);%频率范围功率= abs (X) ^ 2 / n;%的权力情节(f、电力(1:),f,权力(2:))

移零频率分量,并绘制每个信号的零中心功率。

Y = fftshift (X, 2);fshift = (- n / 2: n / 2 - 1) * (fs / n);%零中心频率范围powershift技术= abs (Y) ^ 2 / n;% zero-centered权力情节(fshift powershift技术(1:),fshift, powershift技术(2:))

输入参数

全部折叠

输入数组,指定为向量、矩阵或多维数组。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑
复数的支持:万博1manbetx是的

要操作的维度,指定为正整数标量。如果未指定值,则fftshift沿着所有维度交换。

  • 考虑一个输入矩阵Xc。操作fftshift (Xc, 1)的每列的一半Xc

  • 考虑一个矩阵Xr。操作fftshift (Xr, 2)的每一行的一半Xr

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

GPU的代码生成
使用GPU编码器™为NVIDIA®GPU生成CUDA®代码。

另请参阅

||||

之前介绍过的R2006a