文章仅为个人理解,不足之处敬请指正

在用MATLAB做FFT分析信号的时候,为什么有时候需要fftshift,有时候又不需要,今天仔细理了理,做个总结记录。

首先,fftshift的用法:
                           Y = fftshift(X)
                           Y = fftshift(X,dim)
作用:交换行向量的左右两半部分。
在FFT里的作用:通过将零频分量移动到数组中心

为什么要在FFT之后用到fftshift呢?

我觉得这个问题可以从采样定律的角度来说。以基带实信号为例,我们都知道时域的以fsf_sfs​采样就是频域以fsf_sfs​平移延拓,因为采样之后的信号的频谱会在fs/2f_s/2fs​/2产生混叠,所以实信号采样率fs/2f_s/2fs​/2要大于等于带宽,即fs≥2Bf_s≥2Bfs​≥2B,如下图。
MATLAB在对序列做FFT的时候,相当于是取了频谱上[0,fs][0,f_s][0,fs​]的部分,由于频谱是按fsf_sfs​周期延拓,所以[fs/2,fs][f_s/2,f_s][fs​/2,fs​]部分的频谱与[−fs/2,0][-f_s/2,0][−fs​/2,0]部分的一样,如果你想看[−fs,fs][-f_s,f_s][−fs​,fs​]部分(上图红框部分),就需要做fftshift,将零频分量移到序列中间,下面看一个例子。

close all; clear; clc;
fs = 300;            %采样率大于200
t = 0:1/fs:1;        %定义采样点
s = sin(2*pi*100*t)+cos(2*pi*40*t);  %采样后的信号序列%---------看[0,fs]的频谱---------
F1 = fft(s);                %fft
f1 = linspace(0,fs,length(t));   %频谱横轴
subplot(211);plot(f1,abs(F1));xlabel('f');ylabel('幅度');title('看[0,fs]');%---------看[-fs/2,fs/2]的频谱---------
F2 = fftshift(fft(s));                %fft
f2 = linspace(0,fs,length(t))-fs/2;   %频谱横轴
subplot(212);plot(f2,abs(F2));xlabel('f');ylabel('幅度');title('看[-fs/2,fs/2]');

结果如下:

所以,fftshift是为了看[−fs/2,fs/2][-f_s/2,f_s/2][−fs​/2,fs​/2]部分频谱而需要的操作,如果只是看[0,fs][0,f_s][0,fs​]的频谱,就不需要了。

上面只是实序列的情况,然而我们仿真实验更经常用到的是复序列,下面谈谈复序列的情况。
复序列没有负频率,采样率只要大于带宽即可,根据上面的讲解很容易理解这点,

上图可以看出来,只要fs≥Bf_s≥Bfs​≥B,频谱就不会混叠。所以就不会去看[−fs/2,fs/2][-f_s/2,f_s/2][−fs​/2,fs​/2]的频谱,也就不会用到fftshift了。

close all; clear; clc;
fs = 300;            %采样率大于100
t = 0:1/fs:1;        %定义采样点
s = exp(1j*2*pi*100*t)+exp(1j*2*pi*40*t);  %采样后的信号序列%---------看[0,fs]的频谱---------
F1 = fft(s);                %fft
f1 = linspace(0,fs,length(t));   %频谱横轴
plot(f1,abs(F1));xlabel('f');ylabel('幅度');title('看[0,fs]');%---------看[-fs/2,fs/2]的频谱---------
%原本就没有负频率,这儿也就没意义了
% F2 = fftshift(fft(s));                %fft
% f2 = linspace(0,fs,length(t))-fs/2;   %频谱横轴
% subplot(212);plot(f2,abs(F2));xlabel('f');ylabel('幅度');title('看[-fs/2,fs/2]');

fftshift有什么用?MATLAB做FFT后为什么还要fftshift?相关推荐

  1. 【数字信号处理】Matlab做fft时点数N怎么选取

    一.FFT点数N(也就是离散时间信号的记录长度):要根据所要求的的频率分辨率F来决定. 频率分辨率F:能够用FFT算法分析得到的最靠近的两个信号频率之间的间隔. N和F的关系:N>=Fs/F, ...

  2. matlab函数fftshift,matlab中fft算法_matlab中fftshift函数_matlab中fft函数的用法(2)

    plot([0 : PointNum/2 - 1], x1(1:PointNum/2)); grid on subplot(3,1,2); % [REX IMX] am = sqrt(abs(REX. ...

  3. MATLAB中的fft后为何要用fftshift?

    fft是一维傅里叶变换,即将时域信号转换为频域信号 fftshift 是针对频域的,将FFT的DC分量移到频谱中心 即对频域的图像,(假设用一条水平线和一条垂直线将频谱图分成四块)对这四块进行对角线的 ...

  4. Matlab中用fft作频谱后为什么要用fftshift

    fft是一维傅里叶变换,即将时域信号转换为频域信号 fftshift是针对频域的,将FFT的DC分量移到频谱中心.即对频域的图像,(假设用一条水平线和一条垂直线将频谱图分成四块)对这四块进行对角线的交 ...

  5. matlab adc仿真,[转载]关于ADC仿真做FFT的设置和结果分析

    这些都是比较基础和实用的东西,故做分享~ 以前在实验室跑ADC动态性能仿真,会跑不少点,浪费了不少时间.主要是由于当时没有用相干采样的频率,而是直接选一个和采样频率比较互质的输入频率,然后再进行加窗处 ...

  6. 在matlab中为什么在使用fft后作图时要加绝对值

    因为fft后的结果是复数,复数没法作图,所以一般会用模(复数的绝对值),实部或幅角这些实数作图.

  7. Matlab中fft作频谱横纵坐标

    关于这个问题,在很早之前就分享过,也通过了解实现了算法,当时看的明白,想的明白,突然要用的时候,又开始疑问,不免有些纠结,与其每次使用的时候都查,浪费时间,还不如,一次搞定. 真心没把哪门没学好的课程 ...

  8. 用matlab做巴特沃斯低通滤波器

    用matlab做巴特沃斯低通滤波器 趁着暑假,做一个心电图的matlab实验,遇到了滤波器问题,网上代码比较杂乱,做了一个汇总整理. 主要做了一个简单的低通滤波器并以三角函数为例子进行低通滤波. 基本 ...

  9. matlab做频域,如何使用matlab进行频域分析

    Matlab可以说是一个非常有用且功能齐全的工具,在通信.自控.金融等方面有广泛的应用. 本文讨论使用Matlab对信号进行频域分析的方法. 说到频域,不可避免的会提到傅里叶变换,傅里叶变换提供了一个 ...

  10. 声音反卷积matlab,用MATLAB做反卷积

    关键词:反卷积  MATLAB  fft   频移  分母中频谱零点   卷积核 %========================================================== ...

最新文章

  1. 首发 | 13篇京东CVPR 2019论文!你值得一读~ 技术头条
  2. 校园表白墙APP使用体验
  3. 使用function module CRM_BUPA_FRG0010_GET_VALIDLIST 获得某个account assign的sales area
  4. Go 实现 soundex 算法
  5. “A class named TcxRect already exists”错误
  6. 实现ios常见菜单效果的思路
  7. 使用adb命令从Android手机中取出已安装的app包,导出apk
  8. 解决谷歌浏览器Chrome 代理设置不能上网的问题
  9. CSS的border属性绘制简单三角形、边框三角形
  10. 利用Python进行股票交易分析(一):量化交易策略——买点与卖点的量化
  11. excel公式不执行。原因是设置问题:公式->计算选项->手动
  12. 《CRAFT:Character Region Awareness for Text Detection》论文笔记
  13. 关于学期结束的一些题目的记录
  14. 宜信微服务架构落地及其演进
  15. 泰克MDO3104示波器_六合一示波器_无限多功能
  16. 高通平台 pmic—gpio修改(2)
  17. 一键新机IGRIMACE手机在线源安装方式
  18. 微软杀毒软件Microsoft Security Essentials 今起可下载
  19. 贝尔宾团队角色理论:附Belbin Team Roles测试 CW CO SH PL RI ME TW FI
  20. 常用HTTP抓包工具Fiddler使用的12个小技巧,值得收藏!

热门文章

  1. OSPFv3配置实例
  2. 女生学java软件开发怎么样?就业前景如何?
  3. smartsvn破解版
  4. 初一上册数学用计算机进行运算,初一上册数学
  5. 毕业设计 微信小程序 外卖点餐平台
  6. python语音识别终极指南_Python语音识别终极指南
  7. js获取当前页面url信息
  8. 新装的电脑没有打开图片的软件怎么办?教你打开Windows照片查看器
  9. C# sqlhelper
  10. final、finalize、finally异同,以及final关键字如何使用