现象阐述

在看余弦函数做傅里叶变换的时候,发现假如不加fftshift,正轴上就会有两个频率:

close all; clear; clc;
fs = 300;            %采样率大于200
t = 0:1/fs:1;        %定义采样点
s = cos(2*pi*50*t);  %采样后的信号序列subplot(211);
%%figure
plot(t,s);
xlabel('t');
ylabel('幅度');
title('余弦函数');%%figure
F1 = fft(s);                %fft
f1 = linspace(0,fs,length(t));   %频谱横轴
subplot(212);
plot(f1,abs(F1));
xlabel('f');
ylabel('幅度');
title('余弦函数频谱');

结果如下

虽然实信号是双边带的,但是这里的频率都是正数。可能因为这样所以才会需要fftshift将另一半搬移到负频谱。

原因分析

之前看到一篇关于fftshift的文章 ,它里面的图用的很好,一下子启发到了我,在这里写一下我的理解

首先看(a)图的时域信号图,现实中根本不会有负时间,要想得到负时间上的频谱,可以通过时域采样,频域延拓的方式来得到。如(b)图的频谱图,负频率 -Fs/2 到 0 的频谱部分就正好被延拓到了正频率 Fs/2 到 Fs 的那部分了。

最后通过N点DFT,截取到的图,就是©中的频谱图。也就解释了一个正弦函数为什么在正轴上有2个正频率的原因。

一点自己的看法

针对上面的现象以及要用fftshift的原因,我看网上大都用混叠两字形容,我觉得这可能会难以理解,因为频率虽超过奈奎斯特采样频率,但是混频的现象却没发生。

参照论文 signal Processing for TDM MIMO FMCW Millimeter-Wave Radar Sensors中的一段原话:

我的理解是:中频信号fIF 在[ Fs /2 ,Fs ] 上的频谱 ,由于FIF高于奈奎斯特采样频率,所以要以别名(alias)的形式对应负频率fIF -FS 的频谱(或者是以别名的形式出现在负频率)

拓展:关于复信号

复信号是单边带的。复信号也会有负频率。

close all; clear; clc;
fs = 200;            %采样率200
t = 0:1/fs:1;        %定义采样点
s1 = exp(-1j*2*pi*50*t);  %采样后的信号序列,信号频率为50
s2 = exp(1j*2*pi*50*t);%%figure
subplot(221);
plot(t,s1);
xlabel('t');
ylabel('幅度');
title('exp(-1j*2*pi*50*t)');%%figure
F1 = fft(s1);                %fft
f1 = linspace(0,fs,length(t));   %频谱横轴
subplot(222);
plot(f1,abs(F1));
xlabel('f');
ylabel('幅度');
title('频谱');%%figure
subplot(223);
plot(t,s2);
xlabel('t');
ylabel('幅度');
title('exp(1j*2*pi*50*t)');%%figure
F2 = fft(s2);                %fft
f2 = linspace(0,fs,length(t));   %频谱横轴
subplot(224);
plot(f2,abs(F2));
xlabel('f');
ylabel('幅度');
title('频谱');

当采样频率为200Hz,复指数信号频率为-50Hz时,其频谱却显示它频率为150Hz,原因可见上面原因分析部分。

关于fftshift引发的问题与思考相关推荐

  1. C/C++ 由int (*p)[5]与int *p[5]引发的学习与思考

    由int (*p)[5]与int *p[5]引发的学习与思考 最近在大一上复习指针这部分时,有个C指针的特例一直困扰着我.我查阅了许多课本,也看了CSDN上许多大佬的理解.自我感觉受益匪浅,现记录下自 ...

  2. 一次洗脚引发的线程池思考

    一次洗脚引发的线程池思考,文末有惊喜 上周末和好朋友大凯子约好周末去洗脚放松一下,毕竟忙了一周了,又加了几天班,身心疲惫,好的身体是革命的本钱,男人可得好好爱惜自己的身体,不能倒在革命的道路上,于是第 ...

  3. 故障分析 | 报错 ERROR 5270 -HY000-- object not in RECYCLE BIN 引发的几个思考

    作者:姚嵩 不知道是地球人还是外星人,知道的可以留言告诉小编- 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 现象: 通过show recycle ...

  4. 实验室值日现象引发的一些管理思考

    我们实验室值日,有一个基本要求,大家值日完之后需要使用签字笔进行签字确认(签字笔提前放置在实验室了).看似很简单的事情,今天在查看实验室值日的过程中,却发现一个现象:值日同学签字使用的是白板笔(很粗) ...

  5. 一个JDK线程池BUG引发的GC机制思考

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:空无 来源:https://urlify.cn/63QrYv ...

  6. sscanf函数中类型不匹配警告引发的BUG和思考

    2019独角兽企业重金招聘Python工程师标准>>> BUG产生背景 项目开发中的在对网络的IP等地址进行协议封装的处理过程中,我使用了如下的一段代码: buff[0] = con ...

  7. zookeeper安装启动报错引发的版本取用思考

    今天在学习Gitee上clone的项目,其中一个需要按照zookeeper,然后从博客园.CSDN.百度等搜索到一些教程,并按此安装,因为是Windows环境,步骤到挺简单,大致如下: 1.从zook ...

  8. C++11中的时间库std::chrono(引发关于时间的思考)

    文章目录 前言 chrono 的概况 chrono 的核心内容 duration clock system_clock steady_clock time point 关于时间的思考 时间函数思考 总 ...

  9. 由细节引发的企业文化思考

    文/于敦德 一些公司往往过于关注战略,很少去关心细节问题.创业这些年,我对于细节深有体会,尤其是员工越来越多,细节就越显重要.我们内部办公都是用邮件来沟通,有一个细节是一封邮件发出去后,大家收到后总会 ...

  10. 幽灵代码删库跑路引发的分支模式思考

    Photo @  Akshar Dave 文  |  故知 背景--讲个真实的"鬼"故事 菜鸟 CTO 线研发效能团队开发了一个大促协同平台,来提高大家在处理大促相关工作时的协同效 ...

最新文章

  1. cocos2d+lua实现帧动画播放
  2. Spark系列-初体验(数据准备篇)
  3. C语言实现哈密尔顿hamiltonian算法(附完整源码)
  4. 从Flash到Silverlight进阶教程-用代码来创建动画
  5. python返回菜单_返回上一菜单
  6. 【英语学习】【WOTD】largesse 释义/词源/示例
  7. Service Started!!!-end In Service while
  8. STM32+SIM800C采用MQTT协议登录OneNet上传温湿度、MQ2烟雾浓度、GPS数据
  9. android内部dex解析,DEX文件解析---1、dex文件头解析
  10. 阿里云免费SSL证书续费步骤 TOMCAT
  11. 函数极限和无穷大 函数各种情况极限的定义
  12. 将exe和dll文件打包成单一的启动文件
  13. 雷塞DMC1380的使用
  14. IOS使用照相机的功能
  15. 重入锁-ReentrantLock
  16. PX4 1.12版本后启用lpe导致飞控启动失败的问题的解决办法
  17. Oculus Rift 渲染
  18. Overview PPT 类型 PPT 制作流程
  19. 四川大学计算机网络课件,四川大学计算机网络课件3
  20. 黑盒测试用例设计--因果图法

热门文章

  1. 数据迁移软件|如何将旧电脑的数据传输到新电脑?
  2. Mac下使用SmartSVN搭配svn使用
  3. 腾讯Tendis 号称能干掉 Redis ?你继续吹牛吧 !
  4. 【招聘测评题】中的(行测)图形推理题基本逻辑总结(附例题)
  5. 学前端的记录帖html+css b站千峰19版
  6. CryptoJS简单使用
  7. datax修复\N脏数据
  8. STC15单片机-无线通讯(WIFI模块)
  9. 安科瑞电力监控系统在安徽华光有效薄膜太阳能电池高温玻璃项目的应用
  10. 线性系统的的串联校正