matlab使用杂谈5-fftshift函数的使用
- fftshift基本使用
- 主要作用:将零频分量移到频谱中心
- 简单示例
- 一般使用场合
fftshift基本使用
主要作用:将零频分量移到频谱中心
基本语法:
Y = fftshift(X)
Y = fftshift(X,dim)
X-输入数组,可以是向量、矩阵或多维数组,支持复数
dim - 沿其计算的维度
说明:
如果X是向量,则fftshift会将X的左右两半部分进行交换
如果X是矩阵,则fftshift会将X的第一象限与第三象限交换,将第二象限与第四象限交换
如果X是多维数组,则fftshift会沿每个维度减缓X的半空间
简单示例
交换行向量的左右两半部分,如果一个向量的元素为奇数,则中间的元素会被视为属于向量的左半部分
Initial = [1 2 3 4 5 6 7]
fftshift(Initial)
% 结果
ans = 5 6 7 1 2 3 4
一般使用场合
fftshift从名字上就能看出,主要是配合傅里叶变换使用
所以fftshift在分析信号的频率分量时十分有用,可以将零频分量移动到中心
下面沿用官网的一个实例:
创建信号S、计算其傅里叶变换,然后绘制功率曲线
fs = 100; % 频率
t = 0:(1/fs):(10-1/fs); % 时间分量
S = cos(2*pi*15*t); % 信号
n = length(S);
X = fft(S); 对信号进行傅里叶变换
f = (0:n-1)*(fs/n) % 频率范围
power = abs(X).^2/n; % 信号的振幅
plot(f,power)
如图所示
此时信号分量是从0-100的,不符合信号分析时的分布规则,因此需要利用fftshift将零频分量移动到中心
Y = fftshift(X,2)
fshift = (-n/2:n/2-1)*(fs/n);
powershift = abs(Y).^2/n;
plot(fshift,powershift);
以上主要是fftshift函数的使用了,一般来说咱们在利用matlab分析信号或者图像信息时,大概率会需要用到这个功能
傅里叶变换的详细讲解可以参照另外两篇博客:
https://blog.csdn.net/haoaoweitt/article/details/83012477
https://blog.csdn.net/lihe4151021/article/details/89675567