Matlab FFT详解:避免频谱失真的关键点

需积分: 14 2 下载量 102 浏览量 更新于2024-09-08 收藏 76KB DOCX 举报
本文主要介绍了MATLAB中的快速傅里叶变换(FFT)小程序,包括其基本用法、特性以及在不同参数设置下的影响。通过详细解释fft函数的调用方式和返回值的特点,帮助理解FFT在频谱分析中的应用。 在MATLAB中,fft函数用于计算序列的快速傅里叶变换。基本调用形式有两种: 1. `Y = fft(y);` 这种情况下,`y` 是输入序列,`Y` 是`y`的FFT结果,与`y`具有相同长度。如果`y`是向量,`Y`是对`y`的FFT;如果`y`是矩阵,`Y`则是对矩阵每一列进行FFT的结果。 2. `Y = fft(y, N);` 在这种调用中,`N`指定了执行的FFT点数。如果`y`长度小于`N`,则在末尾补零;如果`y`长度大于`N`,则截取前`N`个元素。 FFT返回值具有一些重要特性: 1. **对称性**:根据奈奎斯特采样定理,FFT能分辨的最高频率是采样频率的一半。返回的`Y`是以这个频率为轴对称的,前半部分与后半部分是复共轭关系。 2. **幅值**:做FFT分析时,幅值与输入点数相关。要获得真实幅值,需将变换结果乘以`2/N`。这使得双边谱转换为单边谱,其中零频(直流分量)的幅值会翻倍。 3. **基频**:分析的基频由信号时长决定,即`f0 = 1/T`,频率序列是从0到`N-1`乘以`f0`。 4. **执行N点FFT**:当指定`N`点FFT时,如果`N`大于`y`的长度,`y`会被补零;如果`N`小于`y`的长度,`y`会被截断。但要注意,如果`N`过大,可能会导致频谱失真。 举例说明了当`N`大于`y`长度时的影响。在这种情况下,由于信号在`N`点之后被补零,导致频谱分析出现额外的频率成分,主要峰值的幅度也会降低,造成频谱失真。 以下是一个示例程序,演示了当`N`等于信号长度(100点)时的FFT: ```matlab clearall; % 清除内存所有变量 closeall; % 关闭所有打开的图形窗口 %% 执行FFT点数与原信号长度相等(100点) % 构建原信号 N = 100; % 信号长度 Fs = 1; % 采样频率 dt = 1/Fs; % 采样间隔 t = [0:N-1]*dt; % 时间序列 xn = cos(2*pi*0.24*[0:99]) + cos(2*pi*0.26*[0:99]); xn = [xn, zeros(1, N-100)]; % 原始信号的值序列 ``` 这个例子中,`xn`是100点的原始信号,包含了两个正弦波成分。通过调用`fft(xn)`,我们可以对这个信号进行频谱分析,正确地识别出两个频率分量。 MATLAB的fft函数是进行傅里叶变换的重要工具,理解其工作原理和注意事项对于进行有效的信号分析至关重要。在使用时,确保选择合适的FFT点数以避免频谱失真。
2010-01-30 上传
MATLAB中也同样有许多有意思的实例,为提高读者对MATLAB和Simulink的兴趣,特举部分以供参考。具体如下,运行的时候只要将“:”前面的代码复制到MATLAB中就可以了,随之会出现各种各样的演示实例,对初学者帮助不小哦。 ◆ 平面与立体绘图 graf2d :XY平面绘图(火柴棒) graf2d2 :XYZ立体绘图(切片) hndlgraf :平面显示线型处理窗口及命令演示 hndlaxis :平面显示处理窗口及命令演示 graf3d :立体显示处理窗口及命令演示 ◆ 复杂函数的三维绘图 cplxdemo :复杂的XYZ立体图形 ◆ 等高线绘制 quivdemo :等高线箭头显示 ◆ 动画 lorenz : Lorenz吸引子动画显示 ◆ 电影 vibes : L-形薄膜振动 ◆ Fourier变换 sshow sunspots :太阳黑点数据的傅里叶分析 fftdemo :分析噪声序列中两组数据的相关度 ◆ 数据拟合 sshow fitdemo :显示非线性数据拟合过程 census :预测世界人口 spline2d :样条拟合 ◆ 稀疏矩阵 sshow sparsity :降阶 ◆ 游戏 xpbombs :仿Windows系统自带的扫雷游戏 life :生命发展游戏 ◆ 三维效果图 klein1 :肤色三维效果图 tori4 :四个首尾相接的圆环 spharm2 : 球形和声 cruller :类似油饼的东西 xpklein : Klein瓶 bottle modes : L-形薄膜的12中模态 logo :MATLAB的Logo xpquad :不同比例的巴尔体超四方体 truss :二维桁架的12个模模态 tr***el :旅行商问题动画演示 wrldtrv :在地球仪上演示两地间的飞行线路 makevase :通过点击鼠标来制作花瓶 xpsound :声音样本分析 funfuns :综合了找零点,最小化和单输入函数积分功能 sshow e2pi : e^pi或者pi^e quake :地震波可视化 penny :便士可视化 imageext :改变图像的映射颜色 earthmap :地球仪 ◆ 优化工具箱 bandem :香蕉最优化展示 expo-style banana optimization sshow filtdem :滤波效果演示 filter effect demo sshow filtdem2 :滤波设计演示 filter design demo cztdemo : FFT和CZT (两种不同类型的Z-变换算法) phone :演示电话通声音的时间与频率的关系 sigdemo1 :离散信号的时频图,可用鼠标设置 sigdemo2 :连续信号的时频图,可用鼠标设置 filtdemo :低通滤波器的交互式设计 moddemo :声音信号的调制 sosdemo :数字滤波器的切片图 ◆ 神经网络工具箱 neural :神经网络模块组 firdemo :二维FIR滤波器 nlfdemo :非线性滤波器 dctdemo :DCT演示 mlpdm1 :利用多层感知器神经网络拟合曲线动画 mlpdm2 :利用多层感知器神经网络进行XOR问题运算 ◆ 模糊逻辑工具箱 invkine :运动逆问题 juggler :跳球戏法 fcmdemo : FCM slcp : 类似倒立摆动画 slcp1 :类似倒立摆动画cart and a varying pole slcpp1 :类似倒立摆动画,有两个摆,一个可以变化 sltbu :卡车支援 slbb :类似于翘翘板