目录

  • 一、实验目的
  • 二、实验原理
  • 三、示例演示--- fft 在信号分析中的应用
  • 四、实验内容
  • 更多相关文章点这里哦

一、实验目的

1.进一步加深DFT算法的原理和基本性质的理解;
2.学习用FFT对信号进行谱分析的方法,并分析其误差及其原因;

二、实验原理

1.N点序列的DFT和IDFT变换定义式如下:

利用旋转因子具有周期性,可以得到快速算法(FFT)。
在MATLAB中,可以用函数

X=fft(x)  %计算N点的DFT,N为序列x[k]的长度,即N=length(x);
X=fft(x,N)%计算序列x[k]的N点DFT;
x=ifft(X) %计算N点的IDFT,N为序列x[m]的长度;
x=ifft(X,N)%计算序列x[m]的N点IDFT;

三、示例演示— fft 在信号分析中的应用

【例4.1】有一个信号,其中,使用DFT频谱分析方法从受噪声污染的信号x(t)中鉴别出有用的信号。

clear all
fs=1000;
f1=100;
dt=1/fs;
t=0:dt:1;  %采样周期为0.001s,即采样频率为1000Hz;
N=length(t);
x=sin(2*pi*f1*t)+0.8*randn(1,N);   %产生受噪声污染的正弦波信号;
subplot(3,1,1)
plot(t,x);   %画出时域信号;
axis([0 0.3,-4 4]);
xlabel('(a)输入信号的时域波形');
L=1024;
X=fft(x,L);   %对x的L点傅里叶变换;
f=(0:L-1)*fs/L;
subplot(3,1,2)
plot(f,abs(X));
xlabel('(b)输入信号的抽样后的DFT');
X1=fftshift(X);    %对抽样频谱点的值重新排列;
f1=(-L/2:L/2-1)*fs/L;    %设置频率轴坐标;
subplot(3,1,3)
%plot(f1,X1);            %画出频域信号;
plot(f1,abs(X1));
xlabel('(c)输入信号的频谱');  %画出频域信号;

                      图1   输入信号的时域频域波形图

四、实验内容

1.假设现含有3种频率成分,,利用DFT分析的频谱。
(1)对抽样后加矩形窗截断(窗函数的长度为128),然后对其做128点的DFT并画出对应的频谱图,再对截短信号做512的DFT并画出对应的频谱图,分析其特点,总结实验中的主要结论。

clear all
fs=100;
f1=20;
f2=20.5;
f3=40;
dt=1/fs;
N=128;
t=0:dt:(N-1)*dt;  %采样周期为0.001s,即采样频率为1000Hz;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);   %产生受噪声污染的正弦波信号;
subplot(3,1,1)
plot(t,x);   %画出时域信号;
axis([0 0.3,-4 4]);
xlabel('(a)输入信号的时域波形');
L=128;
X=fft(x,L);   %对x的L点傅里叶变换;
f=(0:L-1)*fs/L;
subplot(3,1,2)
plot(f,abs(X));
xlabel('(b)输入信号的抽样后的DFT');
X1=fftshift(X);    %对抽样频谱点的值重新排列;
f1=(-L/2:L/2-1)*fs/L;    %设置频率轴坐标;
subplot(3,1,3)
%plot(f1,X1);            %画出频域信号;
plot(f1,abs(X1));
xlabel('(c)输入信号的频谱');  %画出频域信号;
clear all
fs=100;
f1=20;
f2=20.5;
f3=40;
dt=1/fs;
N=128;
t=0:dt:(N-1)*dt;  %采样周期为0.001s,即采样频率为1000Hz;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);   %产生受噪声污染的正弦波信号;
subplot(3,1,1)
plot(t,x);   %画出时域信号;
axis([0 0.3,-4 4]);
xlabel('(a)输入信号的时域波形');
L=512;
X=fft(x,L);   %对x的L点傅里叶变换;
f=(0:L-1)*fs/L;
subplot(3,1,2)
plot(f,abs(X));
xlabel('(b)输入信号的抽样后的DFT');
X1=fftshift(X);    %对抽样频谱点的值重新排列;
f1=(-L/2:L/2-1)*fs/L;    %设置频率轴坐标;
subplot(3,1,3)
%plot(f1,X1);            %画出频域信号;
plot(f1,abs(X1));
xlabel('(c)输入信号的频谱');  %画出频域信号;

(2)若对抽样后加矩形窗截断(窗函数的长度为512),然后对其做512的DFT并画出对应的频谱图,对比(1)的结果,分析其结论。

clear all
fs=100;
f1=20;
f2=20.5;
f3=40;
dt=1/fs;
N=512;
t=0:dt:(N-1)*dt;  %采样周期为0.001s,即采样频率为1000Hz;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);   %产生受噪声污染的正弦波信号;
subplot(3,1,1)
plot(t,x);   %画出时域信号;
axis([0 0.3,-4 4]);
xlabel('(a)输入信号的时域波形');
L=512;
X=fft(x,L);   %对x的L点傅里叶变换;
f=(0:L-1)*fs/L;
subplot(3,1,2)
plot(f,abs(X));
xlabel('(b)输入信号的抽样后的DFT');
X1=fftshift(X);    %对抽样频谱点的值重新排列;
f1=(-L/2:L/2-1)*fs/L;    %设置频率轴坐标;
subplot(3,1,3)
%plot(f1,X1);            %画出频域信号;
plot(f1,abs(X1));
xlabel('(c)输入信号的频谱');  %画出频域信号;

(3)如果增大抽样频率,重做(1)和(2),对比上面的结果,分析你的结论。

clear all
fs=1000;
f1=20;
f2=20.5;
f3=40;
dt=1/fs;
N=128;
t=0:dt:(N-1)*dt;  %采样周期为0.001s,即采样频率为1000Hz;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);   %产生受噪声污染的正弦波信号;
subplot(3,1,1)
plot(t,x);   %画出时域信号;
axis([0 0.3,-4 4]);
xlabel('(a)输入信号的时域波形');
L=128;
X=fft(x,L);   %对x的L点傅里叶变换;
f=(0:L-1)*fs/L;
subplot(3,1,2)
plot(f,abs(X));
xlabel('(b)输入信号的抽样后的DFT');
X1=fftshift(X);    %对抽样频谱点的值重新排列;
f1=(-L/2:L/2-1)*fs/L;    %设置频率轴坐标;
subplot(3,1,3)
%plot(f1,X1);            %画出频域信号;
plot(f1,abs(X1));
xlabel('(c)输入信号的频谱');  %画出频域信号;
clear all
fs=1000;
f1=20;
f2=20.5;
f3=40;
dt=1/fs;
N=128;
t=0:dt:(N-1)*dt;  %采样周期为0.001s,即采样频率为1000Hz;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);   %产生受噪声污染的正弦波信号;
subplot(3,1,1)
plot(t,x);   %画出时域信号;
axis([0 0.3,-4 4]);
xlabel('(a)输入信号的时域波形');
L=512;
X=fft(x,L);   %对x的L点傅里叶变换;
f=(0:L-1)*fs/L;
subplot(3,1,2)
plot(f,abs(X));
xlabel('(b)输入信号的抽样后的DFT');
X1=fftshift(X);    %对抽样频谱点的值重新排列;
f1=(-L/2:L/2-1)*fs/L;    %设置频率轴坐标;
subplot(3,1,3)
%plot(f1,X1);            %画出频域信号;
plot(f1,abs(X1));
xlabel('(c)输入信号的频谱');  %画出频域信号;
clear all
fs=1000;
f1=20;
f2=20.5;
f3=40;
dt=1/fs;
N=2048;
t=0:dt:(N-1)*dt;  %采样周期为0.001s,即采样频率为1000Hz;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);   %产生受噪声污染的正弦波信号;
subplot(3,1,1)
plot(t,x);   %画出时域信号;
axis([0 0.3,-4 4]);
xlabel('(a)输入信号的时域波形');
L=512;
X=fft(x,L);   %对x的L点傅里叶变换;
f=(0:L-1)*fs/L;
subplot(3,1,2)
plot(f,abs(X));
xlabel('(b)输入信号的抽样后的DFT');
X1=fftshift(X);    %对抽样频谱点的值重新排列;
f1=(-L/2:L/2-1)*fs/L;    %设置频率轴坐标;
subplot(3,1,3)
%plot(f1,X1);            %画出频域信号;
plot(f1,abs(X1));
xlabel('(c)输入信号的频谱');  %画出频域信号;

更多相关文章点这里哦

数字信号处理----全套Matlab实验报告

通信工程(信息类,电子类,电气工程,自动化,计算机,软件工程,机电,等相关专业)全套学习指导


答疑资料qq群:1007576722

实验四 离散傅立叶变换的应用相关推荐

  1. 傅立叶变换系列(四)离散傅立叶变换

    说明: 傅里叶级数.傅里叶变换.离散傅里叶变换.短时傅里叶变换...这些理解和应用都非常难,网上的文章有两个极端:"Esay"  Or  "Boring"!如果 ...

  2. 理解离散傅立叶变换(四. 复数形式离散傅立叶变换)

    原文链接 https://blog.csdn.net/dznlong/article/details/2280867 理解离散傅立叶变换(四) ------复数形式离散傅立叶变换 复数形式的离散傅立叶 ...

  3. 理解离散傅立叶变换(一)——傅立叶变换的由来

    理解离散傅立叶变换(一) --傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让 ...

  4. OpenCV 【十七】离散傅立叶变换

    目录 1 key 2 原理 3 实例 3代码 4运行结果 5应用举例 1 key 什么是傅立叶变换及其应用? 如何使用OpenCV提供的傅立叶变换? 相关函数的使用,如: copyMakeBorder ...

  5. 理解离散傅立叶变换(一)

    理解离散傅立叶变换(一) ------傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的 文章,太过抽象,尽是一些让人看了就望而生畏的公式 ...

  6. OpenCV之core 模块. 核心功能(2)基本绘图 随机数发生器绘制文字 离散傅立叶变换 输入输出XML和YAML文件 与 OpenCV 1 同时使用

    基本绘图 目的 本节你将学到: 如何用 Point 在图像中定义 2D 点 如何以及为何使用 Scalar 用OpenCV的函数 line 绘 直线 用OpenCV的函数 ellipse 绘 椭圆 用 ...

  7. 理解离散傅立叶变换(三.复数)

    理解离散傅立叶变换(三) ------复数形式离散傅立叶变换 复数形式的离散傅立叶变换非常巧妙地运用了复数的方法,使得傅立叶变换变换更加自然和简洁,它并不是只是简单地运用替换的方法来运用复数,而是完全 ...

  8. 理解离散傅立叶变换(一. 傅立叶变换的由来)

    理解离散傅立叶变换(一) ------傅立叶变换的由来 关于傅立叶变换,不管是书本还是在网上可以非常easy找到关于傅立叶变换的描写叙述,可是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生 ...

  9. 离散傅立叶变换与逆变换

    一.怎样为一副图像增加一个通道 Mat A=(Mat_<double>(3,3)<<1,2,3,4,5,6,7,8,9);Mat B=Mat::zeros(A.size(),A ...

最新文章

  1. Navicat导出表结构导出成Excel
  2. Ubuntu(Linux)上安装ROS缓慢,解决方法:添加ros的国内镜像源,以及ROS安装过程使用rosdep update出现错误:‘The read operation timed out‘
  3. ChineseGLUE(CLUE):针对中文自然语言理解任务的基准平台
  4. 限制 TEdit 只能接收 数字 输入...
  5. VS2010测试工具对应LoadTest2010创建sql
  6. linux培训课程第十三天:ppt以及笔记
  7. java .class文件和.class文件区别是什么?
  8. 阶段3 2.Spring_10.Spring中事务控制_5 spring事务控制的代码准备
  9. 人脸识别测试图片_人脸识别或将到达瓶颈,有监督的聚类算法探索新思路
  10. 前沿重器[22] | 聊聊对话系统:技术架构
  11. 扩展欧几里得算法推导
  12. ABB伺服驱动调试(二)
  13. python怎么输入正整数_python判断所输入的任意一个正整数是否为素数的两种方法...
  14. HBuilder 第一个app项目
  15. 小米路由器3 SCUT校园网刷scut-padavan固件方法
  16. [sdx62]使用diff工具给开源软件包dnsmasq打patch操作方法
  17. 躁!DJ 风格 Java 桌面音乐播放器
  18. QT OpenGL图形放大缩小旋转移动
  19. JAVA基础学习入门
  20. 拼多多用户数超越淘宝,电商市场正变成腾讯与阿里的对决

热门文章

  1. excel单元格下拉选项怎么设置_使用Excel制作搜索式下拉菜单,让你不再烦恼下拉选项多内容...
  2. 关于向量的模和向量的范数的理解
  3. ppt6计算机考试,全国计算机考试第6章 过程.ppt
  4. 深度揭秘高频交易盈利方式
  5. android版本 51,51星变手机版
  6. 系分 - 操作系统 - 嵌入式
  7. HTML 用过渡跟动画制作一个简易的旋转魔方
  8. org.xml.sax.SAXParseException: 元素内容必须由格式正确的字符数据或标记组成。 的解决办法
  9. GPU呈现模式分析中颜色的意义
  10. python进阶 - day1