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对信号进行频谱分析相关推荐

  1. 用计算机进行频谱分析时,实验四-利用FFT对信号进行频谱分析1112

    实验四 利用DFT 对信号进行频谱分析 一.目的要求 (1) 进一步加深对线性卷积的理解和分析能力: (2) 通过编程,上机调试程序,进一步增强使用计算机解决问题的能力: (3) 掌握线性卷积与循环卷 ...

  2. 数字信号处理(一)利用FFT对信号进行频谱分析

    数字信号处理(一)利用FFT对信号进行频谱分析 1.实验目的 (1) 进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质). ( ...

  3. 基于MATLAB的数字信号处理(3) 用FFT对信号作频谱分析

    文章目录 一.实验目的 二.实验原理与方法 三.实验内容及步骤 1. 有限长序列 2. 周期序列 3. 模拟周期信号 四.回答思考题 五.实验总结 一.实验目的 学习用 FFT 对连续信号和时域离散信 ...

  4. MATLAB中FFT的使用方法(频谱分析)

    原文地址:MATLAB中FFT的使用方法(频谱分析)作者:飞鸿 说明:以下资源来源于<数字信号处理的MATLAB实现>万永革主编 一.调用方法 X=FFT(x): X=FFT(x,N): ...

  5. 数字信号处理第三次试验:用FFT对信号作频谱分析

    数字信号处理第三次试验:用FFT对信号作频谱分析 前言 一.实验目的 二.实验原理与方法 三.实验环境 四.实验内容及步骤 五.实验结果截图(含分析) 六.思考题 前言 为了帮助同学们完成痛苦的实验课 ...

  6. MATLAB实现FFT及信号的谱分析

    一.实验目的 1.通过实验加深对 FFT 的理解,熟悉 FFT 程序.结构及编程方法. 2.熟练应用 FFT 对典型信号进行谱分析的方法. 3.了解应用 FFT 进行信号频域分析可能出现的问题以便在实 ...

  7. 用fft对信号进行频谱分析实验报告_示波器上的频域分析利器,Spectrum View测试分析...

    简介: [Spectrum View技术文章系列] 从基础篇开始,讲述利用示波器上的Spectrum View功能观测多通道信号频谱分析 正文: 示波器和频谱仪都是电子测试测量中必不可少的测试设备,分 ...

  8. 在matlab上利用fft进行信号频谱分析_使用示波器进行信号频谱分析(FFT)的设置教学...

    对信号中的频率分量进行分析是十分重要的,因为他们常常会在设计中引起噪声,一旦超出允许的公差,就可能进而导致器件发生故障功能失常.严重的还可能导致电压尖峰,损坏器件.如果我们在设计的时候没有进行正确的测 ...

  9. 用fft对信号进行频谱分析实验报告_FFT分析频谱无泄露的条件

    如果 表示被分析信号的模拟频率, 表示采样频率, 表示每个cycle的采样点数.则FFT分析频谱分辨率为 ,所以频谱分析无泄漏的条件为: 即: 化简可得: 所以对于一个 的信号,只要满足 为整数,即 ...

最新文章

  1. 用户通过WEB方式更改AD域帐户密码
  2. v3是c语言吗 yolo_YOLOv3
  3. 科研工作者的神器-zotero论文管理工具
  4. mysql 相关子查询使用【主表得数据需要扩展(统计数据依赖与其他表,但是与主表有关联)】...
  5. 深入理解css优先级
  6. java上传文件堆溢出_我的正则表达式导致Java中的堆栈溢出;我错过了什么?
  7. typecho支持html,[分享] Basic HTML - 一款极简的Typecho主题
  8. 【渝粤教育】国家开放大学2018年春季 0551-22T素描(二) 参考试题
  9. 中兴2018年上半年业绩惨不忍睹,押宝5G建设能否让其起死回生?
  10. 阿里云移动端播放器高级功能---直播时移 1
  11. VARCHART XGantt 甘特图用程序应该如何交付
  12. 机器视觉运动控制一体机应用|工件同心度检测
  13. 【juns项目】信用卡数据项目2-2:数据设计
  14. 数据挖掘技术-主键合并数据准备数据
  15. Keil(MDK)下用仿真器烧程序的同时烧写附加数据到SPI FLASH
  16. javaweb项目JS文件报错解决办法
  17. 高斯噪声和高斯白噪声相关介绍
  18. arm解锁 j-flash_J-Link固件烧录以及使用J-Flash向arm硬件板下载固件程序
  19. uniapp隐藏原生导航栏
  20. 短视频APP软件开发源码提供

热门文章

  1. 2011年成都信息工程学院第二季极客大挑战逆向第二题Crackwho破文
  2. 轮胎侧偏角、侧向力分析说明
  3. 谷歌地图与泰山龙脉论
  4. 从反向输出一个四位数由难到易引申到反向输出一个n位数
  5. HTML 如何获取输入框的值
  6. Python全功能测试框架pytest
  7. 使用mybatis plus时传入中文时出现乱码
  8. 工程提示Unfortunately you can‘t have non-Gradle Java modules and > Android-Gradle modules in one project
  9. 实习日记(5-18)Socket与MQTT
  10. R语言使用glmnet包的glmnet函数拟合lasso回归模型:使用cv.glmnet函数获取最佳lambda值、coef函数获取每个特征的系数以及截距