问题来源:在阅读莱昂斯的《数字信号处理》第三章离散傅里叶变换时,试图验证实数偶对称信号的傅里叶变换实部为偶对称的且虚部为零。验证失败。验证信号为矩形信号,结果显示虚部是不为零且最大幅值等于信号幅值。

  错误原因:MATLAB中的fft函数默认其 N 点输入信号的时间序号为从 0 到 N-1 ,默认其输出信号的频率序号为从 0 到 N-1 。而当试图输入一个时间序号为从 -N/2 到 N/2-1 ( N 为偶数时)或从 -(N-1)/2 到 (N-1)/2 ( N 为奇数)的信号时,输出将会产生相移,看到的频谱的实部、虚部和相位都不是原始信号的 fft 的结果。只有频谱的幅值等于原始信号的 fft 的结果。

  解决方法:在进行 fft 之前须使用 ifftshift 函数对原始信号进行移位,整个正确的 fft 过程为 fft(ifftshift(signal)) 。然而这样计算得到的 fft 也需要在频域使用 fftshift 进行移位才能显示频率序号为从 -N/2 到 N/2-1 ( N 为偶数时)或从 -(N-1)/2 到 (N-1)/2 ( N 为奇数)的频谱,即 fftshift(fft(ifftshift(signal))) 。在对频率序号为从 -(N+1)/2 到 (N+1)/2 的信号进行 ifft 的时候也会有类似的问题,解决方式为 fftshift(ifft(ifftshift(spectrum))) 。

  注意:当 N 为奇数,若要使用 ifftshift 构造偶对称信号,须按照时间序号为从 -N/2 到 N/2-1 构造。即构造 [ 1 2 3 4 5 4 3 2 ] 经过ifftshift之后变为 [ 5 4 3 2 1 2 3 4 ] ,原信号中位于 0 时间序号的“5”依然在 0 时间序号的位置。

参考资料

1. FFT of a real symmtric vector is not real and symmetric

  http://stackoverflow.com/questions/25042379/fft-of-a-real-symmetric-vector-is-not-real-and-symmetric#

2. Correct use of fftshift and ifftshift at input to fft and ifft

  http://www.mathworks.com/matlabcentral/newsreader/view_thread/285244

MATLAB中fft函数的正确使用方法的更多相关文章

  1. matlab中fprintf函数的具体使用方法

    matlab中fprintf函数的具体使用方法实例如下: fprintf函数可以将数据按指定格式写入到文本文件中.其调用格式为: 数据的格式化输出:fprintf(fid, format, varia ...

  2. Matlab中fread函数的高级使用方法及其帮助文档中容易引起歧义的地方

    参考资料:http://cn.mathworks.com/help/matlab/ref/fread.html 注意:参考资料针对的Matlab版本号R2015a,我使用的是R2013b. Matla ...

  3. MATLAB中FFT的使用方法

    MATLAB中FFT的使用方法 说明:以下资源来源于<数字信号处理的MATLAB实现>万永革主编 一.调用方法X=FFT(x):X=FFT(x,N):x=IFFT(X);x=IFFT(X, ...

  4. [转载]Matlab中fft与fftshift命令的小结与分析

    http://blog.sina.com.cn/s/blog_68f3a4510100qvp1.html 注:转载请注明出处——by author. 我们知道Fourier分析是信号处理里很重要的技术 ...

  5. matlab中patch函数的用法

    http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...

  6. NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用

    NET MVC全局异常处理(一)   目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...

  7. matlab 中“newff” 函数的参数设置

    matlab 中"newff" 函数的使用方法技巧|和各参数的意义 先来一个简单的源程序让大家练习一下: % Here input P and targets T define a ...

  8. Matlab中imfilter()函数的用法

    Matlab中imfilter()函数的用法 功能:对任意类型数组或多维图像进行滤波.用法:B = imfilter(A,H) B = imfilter(A,H,option1,option2,... ...

  9. Matlab中 awgn 函数输入参数带有‘measured’ 时snr的含义

    MATLAB中awgn 函数可以为输入信号x 添加一定大小的噪声. out = awgn(in,snr,'measured');  是一种常见的使用方法,意思是在添加噪声前先测量一下输入信号的功率,再 ...

随机推荐

  1. svd自我学习

    svd(singular value decomposition) 奇异值分解  2015-05-17 16:28:50 图和部分内容来自:http://blog.csdn.net/wangzhiqi ...

  2. Apache RewriteRule

    1.Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式.如果要想用到rewrite模块 ...

  3. IOS UITableView移除底部空白行

    tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

  4. 自定义javascript log方法

    /** * 类似chrome,firefox的console对象 * 但是在IE等不支持console的浏览器不会报错 * 理论上浏览器支持的console的方法都支持,比如谷歌的 * assert, ...

  5. VMware-workstation-full-11.0.0-2305329&VMware-player-7.0.0-2305329

    VMware-workstation-full-11.0.0-2305329.exe Name: VMware-workstation-full-11.0.0-2305329.exe 发行日期: 20 ...

  6. wp8开发笔记之开发环境的搭建

    开发工具的下载: Windows phone sdk 8.0下载地址: http://www.microsoft.com/ZH-CN/download/details.aspx?id=35471 开发 ...

  7. win7配上的网关会自动消失?解决

    前几天遇见一台计算机,发现手动设置的ip和网关等...在使用了一会就变成,网关丢失,其他不变...奇怪啊...第一次遇见.后来找了一下.有答案了. 先将客户端卸载掉,再打开网络和共享中心-->本 ...

  8. SSH框架

    一,Struts2框架部署 1,搭建Struts2的jar包 1.1,Struts2所需各个jar包的作用 asm-3.3.jar                                  操 ...

  9. img标签中的alt属性在IE6/7/8中的兼容问题

    W3C HTML 4.01 规范规定,alt 属性指定了在 User Agents 不能显示图片.表单和 applets 的时候显示的替换文字.alt 属性在 IE6 IE7 IE8(Q) 下具有双重 ...

  10. oracle问题

    (1) 连通性: 注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小 监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇 ...