matlab fft谱分析实验报告,matlab信号频谱分析FFT详解
前言
做OFDM通信少不了频谱分析,基带信号DA后的频谱,以及基带数字上变频后的DA信号都要频谱分析。我觉得其实做任何工程都是这样,先规定实施方案,然后仿真成功,再实际开发,不过也可以一边开发,一边仿真,开发结果要与仿真预期结果一致。
所以分析与仿真工具MATLAB就很重要了,既可以仿真,又可以通过示波器或其他方法把实际信号采下来分析。
matlab使用FFT函数分析信号频谱
一般我使用的FFT分析频谱流程如下:
%% 两个频率分别为15HZ 和 20HZ 的正弦信号[1]
Fs=50;%采样率
f1=15;
f2=20;
t = 0:1/Fs:10-1/Fs; %500个点
x = sin(2*pi*f1*t) + sin(2*pi*f2*t);
figure;
plot(t,x);
y = fft(x);
%将横坐标转化,显示为频率f= n*(fs/N)
f = (0:length(y)-1)*Fs/length(y);
figure;
plot(f,abs(y));
title('Magnitude');
%该变换还会生成尖峰的镜像副本,该副本对应于信号的负频率。
%为了更好地以可视化方式呈现周期性,可以使用 fftshift 函数对变换执行以零为中心的循环平移。
n = length(x);
fshift = (-n/2:n/2-1)*(Fs/n);
yshift = fftshift(y);
figure;
plot(fshift,abs(yshift));
图1时域图像 图2直接FFT的结果 图3 FFT平移后的结果
其中有3个注意的点:
1.FFT的结果看的是频谱,所以怎么把横坐标的值从原来的FFT点数0:N-1转换为频率值呢?
首先要引出频谱分辨率的概念,即分辨两个不同频率信号的最小间隔,FFT结果相邻点间的间隔
。因为N点FFT对应采样率为fs的序列,其频率分辨率为
,其中Ts为采样周期,T为整个序列的时间长度。有关频率分辨率的就不多说了。所以我们横坐标转换为:f = (0:length(y)-1)*Fs/length(y);
2.直接FFT的结果里怎么又多余的信号频率(镜像频率)图2?
DFT具有对称性,因为其是周期序列DFS在一个周期内的点,时域序列是有限长实序列,DFT的结果的实部周期偶对称,虚部周期奇对称,也就是模值周期偶对称,相位周期奇对称。其实从奈奎斯特定律也可以看出,fs>=2f,fs的采样率最多也就显示fs/2的真实频率(感性理解哈哈)。
所以程序处理方式就是周期延拓后取-N/2:N/2-1.用到函数fftshift(),结果如图3.如注释所述:
%该变换还会生成尖峰的镜像副本,该副本对应于信号的负频率。
%为了更好地以可视化方式呈现周期性,可以使用 fftshift 函数对变换执行以零为中心的循环平移。
其实这和设计数字滤波器IIR与FIR也一样,采样率为fs的信号,设计的滤波器的通带阻代也限制在0-fs/2内。
3.程序中的信号幅度值都是1,500点的FFT画出来的幅度值怎么变成了250,应该是1吧?
是的,应该是1。所以怎么变换为1呢,注意到FFT的结果是偶对称的,且其反应的真实频谱是0-fs/2。所以需要的操作是直接取0-N/2的FFT结果,乘以2,然后除以N。即2*abs(y(1:N/2+1))/N,在上面的程序下接着写:
注意到要除以N,也就是FFT的长度,为什么除以N,这个有很多说法,我自己理性理解的也不透彻,所以这里就不解释了自行百度(我只能结合本例子感性理解哈哈)。
%FFT的结果所要展现的真实的频谱幅值[2]
realy=2*abs(y(1:n/2+1))/n;
realf=(0:n/2)*(Fs/n);
figure;
plot(realf,realy);
结果如图4,可见横坐标频率是0-25,纵坐标信号的幅度为1.
然而,有不少人(包括我)平时分析信号都是直接FFT画频谱:图2,且看幅值都是看相对的大小,或者有没有频率分量,就很少做图3与图4的变换。但是我不知道其中的缘由,今天终于明白了。
图4 FFT所反映的真正的频谱幅值
参考资料
[1]傅里叶变换 - MATLAB & Simulink - MathWorks 中国
[2]快速傅里叶变换- MATLAB fft - MathWorks 中国
matlab fft谱分析实验报告,matlab信号频谱分析FFT详解相关推荐
- matlab音频信号处理实验报告,matlab音频信号处理实验报告.docx
matlab音频信号处理实验报告 MATLAB音频信号处理实验 南昌航空大学信息工程学院 课程实验报告 实验名称:实验时间:2014年4月23日 指导教师: 班级: 学号: 姓名: 成绩: 南昌航空大 ...
- matlab操作入门实验报告,MATLAB基本操作实验报告.doc
MATLAB基本操作实验报告MATLAB基本操作实验报告 南昌航空大学 数学与信息科学学院 实 验 报 告 课程名称: 实验名称: 实验类型: 验证性 综合性□ 设计性□ 实验室名称: 班级学号: 学 ...
- matlab矩阵处理实验报告,matlab实验报告一二三
<matlab实验报告一二三>由会员分享,可在线阅读,更多相关<matlab实验报告一二三(37页珍藏版)>请在金锄头文库上搜索. 1.2015 秋秋 2013 级级MATLA ...
- matlab fft谱分析实验报告,基于matlab的fft频谱分析及应用实验报告.docx
基于matlab的fft频谱分析及应用实验报告 实验三用FFT对信号进行频谱分析 一实验目的 1能够熟练掌握快速离散傅立叶变换的原理及应用FFT进行频谱分析的基本方法:2了解用FFT进行频谱分析可能出 ...
- matlab fft谱分析实验报告,数字信号处理实验报告-FFT算法的MATLAB实现.doc
数字信号处理实验报告-FFT算法的MATLAB实现.doc 数字信号处理 实验报告实验二FFT算法的MATLAB实现一.实验目的通过本实验的学习,掌握离散傅立叶变换的理论,特别是FFT的基本算法以及其 ...
- 通信使用matlab三元码实验报告,Matlab仿真DSBSC信号与双极性不归零码通信原理实验报告二实验...
Matlab仿真DSBSC信号与双极性不归零码通信原理实验报告二实验 Matlab 仿真 DSB-SC 信号与双极性不归零码通信原理实验报告二实验题目:Matlab 仿真 DSB-SC 信号与双极性不 ...
- MATLAB环境认识实验报告,matlab实验报告ljg
matlab实验报告ljg 第 1 页 共 3 页电子信息工程学系实验报告课程名称: MATLAB 程序设计 实验项目名称: MATLAB 数值计算 实验时间:2011.4.26 班级:电信 081 ...
- matlab基础教程实验报告,Matlab基础实验报告.doc
Matlab基础实验报告 南昌大学实验报告(信号与系统) 学生姓名: 肖江 学 号: 6100210030 专业班级: 电子103班 实验类型:□ 验证 □ 综合 □ 设计 □ 创新 实验日期: 20 ...
- matlab操作入门实验报告,matlab操作实验报告
实验一matlab基本操作 一.实验目的 熟悉matlab的安装与启动:熟悉matlab用户界面:熟悉matlab功能.建模元素:熟悉matlab优化建模过程. 二.实验设备与工具 1.计算机 2.m ...
最新文章
- DeepMind 的2017:有 AlphaGo,更有社会责任
- keras dense sigmoid_tf.keras一个存在自定义层时加载模型时的小坑
- 高效代码审查:来自前质疑者的9个建议
- javascript学习-创建json对象数据,遍历
- jvm内存参数配置_idea中设置JVM参数,简单理解JVM常见参数,JVM调优简单入门
- 使用Notepad++开发C#,一个复杂点的csscript脚本
- oracle pl/sql 包
- 高效的数据压缩编码方式 Protobuf
- PHP程序构造,PHP程序员在做网站开发前对基本目录结构如何规划?
- 环形数组求最大子数组之和
- java剑指offer_剑指offer题目java实现
- 数据挖掘、数据分析、人工智能及机器学习课程资源
- win10系统下SQL2012下载及安装
- winserver2003手谈
- PHP调用京东联盟接口以及配置签名
- arm920t内核技术手册
- hikvision服务器重装系统,一篇看懂黑群晖重装系统
- Oracle 软件包及补丁包免费下载及简单说明
- appium元素定位之元素定位工具 什么是uiautomatorviewer,uiautomatorviewer是干嘛的
- 神州租车打造城市绿色出行 低碳理念与公益责任并行