MATLAB利用FFT对信号进行频谱分析
1.实验目的
(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。
(2)熟悉FFT算法原理和FFT程序的应用。
(3)学习利用FFT对离散时间信号进行频谱分析的方法,了解可能出现的误差及其原因,以便在实际中正确应用FFT。
2.实验原理
用FFT对信号作频分析是学习数字信号处理的重要内容,经常需要进行分析的信号是模拟信号的时域离散信号。对信号进行谱分析的重要问题是频谱分辨率D和分析误差。当N较大时,离散谱的包络才能逼近连续谱,因此N要适当选择大一些。
3.运行结果
图1 x1(n)时域波形及幅频特性曲线
图2 x2(n)时域波形及幅频特性曲线
图3 x3(n)时域波形及幅频特性曲线
图4 x4(n)时域波形及幅频特性曲线
图5 x5(n)时域波形及幅频特性曲线
图6 x6(n)时域波形及幅频特性曲线
图7 x(n)=x4(n)+jx5(n)时域波形及幅频特性曲线
附:程序代码
(1)
ns=0;
nf=4;
n1=0;
n2=10;
n=[n1:n2];
x=stepseq(ns,n1,n2)-stepseq(nf,n1,n2);
subplot(3,1,1);
stem(n,x);
title('矩形序列R4(n)');
X1_8=fftshift(fft(x,8));
subplot(3,1,2);
stem(abs(X1_8));
title('N=8');
X1_16=fftshift(fft(x,16));
subplot(3,1,3);
stem(abs(X1_16));
title('N=16');
function [x,n]=stepseq(n0,n1,n2)
if n0<n1||n0>n2||n1>n2
error('参数须满足n1<=n0<=n2');
end
n=[n1:n2];
x=[(n-n0)>=0];
end
(2)
n1=0;
n2=20;
n=[n1:n2];
x=zeros(1,n2-n1+1);
for i=1-n1:n2-n1+1
if 0<=n(i)&&n(i)<=3
x(i)=n(i)+1;
end
if 4<=n(i)&&n(i)<=7
x(i)=8-n(i);
end
end
subplot(3,1,1);
stem(n,x);
title('函数x2(n)');
X8=fftshift(fft(x,8));
subplot(3,1,2);
stem(abs(X8));
title('N=8');
X16=fftshift(fft(x,16));
subplot(3,1,3);
stem(abs(X16));
title('N=16')
(3)
n1=0;
n2=20;
n=[n1:n2];
x=zeros(1,n2-n1+1);
for i=1-n1:n2-n1+1
if 0<=n(i)&&n(i)<=3
x(i)=4-n(i);
end
if 4<=n(i)&&n(i)<=7
x(i)=n(i)-3;
end
end
subplot(3,1,1);
stem(n,x);
title('函数x3(n)');
X8=fftshift(fft(x,8));
subplot(3,1,2);
stem(abs(X8));
title('N=8');
X16=fftshift(fft(x,16));
subplot(3,1,3);
stem(abs(X16));
title('N=16')
(4)
n1=0;
n2=31;
n=[n1:n2];
x=zeros(1,n2-n1+1);µ
for i=1-n1:n2-n1+1
if 0<=n(i)&&n(i)<=31
x(i)=cos(pi*n(i)/8);
end
end
subplot(3,1,1);
stem(n,x);
title('函数x4(n)');
X16=fftshift(fft(x,16));
subplot(3,1,2);
stem(abs(X16));
title('N=16');
X32=fftshift(fft(x,32));
subplot(3,1,3);
stem(abs(X32));
title('N=32')
(5)
n1=0;
n2=31;
n=[n1:n2];
x=zeros(1,n2-n1+1);
for i=1-n1:n2-n1+1
if 0<=n(i)&&n(i)<=31
x(i)=sin(pi*n(i)/8);
end
end
subplot(3,1,1);
stem(n,x);
title('函数x5(n)');
X16=fftshift(fft(x,16));
subplot(3,1,2);
stem(abs(X16));
title('N=16');
X32=fftshift(fft(x,32));
subplot(3,1,3);
stem(abs(X32));
title('N=32')
(6)
fs=64;
N1=16;
N2=32;
N3=64;
delta_t=1/fs;
t=0:delta_t:(N3-1)*delta_t;
t1=0:delta_t/10:(N3-1)*delta_t;
x6=cos(8*pi*t)+cos(16*pi*t)+cos(20*pi*t);
x6_t=cos(8*pi*t1)+cos(16*pi*t1)+cos(20*pi*t1);
x6_1=fftshift(fft(x6,N1));
x6_2=fftshift(fft(x6,N2));
x6_3=fftshift(fft(x6,N3));
subplot(5,1,1);
plot(t1,x6_t);
title('时域信号x6(t)');
subplot(5,1,2);
stem(t,x6);
title('离散序列x6(n)');
subplot(5,1,3);
stem(abs(x6_1));
title('N=16');
subplot(5,1,4);
stem(abs(x6_2));
title('N=32');
axis([0,31,0,20]);
subplot(5,1,5);
stem(abs(x6_3));
title('N=64');
axis([0,63,0,40]);
(7)
n1=0;
n2=31;
n=[n1:n2];
x4=zeros(1,n2-n1+1);
for i=1-n1:n2-n1+1
if 0<=n(i)&&n(i)<=31
x4(i)=cos(pi*n(i)/8);
end
end
x5=zeros(1,n2-n1+1);
for i=1-n1:n2-n1+1
if 0<=n(i)&&n(i)<=31
x5(i)=sin(pi*n(i)/8);
end
end
x7=x4+j*x5;
x7_1=fftshift(fft(x7,16));
x7_2=fftshift(fft(x7,32));
x7_3=fftshift(fft(x7,64));
subplot(4,1,1);
stem(x4);
title('x7(n)的实部部分');
subplot(4,1,2);
stem(abs(x7_1));
title('N=16');
subplot(4,1,3);
stem(abs(x7_2));
title('N=32');
subplot(4,1,4);
stem(abs(x7_3));
title('N=64');
MATLAB利用FFT对信号进行频谱分析相关推荐
- 用计算机进行频谱分析时,实验四-利用FFT对信号进行频谱分析1112
实验四 利用DFT 对信号进行频谱分析 一.目的要求 (1) 进一步加深对线性卷积的理解和分析能力: (2) 通过编程,上机调试程序,进一步增强使用计算机解决问题的能力: (3) 掌握线性卷积与循环卷 ...
- 数字信号处理(一)利用FFT对信号进行频谱分析
数字信号处理(一)利用FFT对信号进行频谱分析 1.实验目的 (1) 进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质). ( ...
- 基于MATLAB的数字信号处理(3) 用FFT对信号作频谱分析
文章目录 一.实验目的 二.实验原理与方法 三.实验内容及步骤 1. 有限长序列 2. 周期序列 3. 模拟周期信号 四.回答思考题 五.实验总结 一.实验目的 学习用 FFT 对连续信号和时域离散信 ...
- MATLAB中FFT的使用方法(频谱分析)
原文地址:MATLAB中FFT的使用方法(频谱分析)作者:飞鸿 说明:以下资源来源于<数字信号处理的MATLAB实现>万永革主编 一.调用方法 X=FFT(x): X=FFT(x,N): ...
- 数字信号处理第三次试验:用FFT对信号作频谱分析
数字信号处理第三次试验:用FFT对信号作频谱分析 前言 一.实验目的 二.实验原理与方法 三.实验环境 四.实验内容及步骤 五.实验结果截图(含分析) 六.思考题 前言 为了帮助同学们完成痛苦的实验课 ...
- MATLAB实现FFT及信号的谱分析
一.实验目的 1.通过实验加深对 FFT 的理解,熟悉 FFT 程序.结构及编程方法. 2.熟练应用 FFT 对典型信号进行谱分析的方法. 3.了解应用 FFT 进行信号频域分析可能出现的问题以便在实 ...
- 用fft对信号进行频谱分析实验报告_示波器上的频域分析利器,Spectrum View测试分析...
简介: [Spectrum View技术文章系列] 从基础篇开始,讲述利用示波器上的Spectrum View功能观测多通道信号频谱分析 正文: 示波器和频谱仪都是电子测试测量中必不可少的测试设备,分 ...
- 在matlab上利用fft进行信号频谱分析_使用示波器进行信号频谱分析(FFT)的设置教学...
对信号中的频率分量进行分析是十分重要的,因为他们常常会在设计中引起噪声,一旦超出允许的公差,就可能进而导致器件发生故障功能失常.严重的还可能导致电压尖峰,损坏器件.如果我们在设计的时候没有进行正确的测 ...
- 用fft对信号进行频谱分析实验报告_FFT分析频谱无泄露的条件
如果 表示被分析信号的模拟频率, 表示采样频率, 表示每个cycle的采样点数.则FFT分析频谱分辨率为 ,所以频谱分析无泄漏的条件为: 即: 化简可得: 所以对于一个 的信号,只要满足 为整数,即 ...
最新文章
- 用户通过WEB方式更改AD域帐户密码
- v3是c语言吗 yolo_YOLOv3
- 科研工作者的神器-zotero论文管理工具
- mysql 相关子查询使用【主表得数据需要扩展(统计数据依赖与其他表,但是与主表有关联)】...
- 深入理解css优先级
- java上传文件堆溢出_我的正则表达式导致Java中的堆栈溢出;我错过了什么?
- typecho支持html,[分享] Basic HTML - 一款极简的Typecho主题
- 【渝粤教育】国家开放大学2018年春季 0551-22T素描(二) 参考试题
- 中兴2018年上半年业绩惨不忍睹,押宝5G建设能否让其起死回生?
- 阿里云移动端播放器高级功能---直播时移 1
- VARCHART XGantt 甘特图用程序应该如何交付
- 机器视觉运动控制一体机应用|工件同心度检测
- 【juns项目】信用卡数据项目2-2:数据设计
- 数据挖掘技术-主键合并数据准备数据
- Keil(MDK)下用仿真器烧程序的同时烧写附加数据到SPI FLASH
- javaweb项目JS文件报错解决办法
- 高斯噪声和高斯白噪声相关介绍
- arm解锁 j-flash_J-Link固件烧录以及使用J-Flash向arm硬件板下载固件程序
- uniapp隐藏原生导航栏
- 短视频APP软件开发源码提供
热门文章
- 2011年成都信息工程学院第二季极客大挑战逆向第二题Crackwho破文
- 轮胎侧偏角、侧向力分析说明
- 谷歌地图与泰山龙脉论
- 从反向输出一个四位数由难到易引申到反向输出一个n位数
- HTML 如何获取输入框的值
- Python全功能测试框架pytest
- 使用mybatis plus时传入中文时出现乱码
- 工程提示Unfortunately you can‘t have non-Gradle Java modules and > Android-Gradle modules in one project
- 实习日记(5-18)Socket与MQTT
- R语言使用glmnet包的glmnet函数拟合lasso回归模型:使用cv.glmnet函数获取最佳lambda值、coef函数获取每个特征的系数以及截距