快速傅里叶变更fft的Matlab实现 实验报告
实验用MATLAB计算傅里叶变换
实验二 用MATLAB 计算傅立叶变换(2课时)一、实验目的1、掌握用MA TLAB 计算DTFT 及系统频率响应的方法。
2、掌握用MA TLAB 计算DFT 和IDFT 的方法。
3、掌握用DFT 计算圆周卷积和线性卷积的方法。
二、实验设备计算机一台,装有MATLAB 软件。
三、实验原理和基本操作1.用MA TLAB 计算DTFT对于序列x (n ),其离散时间傅立叶变换(DTFT )定义为:∑∞-∞=-=n n j e n x j X ωω)()( (1)序列的傅立叶变换(DTFT )在频域是连续的,并且以ω=2π为周期。
因此只需要知道jw X(e )的一个周期,即ω=[0,2π],或[-π,π]。
就可以分析序列的频谱。
用MA TLAB 计算DTFT ,必须在-π≤ω≤π范围内,把ω用很密的、长度很长的向量来近似,该向量中各个值可用下式表示: w=k*dw=k*K π2 (2) 其中:d ω=Kπ2 称为频率分辨率。
它表示把数字频率的范围2π均分成K 份后,每一份的大小,k 是表示频率序数的整数向量,简称为频序向量,它的取值可以有几种方法:通常在DTFT 中,频率取-π≤ω<л的范围,当K 为偶数时,取 k 12,,1,0,1,,12,2--+--=K K K 如果K 为奇数,则取 k 5.02,,1,0,1,,5.02--+-=K K 可以为奇偶两种情况综合出一个共同的确定频序向量k 的公式; k=12K -⎢⎥-⎢⎥⎣⎦ :12K -⎢⎥⎢⎥⎣⎦(3) 上式中⎢⎥⎣⎦表示向下取整。
在MA TLAB 中的向下取整函数为floor ,floor (x )的作用是把x 向下(向-∞方向)取整,所以与(3)式等价的MATLAB 语句为 k ))5.02(:)5.02((-+-=K K floor (4) 给定了输入序列(包括序列x 及其位置向量n ),又设定了频率分辨率d ω及频序向量k ,则DTFT 的计算式(1)可以用一个向量与矩阵相乘的运算来实现。
快速傅立叶变换FFT实验报告
快速傅立叶变换〔FFT〕算法试验一.试验目的1.加深对DFT 算法原理和根本性质的理解;2.生疏FFT 算法原理和FFT 子程序的应用;3.学习用FFT 对连续信号和时域信号进展谱分析的方法,了解可能消灭的分析误差及其缘由,以便在实际中正确应用FFT。
二.试验设备计算机,CCS 3.1 版软件,E300 试验箱,DSP 仿真器,导线三.根本原理1.离散傅立叶变换DFT 的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。
2.FFT 是DFT 的一种快速算法,将DFT 的N2 步运算削减为〔N/2〕logN 步,极大2的提高了运算的速度。
3.旋转因子的变化规律。
4.蝶形运算规律。
5.基2FFT 算法。
四.试验步骤1.E300 底板的开关SW4 的第1 位置ON,其余置OFF。
其余开关不用具体设置。
2.E300 板子上的SW7 开关的第1 位置OFF,其余位置ON3.阅读本试验所供给的样例子程序;4.运行CCS 软件,对样例程序进展跟踪,分析结果;记录必要的参数。
5.填写试验报告。
6.供给样例程序试验操作说明A.试验前预备用导线连接“Signal expansion Unit”中2 号孔接口“SIN”和“A/D 单元”的2 号孔接口“AD_IN0”。
〔试验承受的是外部的AD模块〕B.试验1.正确完成计算机、DSP 仿真器和试验箱的连接后,系统上电。
2.启动CCS3.1,Project/Open 翻开“algorithm\01_fft”子名目下“fft.pjt”工程文件;双击“fft.pjt”及“Source”可查看各源程序;加载“Debug\fft.out”;3.单击“Debug\Go main”进入到主程序,在主程序“flag=0;”处设置断点;4.单击“Debug \ Run”运行程序,或按F5 运行程序;程序将运行至断点处停顿;5.用View / Graph / Time/Frequency 翻开一个图形观看窗口;设置该观看图形窗口变量及参数;承受双踪观看在启始地址分别为px 和pz,长度为128,数值类型为16 位整型,p x:存放经A/D 转换后的输入信号;p z:对该信号进展FFT 变换的结果。
基于MATLAB的FFT算法实现
基于MATLAB的FFT算法实现摘要:本文研究了基于MATLAB的快速傅里叶变换(FFT)算法的实现。
傅里叶变换是一种重要的信号处理工具,广泛应用于图像处理、语音处理、通信系统等领域。
FFT是一种快速计算傅里叶变换的算法,可以大大提高傅里叶变换的计算效率。
本文详细介绍了FFT算法的原理和实现步骤,并通过MATLAB编程实现了FFT算法,并对不同信号和数据集进行了测试和分析。
实验结果表明,基于MATLAB的FFT算法可以有效地计算傅里叶变换,并且具有较高的精确性和稳定性。
关键词:MATLAB、FFT、傅里叶变换、计算效率、精确性、稳定性一、引言傅里叶变换是一种将时域信号转换到频域的重要工具,可以解析复杂的周期信号和非周期信号。
傅里叶变换在图像处理、语音处理、通信系统等领域有广泛的应用。
由于传统的傅里叶变换算法计算复杂度较高,耗时较长,因此需要一种快速计算傅里叶变换的算法。
快速傅里叶变换(FFT)算法是一种通过分治和递归的方法,将傅里叶变换计算的时间复杂度从O(N^2)降低到O(NlogN),大大提高了傅里叶变换的计算效率。
二、FFT算法原理FFT算法是一种递归的分治算法,它将长度为N的输入序列分为两个长度为N/2的子序列,然后通过对子序列进行FFT变换,再利用蝶形运算(butterfly operation)将结果合并,最终得到整个输入序列的傅里叶变换结果。
FFT算法的关键步骤包括序列分组、计算旋转因子、递归计算和合并。
通过这些步骤,可以将傅里叶变换的计算复杂度从O(N^2)降低到O(NlogN)。
三、基于MATLAB的FFT算法实现步骤1.读入输入序列,并将序列长度补齐为2的指数幂,方便进行分组计算。
2.进行FFT算法的递归计算。
首先将输入序列分为两个长度为N/2的子序列,然后对子序列进行递归计算,最终得到子序列的傅里叶变换结果。
3.计算旋转因子。
根据旋转因子的定义,计算出旋转因子的实部和虚部。
fft频谱分析实验报告
FFT频谱分析实验报告引言频谱分析是一种用于分析信号频率特征的方法,可应用于多个领域,如音频处理、图像处理、通信系统等。
本文将介绍FFT(快速傅里叶变换)频谱分析方法,并通过实验验证其有效性。
实验目的本实验旨在探索FFT频谱分析方法,了解其原理,并通过实验验证其在信号处理中的应用。
实验步骤1.准备实验材料–一台装有MATLAB软件的电脑–需要进行频谱分析的信号数据2.导入信号数据在MATLAB环境中,导入需要进行频谱分析的信号数据。
可以通过以下命令完成数据导入:data = importdata('signal.txt');这里假设信号数据保存在名为signal.txt的文件中。
3.对信号数据进行FFT变换利用MATLAB中的fft函数对信号数据进行FFT变换。
具体命令如下:fft_data = fft(data);这将得到信号数据的FFT变换结果。
4.计算频率谱通过对FFT变换结果的分析,可以计算信号的频率谱。
根据FFT变换的性质,频率谱可以通过计算FFT变换结果的模值得到:spectrum = abs(fft_data);这将得到信号的频率谱。
5.绘制频谱图利用MATLAB的plot函数,可以将频率谱绘制成图形。
命令如下:plot(spectrum);xlabel('频率');ylabel('幅值');title('频谱图');这将绘制出信号的频谱图。
6.分析频谱图通过观察频谱图,可以分析信号的频率特征,如频率成分的强度、主要频率等。
实验结果与讨论在完成以上步骤后,我们得到了信号的频谱图。
通过观察频谱图,我们可以分析信号的频率特征。
例如,我们可以确定信号中主要的频率成分,并通过频率成分的强度判断信号的特性。
在实验中,我们可以尝试使用不同的信号数据进行频谱分析,并观察结果的差异。
通过比较不同信号的频谱图,我们可以进一步了解信号的特性,并探索不同应用场景下的频谱分析方法。
FFT算法分析实验实验报告
FFT算法分析实验实验报告一、实验目的快速傅里叶变换(Fast Fourier Transform,FFT)是数字信号处理中一种非常重要的算法。
本次实验的目的在于深入理解 FFT 算法的基本原理、性能特点,并通过实际编程实现和实验数据分析,掌握 FFT 算法在频谱分析中的应用。
二、实验原理FFT 算法是离散傅里叶变换(Discrete Fourier Transform,DFT)的快速计算方法。
DFT 的定义为:对于长度为 N 的序列 x(n),其 DFT 为X(k) =∑n=0 到 N-1 x(n) e^(j 2π k n / N) ,其中 j 为虚数单位。
FFT 算法基于分治法的思想,将 N 点 DFT 分解为多个较小规模的DFT,从而大大减少了计算量。
常见的 FFT 算法有基 2 算法、基 4 算法等。
三、实验环境本次实验使用的编程语言为 Python,主要依赖 numpy 库来实现 FFT 计算和相关的数据处理。
四、实验步骤1、生成测试信号首先,生成一个包含不同频率成分的正弦波叠加信号,例如100Hz、200Hz 和 300Hz 的正弦波。
设定采样频率为 1000Hz,采样时间为 1 秒,以获取足够的采样点进行分析。
2、进行 FFT 计算使用 numpy 库中的 fft 函数对生成的测试信号进行 FFT 变换。
3、频谱分析计算 FFT 结果的幅度谱和相位谱。
通过幅度谱确定信号中各个频率成分的强度。
4、误差分析与理论上的频率成分进行对比,计算误差。
五、实验结果与分析1、幅度谱分析观察到在 100Hz、200Hz 和 300Hz 附近出现明显的峰值,对应于生成信号中的频率成分。
峰值的大小反映了相应频率成分的强度。
2、相位谱分析相位谱显示了各个频率成分的相位信息。
3、误差分析计算得到的频率与理论值相比,存在一定的误差,但在可接受范围内。
误差主要来源于采样过程中的量化误差以及 FFT 算法本身的近似处理。
快速傅里叶变换fft的Matlab实现 实验报告
一、实验目的1在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解;2熟悉并掌握按时间抽取FFT算法的程序;3了解应用FFT进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、栅栏效应等,以便在实际中正确应用FFT。
二、实验内容1仔细分析教材第六章‘时间抽取法FFT’的算法结构,编制出相应的用FFT 进行信号分析的C语言(或MATLAB语言)程序;用MATLAB语言编写的FFT源程序如下:%%输入数据f、N、T及是否补零clc;clear;f=input('输入信号频率f:');N=input('输入采样点数N:');T=input('输入采样间隔T:');C=input('信号是否补零(补零输入1,不补零输入0):');%补零则输入1,不补则输入0if(C==0)t=0:T:(N-1)*T;x=sin(2*pi*f*t);b=0;e lseb=input('输入补零的个数:');while(log2(N+b)~=fix(log2(N+b)))b=input('输入错误,请重新输入补零的个数:');endt=0:T:(N+b-1)*T;x=sin(2*pi*f*t).*(t<=(N-1)*T);end%%fft算法的实现A=bitrevorder(x);%将序列按二进制倒序N=N+b;M=log2(N);%M为蝶形算法的层数W=exp(-j*2*pi/N);for L=1:1:M%第L层蝶形算法B=2^L/2;%B为每层蝶形算法进行加减运算的两个数的间隔K=N/(2^L);%K为每层蝶形算法中独立模块的个数for k=0:1:K-1for J=0:1:B-1p=J*2^(M-L);%p是W的指数q=A(k*2^L+J+1);%用q来代替运算前面那个数A(k*2^L+J+1)=q+W^p*A(k*2^L+J+B+1);A(k*2^L+J+B+1)=q-W^p*A(k*2^L+J+B+1);endendend%%画模特性的频谱图z=abs(A);%取模z=z./max(z);%归一化hold onsubplot(2,1,1);stem(0:1:N-1,x,'DisplayName','z');title('时域信号');subplot(2,1,2);stem(0:1:N-1,z,'DisplayName','z');title('频谱图');figure(gcf)%画图2用FFT 程序计算有限长度正弦信号()sin(2),0*y t f t t N Tπ=≤<分别在以下情况下所得的DFT 结果并进行分析和讨论:a )信号频率f =50Hz ,采样点数N=32,采样间隔T=0.000625sb )信号频率f =50Hz ,采样点数N=32,采样间隔T=0.005sT=0.0046875sc)信号频率f=50Hz,采样点数N=32,采样间隔051015202530350510152025303505101520253035 e)信号频率f=50Hz,采样点数N=64,采样间隔T=0.000625sg)将c)信号后补32个0,做64点FFT三、实验分析DFT是对有限序列做傅里叶变换后在频域上进行采样,而相对应的时域以频谱上的采样频率的倒数进行周期拓展。
数字信号处理实验 matlab版 快速傅里叶变换(FFT)
实验14 快速傅里叶变换(FFT)(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word 格式会让很多部分格式错误,谢谢)XXXX 学号姓名处XXXX一、实验目的1、加深对双线性变换法设计IIR 数字滤波器基本方法的了解。
2、掌握用双线性变换法设计数字低通、高通、带通、带阻滤波器的方法。
3、了解MA TLAB 有关双线性变换法的子函数。
二、实验内容1、双线性变换法的基本知识2、用双线性变换法设计IIR 数字低通滤波器3、用双线性变换法设计IIR 数字高通滤波器4、用双线性变换法设计IIR 数字带通滤波器三、实验环境MA TLAB7.0四、实验原理1、实验涉及的MATLAB 子函数(1)fft功能:一维快速傅里叶变换(FFT)。
调用格式:)(x fft y =;利用FFT 算法计算矢量x 的离散傅里叶变换,当x 为矩阵时,y 为矩阵x每一列的FFT 。
当x 的长度为2的幂次方时,则fft 函数采用基2的FFT 算法,否则采用稍慢的混合基算法。
),(n x fft y =;采用n 点FFT 。
当x 的长度小于n 时,fft 函数在x 的尾部补零,以构成n点数据;当x 的长度大于n 时,fft 函数会截断序列x 。
当x 为矩阵时,fft 函数按类似的方式处理列长度。
(2)ifft功能:一维快速傅里叶逆变换(IFFT)。
调用格式:)(x ifft y =;用于计算矢量x 的IFFT 。
当x 为矩阵时,计算所得的y 为矩阵x 中每一列的IFFT 。
),(n x ifft y =;采用n 点IFFT 。
当length(x)<n 时,在x 中补零;当length(x)>n 时,将x 截断,使length(x)=n 。
(3)fftshift功能:对fft 的输出进行重新排列,将零频分量移到频谱的中心。
调用格式:)(x fftshift y =;对fft 的输出进行重新排列,将零频分量移到频谱的中心。
利用MATLAB编写FFT快速傅里叶变换
一、实验目的1.利用MATLAB 编写FFT 快速傅里叶变换。
2.比较编写的myfft 程序运算结果与MATLAB 中的FFT 的有无误差。
二、实验条件PC 机,MATLAB7.0三、实验原理1. FFT (快速傅里叶变换)原理:将一个N 点的计算分解为两个N/2点的计算,每个N/2点的计算再进一步分解为N/4点的计算,以此类推。
根据DFT 的定义式,将信号x[n]根据采样号n 分解为偶采样点和奇采样点。
设偶采样序列为y[n]=x[2n],奇采样序列为z[n]=x[2n+1]。
上式中的k N W -为旋转因子N k j e /2π-。
下式则为y[n]与z[n]的表达式:2.蝶形变换的原理:下图给出了蝶形变换的运算流图,可由两个N/2点的FFT(Y[k]和Z[k]得出N点FFT X[k])。
同理,每个N/2点的FFT可以由两个N/4点的FFT求得。
按这种方法,该过程可延迟后推到2点的FFT。
下图为N=8的分解过程。
图中最右边的为8个时域采样点的8点FFTX[k],由偶编号采样点的4点FFT和奇编号采样点的4点得到。
这4点偶编号又由偶编号的偶采样点的2点FFT和奇编号的偶采样点的2点FFT产生。
相同的4点奇编号也是如此。
依次往左都可以用相同的方法算出,最后由偶编号的奇采样点和奇编号的偶采样点的2点FFT算出。
图中没2点FFT成为蝶形,第一级需要每组一个蝶形的4组,第二级有每组两个蝶形的两组,最后一级需要一组4个蝶形。
四、实验内容1.定义函数disbutterfly ,程序根据FFT 的定义:]2[][][N n x n x n y ++=、n N W N n x n x n z -+-=])2[][(][,将序列x 分解为偶采样点y 和奇采样点z 。
function [y,z]=disbutterfly(x)N=length(x);n=0:N/2-1;w=exp(-2*1i*pi/N).^n;x1=x(n+1);x2=x(n+1+N/2);y=x1+x2;z=(x1-x2).*w;2.定义函数rader ,纠正输出序列的输出顺序。
“快速傅里叶变换的实现”实验报告
3
用户复数据输入
数据顺序颠倒 (remap()函数)
逐层蝶式运算
数据输出 ②IFFT_main.cpp (复数据 IFFT) 框图与①相同,略 ③FFT2_main.cpp (实数据 FFT)
设 实 序 列 为 x(n) 。 与 二 次 的 实 函 数 一 样 , 先 把 x(n) 分 离 为 奇 数 序 列
x1(n)(0 n N) 和 偶 数 序 列 x2 (n)(0 n N) 。 再 组 成 复数 序 列
y(n) x1(n) jx2 (n)(0 n N)
3 实验设备
安装了 VC、MATLAB 软件的 PC 机
4 实验原理
①如何在 matlab 上实现与 C 语言的混编? 由于本次实验中涉及到 C 语言与 matlab 进行数据交互的问题。如果按照
实验要求给出的方案来实现的话,无疑在测试中要进行频繁的文件读写才能 把数据在 matlab 和 C 语言之间传递。这样,测试过程缓慢并且容易出现人 为导致的错误。好在 matlab 为我们考虑到了这点,可以使用在 matlab 使用 mex 命令对 C 语言进行编译,编译完成之后,就可以直接在 matlab 命令行调 用 C 语言程序了,避免了 matlab 与 C 语言交互过程带来的种种不便。准确 来讲使用 mex 命令是把 C 语言编译成 matlab 能够识别的动态链接库 (.mexw64/.mexw32)。不过使用之前,用户需要解决两个问题:
第二个问题:matlab 与 C 语言是如何进行数据的传递的。 Matlab 传进 C 语言的数据是以数组的形式存在的。对于实数,可以利用
FFT算法(用matlab实现)
数字信号处理实验报告 实验二 FFT 算法的MATLAB 实现(一)实验目的:理解离散傅立叶变换时信号分析与处理的一种重要变换,特别是FFT 在数字信号处理中的高效率应用。
(二)实验原理:1、有限长序列x(n)的DFT 的概念和公式:⎪⎪⎩⎪⎪⎨⎧-≤≤=-≤≤=∑∑-=--=101010)(1)(10)()(N k kn N N n kn N N n W k x N n x N k W n x k x)/2(N j N eW π-=2、FFT 算法调用格式是 X= fft(x) 或 X=fft(x,N)对前者,若x 的长度是2的整数次幂,则按该长度实现x 的快速变换,否则,实现的是慢速的非2的整数次幂的变换;对后者,N 应为2的整数次幂,若x 的长度小于N ,则补零,若超过N ,则舍弃N 以后的数据。
Ifft 的调用格式与之相同。
(三)实验内容1、题一:若x(n)=cos(n*pi/6)是一个N=12的有限序列,利用MATLAB 计算它的DFT 并画出图形。
源程序: clc; N=12; n=0:N-1; k=0:N-1;xn=cos(n*pi/6); W=exp(-j*2*pi/N); kn=n'*kXk=xn*(W.^kn) stem(n,Xk); xlabel('k'); ylabel('Xk'); grid on ;也可用FFT 算法直接得出结果,程序如下: clc; N=12; n=0:N-1;xn=cos(n*pi/6);Xk=fft(xn,N); stem(n,Xk); xlabel('k'); ylabel('Xk'); grid on ;实验结果:24681012kX k分析实验结果:用DFT 和用FFT 对序列进行运算,最后得到的结果相同。
但用快速傅立叶变换的运算速度可以快很多。
2、题二:一被噪声污染的信号,很难看出它所包含的频率分量,如一个由50Hz 和120Hz 正弦信号构成的信号,受均值随机噪声的干扰,数据采样率为1000Hz ,通过FFT 来分析其信号频率成分,用MA TLAB 实现。
数字信号处理_快速傅里叶变换FFT实验报告
数字信号处理_快速傅里叶变换FFT实验报告快速傅里叶变换(FFT)实验报告1. 引言数字信号处理是一门研究如何对数字信号进行处理、分析和提取信息的学科。
傅里叶变换是数字信号处理中常用的一种方法,可以将信号从时域转换到频域。
而快速傅里叶变换(FFT)是一种高效的计算傅里叶变换的算法,广泛应用于信号处理、图象处理、通信等领域。
2. 实验目的本实验旨在通过编写程序实现快速傅里叶变换算法,并对不同信号进行频谱分析。
3. 实验原理快速傅里叶变换是一种基于分治策略的算法,通过将一个N点离散傅里叶变换(DFT)分解为多个较小规模的DFT,从而实现高效的计算。
具体步骤如下: - 如果N=1,直接计算DFT;- 如果N>1,将输入序列分为偶数和奇数两部份,分别计算两部份的DFT;- 将两部份的DFT合并为整体的DFT。
4. 实验步骤此处以C语言为例,给出实验的具体步骤:(1) 定义输入信号数组和输出频谱数组;(2) 实现快速傅里叶变换算法的函数,输入参数为输入信号数组和输出频谱数组;(3) 在主函数中调用快速傅里叶变换函数,得到输出频谱数组;(4) 对输出频谱数组进行可视化处理,如绘制频谱图。
5. 实验结果与分析为了验证快速傅里叶变换算法的正确性和有效性,我们设计了以下实验:(1) 生成一个正弦信号,频率为100Hz,采样频率为1000Hz,时长为1秒;(2) 对生成的正弦信号进行快速傅里叶变换,并绘制频谱图;(3) 生成一个方波信号,频率为200Hz,采样频率为1000Hz,时长为1秒;(4) 对生成的方波信号进行快速傅里叶变换,并绘制频谱图。
实验结果显示,对于正弦信号,频谱图中存在一个峰值,位于100Hz处,且幅度较大;对于方波信号,频谱图中存在多个峰值,分别位于200Hz的奇数倍处,且幅度较小。
这与我们的预期相符,说明快速傅里叶变换算法能够正确地提取信号的频谱信息。
6. 实验总结通过本次实验,我们成功实现了快速傅里叶变换算法,并对不同信号进行了频谱分析。
fft实验报告
fft实验报告傅里叶变换(Fast Fourier Transform, FFT)是一种重要的数学工具,广泛应用于信号处理、图像处理、通信系统等领域。
本文将从理论和实验两个方面,介绍FFT的原理、应用以及实验结果。
一、FFT的原理FFT是一种将时域信号转换为频域信号的算法,它基于傅里叶级数展开的思想。
傅里叶级数展开可以将一个周期信号表示为一系列正弦和余弦函数的叠加,而FFT则能够将非周期信号分解成一系列频率成分。
FFT的核心思想是将一个N点的离散信号变换为N/2个频率分量,其中前一半为正频率分量,后一半为负频率分量。
通过分别计算正频率和负频率的离散傅里叶变换(DFT),再利用对称性质进行合并,最终得到频域信号。
二、FFT的应用1. 信号处理:FFT在信号处理中有广泛应用,例如音频信号的频谱分析、滤波、降噪等。
通过将信号转换到频域,可以方便地分析信号的频率成分,从而实现各种信号处理算法。
2. 图像处理:FFT在图像处理中也有重要应用。
通过对图像进行二维FFT变换,可以将图像转换为频域表示,从而实现图像增强、去噪、压缩等操作。
例如,图像的频域滤波可以有效地去除图像中的噪声,提高图像的质量。
3. 通信系统:FFT在通信系统中也扮演着重要角色。
例如,在OFDM(正交频分复用)系统中,FFT用于将多个子载波的频域信号转换为时域信号进行传输。
这种技术能够提高信号的传输效率和抗干扰能力。
三、FFT实验结果为了验证FFT算法的正确性和效果,我们进行了一系列实验。
首先,我们使用MATLAB编程实现了FFT算法,并将其应用于音频信号处理。
通过对一段音频信号进行FFT变换,我们成功地获得了该信号的频谱图,并观察到不同频率成分的存在。
接下来,我们将FFT算法应用于图像处理。
我们选择了一张包含噪声的图像,并对其进行FFT变换。
通过对频域图像进行滤波操作,我们成功去除了图像中的噪声,并获得了清晰的图像。
最后,我们将FFT算法应用于通信系统中的OFDM技术。
快速傅里叶变换实验报告
快速傅里叶变换实验报告班级:姓名:学号:快速傅里叶变换一.实验目的1.在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解;2.熟悉并掌握按时间抽取FFT 算法的程序;3.了解应用FFT 进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、栅栏效应等,以便在实际中正确应用FFT 。
二.实验内容1.仔细分析教材第六章‘时间抽取法FFT ’的算法结构,编制出相应的用FFT 进行信号分析的C 语言(或MATLAB 语言)程序;2.用FFT 程序分析正弦信号()sin(2)[()(*)],(0)1y t f t u t u t N T t u π=---∞<<+∞=设分别在以下情况进行分析并讨论所得的结果:a ) 信号频率f =50Hz ,采样点数N=32,采样间隔T=0.000625sb ) 信号频率f =50Hz ,采样点数N=32,采样间隔T=0.005sc ) 信号频率f =50Hz ,采样点数N=32,采样间隔T=0.0046875sd ) 信号频率f =50Hz ,采样点数N=32,采样间隔T=0.004se ) 信号频率f =50Hz ,采样点数N=64,采样间隔T=0.000625sf ) 信号频率f =250Hz ,采样点数N=32,采样间隔T=0.005sg ) 将c ) 信号后补32个0,做64点FFT三.实验要求1.记录下实验内容中各种情况下的X (k)值,做出频谱图并深入讨论结果,说明参数的变化对信号频谱产生哪些影响。
频谱只做模特性,模的最大值=1,全部归一化;2.打印出用C 语言(或MATLAB 语言)编写的FFT 源程序,并且在每一小段处加上详细的注释说明;3.用C 语言(或MATLAB 语言)编写FFT 程序时,要求采用人机界面形式:N , T , f 变量均由键盘输入,补零或不补零要求设置一开关来选择。
四.实验分析对于本实验进行快速傅里叶变换,依次需要对信号进行采样,补零(要求补零时),码位倒置,蝶形运算,归一化处理并作图。
数字信号处理实验二快速傅里叶变换(FFT)及其应用报告
实验二 快速傅里叶变换(FFT)及其应用一、 实验目的(1) 在理论学习的基础上,通过本实验,加深对FFT 的理解,熟悉MATLAB 中的有关函数。
(2) 应用FFT 对典型信号进行频谱分析。
(3) 了解应用FFT 进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT 。
(4) 应用FFT 实现序列的线性卷积。
二、 实验内容实验中用到的信号序列 a) 高斯序列2()015()0n p q a en x n --⎧⎪≤≤=⎨⎪⎩其他b) 衰减正弦序列sin(2)015()0an b e fn n x n π-⎧≤≤=⎨⎩其他c) 三角波序列03()8470c nn x n n n ≤≤⎧⎪=-≤≤⎨⎪⎩其他d) 反三角波序列403()4470d n n x n n n -≤≤⎧⎪=-≤≤⎨⎪⎩其他(1) 观察高斯序列的时域和幅频特性,固定信号()a x n 中参数p =8,改变q 的值,使q 分别等于2,4,8,观察它们的时域和幅频特性,了解当q 取不同值时,对信号序列的时域幅频特性的影响;固定q =8,改变p ,使p 分别等于8,13,14,观察参数p 变化对信号序列的时域及幅频特性的影响,观察p 等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。
实验程序:function gauss(p,q) n=0:1:15; N=length(n);xa=exp(-(n-p).^2/q); M=10000;w=2*pi/M*(0:1:M-1); Xa=zeros(1,M); for k=1:MXa(k)=sum(xa*(exp(-j*w(k)*(0:N-1)'))); endsubplot(2,1,1); stem(n,xa);xlabel('n'),ylabel('x_a(n)') subplot(2,1,2); plot(w,abs(Xa))xlabel('\omega'),ylabel('幅度谱') 实验结果: P=8,q=2P=8,q=4nx a(n )01234567123幅度谱P=8,q=8p=13,q=8nx a(n )123456701234ω幅度谱nx a(n)01234567246ω幅度谱p=14,q=8(3) 观察三角波和反三角波序列的时域和幅频特性,用N =8点FFT 分析信号序列()c x n 和()d x n 的幅频特性,观察两者的序列形状和频谱曲线有什么异同?绘出两序列及其幅频特性nx a(n )01234567246ω幅度谱nx a(n )123456701234ω幅度谱曲线。
matlab fft谱分析实验报告
Matlab FFT 谱分析实验报告介绍本实验报告旨在通过使用Matlab进行FFT(快速傅里叶变换)谱分析,详细介绍该方法的步骤和应用。
FFT是一种常用的信号处理技术,可将时域信号转换为频域信号,并提供了对信号频谱特征进行分析的能力。
实验步骤以下是进行FFT谱分析的步骤:1. 导入信号数据首先,我们需要将待分析的信号数据导入Matlab中。
可以使用load函数加载存储信号数据的文件,或者直接在脚本中定义信号数据。
2. 对信号数据进行预处理在进行FFT谱分析之前,通常需要对信号数据进行预处理。
这可能包括去除噪声、滤波等操作。
在本实验中,我们将假设信号数据已经经过了必要的预处理步骤。
3. 执行FFT变换使用fft函数对信号数据执行FFT变换。
该函数将信号从时域转换为频域,并返回频谱数据。
4. 计算频谱幅度通过对FFT变换结果应用幅度函数,可以计算出信号在不同频率下的幅度。
这将揭示信号中包含的主要频率分量。
5. 绘制频谱图通过使用Matlab的绘图功能,可以将频谱数据可视化为频谱图。
频谱图可以帮助我们更好地理解信号的频谱分布情况。
6. 分析结果根据频谱图,我们可以观察信号的主要频率成分以及它们的幅度。
这有助于我们了解信号的频域特征,并可以用于识别信号中的噪声或其他异常。
实验应用FFT谱分析在许多领域中都有广泛的应用。
以下是一些常见的应用领域:1. 信号处理FFT谱分析可用于处理和分析各种类型的信号,例如音频信号、生物医学信号和电力信号等。
通过分析信号的频谱特征,我们可以提取出信号中的重要信息。
2. 通信系统在通信系统中,FFT谱分析可以用于频谱分配、频谱监测和信号调制等方面。
通过分析信号的频谱特征,我们可以更好地设计和优化通信系统。
3. 振动分析FFT谱分析可用于振动分析领域,用于分析和诊断机械系统的振动特征。
通过分析振动信号的频谱,可以检测到机械系统中的故障和异常。
4. 音频处理在音频处理中,FFT谱分析可用于音频信号的频谱分析、音频合成和音频特征提取等方面。
MAtlab-傅里叶变换-实验报告(最新-编写)
MAtlab-傅里叶变换-实验报告(最新-编写)一、实验目的1. 了解傅里叶变换的基本概念及其在信号处理中的应用;2. 掌握使用Matlab软件进行傅里叶变换的方法;3. 通过实验掌握傅里叶变换的计算与图像分析方法。
二、实验原理1. 傅里叶级数傅里叶级数是一类振幅、频率和相位相同的正弦(余弦)函数构成某一周期函数的和。
若函数f(t)可以表示为周期2π的函数,则有:f(t) = a0 + ∑[an*cos(nwt) + bn*sin(nwt)] (1)其中,a0、an、bn为常数,w=2π/T为角频率,T为周期。
傅里叶级数引入相位角,使得函数形态可以更加丰富,而且描述更加直观。
假设n=0时,a0是函数f(t)的常数项,且an、bn分别表示f(t)的奇、偶对称部分的振幅,即:a0 = (1/2π)∫[f(t)]dt,an = (1/π)∫[f(t)*cos(nwt)]dt,bn =(1/π)∫[f(t)*s in(nwt)]dt式中,*为乘积,∫为积分。
在时域中,傅里叶分析用来分析周期性信号的性质。
但是,在实际应用中,很少有真正的周期性信号,因此需要将傅里叶分析推广到非周期性信号上,即傅里叶变换。
原信号可以表示为一个函数f(t),其傅里叶变换可以表示为:F(w) = ∫[f(t)*e^(-jwt)]dt其中,j为虚数单位,w为角频率。
傅里叶变换将信号从时域变换到频域,通常使用复数表示幅值与相位。
同时,傅里叶变换也具有很高的线性性质。
即,若有两个函数f1(t)和f2(t),其傅里叶变换分别是F1(w)和F2(w),则下列变换同样成立:a1*f1(t) + a2*f2(t)的傅里叶变换为a1*F1(w) + a2*F2(w)其中,a1、a2为常数。
最后,傅里叶变换的性质包括线性、平移、频移、反褶和自相关性等,这些性质都对信号处理和分析具有实际意义。
三、实验内容本实验主要分为两个部分:1. 计算周期波形的傅里叶级数并绘制其频谱图和振幅谱图。
快速傅立叶变换FFT及其应用实验报告
实验一 离散时间系统的时域分析一、实验目的1. 运用MA TLAB 仿真一些简单的离散时间系统,并研究它们的时域特性。
2. 运用MA TLAB 中的卷积运算计算系统的输出序列,加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。
二、实验原理离散时间系统其输入、输出关系可用以下差分方程描述:∑=∑=-=-M k k N k k k n x p k n y d 00][][当输入信号为冲激信号时,系统的输出记为系统单位冲激响应 ][][n h n →δ,则系统响应为如下的卷积计算式:∑∞-∞=-=*=m m n h m x n h n x n y ][][][][][ 当h[n]是有限长度的(n :[0,M])时,称系统为FIR 系统;反之,称系统为IIR 系统。
在MA TLAB 中,可以用函数y=Filter(p,d,x) 求解差分方程,也可以用函数 y=Conv(x,h)计算卷积。
例1clf;n=0:40;a=1;b=2;x1= 0.1*n;x2=sin(2*pi*n);x=a*x1+b*x2;num=[1, 0.5,3];den=[2 -3 0.1];ic=[0 0]; %设置零初始条件y1=filter(num,den,x1,ic); %计算输入为x1(n)时的输出y1(n)y2=filter(num,den,x2,ic); %计算输入为x2(n)时的输出y2(n)y=filter(num,den,x,ic); %计算输入为x (n)时的输出y(n)yt= a*y1+b*y2;%画出输出信号subplot(2,1,1)stem(n,y);ylabel(‘振幅’);title(‘加权输入a*x1+b*x2的输出’);subplot(2,1,2)stem(n,yt);ylabel(‘振幅’);title(‘加权输出a*y1+b*y2’);(一)、线性和非线性系统对线性离散时间系统,若)(1n y 和)(2n y 分别是输入序列)(1n x 和)(2n x 的响应,则输入)()()(21n bx n ax n x +=的输出响应为)()()(21n by n ay n y +=,即符合叠加性,其中对任意常量a 和b 以及任意输入)(1n x 和)(2n x 都成立,否则为非线性系统。
快速傅里叶变换实验报告
快速傅里叶变换实验报告机械34班 攀 2013010558一、 基本信号(函数)的FFT 变换1. 000()sin()sin 2cos36x t t t t πωωω=+++ 1) 采样频率08s f f =,截断长度N=16;取02ωπ=rad/s ,则0f =1Hz ,s f =8Hz ,频率分辨率f ∆=s f f N∆==0.5Hz 。
最高频率c f =30f =3Hz ,s f >2c f ,故满足采样定理,不会发生混叠现象。
截断长度02T T =,整周期截取,不会发生栅栏效应。
理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。
频谱图如下:幅值误差0A ∆=,相位误差0ϕ∆=。
2) 采样频率08s f f =,截断长度N=32;取02ωπ=rad/s ,则0f =1Hz ,s f =8Hz ,频率分辨率f ∆=s f f N∆==0.25Hz 。
最高频率c f =30f =3Hz ,s f >2c f ,故满足采样定理,不会发生混叠现象。
截断长度04T T =,整周期截取,不会发生栅栏效应。
理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。
频谱图如下:幅值误差0A ∆=,相位误差0ϕ∆=。
2. 00()sin()sin116x t t t πωω=++ 1) 采样频率08s f f =,截断长度N=16;取02ωπ=rad/s ,则0f =1Hz ,s f =8Hz ,频率分辨率f ∆=s f f N∆==0.5Hz 。
最高频率c f =110f =11Hz ,s f <2c f ,故不满足采样定理,会发生混叠现象。
截断长度02T T =,整周期截取,不会发生栅栏效应。
理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。
频谱图:由上图可以看出,并未体现出110f 的成分,说明波形出现混叠失真。
MAtlab-傅里叶变换-实验报告(同名21543)
陕西科技大学实验报告班级信工142 学号22 姓名何岩实验组别实验日期___________ 室温_______________ 报告日期__________________ 成绩报告内容:(目的和要求,原理,步骤,数据,计算,小结等)1.求信号的离散时间傅立叶变换并分析其周期性和对称性;给定正弦信号x(t)=2*cos(2*pi*10*t),fs=100HZ, 求其DTFT (a)代码:f=10;T=1/f;w=-10:0.2:10;t1=0:0.0001:1;t2=0:0.01:1;n1=-2; n2=8; n0=0; n=n 1:0.01: n2;x5=[ n>=0.01];x1=2*cos(2*f*pi*t1);x2=2*cos(2*f*pi*t2);x3=(exp(-j)4(t2'*w));x4=x2*x3;subplot(2,2,1);plot(t1,x1);axis([0 1 1.1*mi n(x2) 1.1*max(x2)]);xlabel('x( n)');ylabel('x( n)');title('原信号x1');xlabel('t');ylabel('x1');subplot(2,2,3);stem(t2,x2);axis([0 1 1.1*mi n(x2) 1.1*max(x2)]);title(' 原信号采样结果x2');xlabel('t');ylabel('x2');subplot(2,2,2);stem( n, x5);axis([0 1 1.1*mi n(x5) 1.1*max(x5)]);xlabel(' n');ylabel('x2');title(' 采样函数x2');subplot(2,2,4);stem(t2,x4);axis([0 1 -0.2+1.1*mi n(x4) 1.1*max(x4)]);xlabel('t');ylabel('x4');title('DTFT 结果x4');(b)结果:2.用以下两个有限长序列来验证DTFT勺线性、卷积和共轭特性; x1( n)=[1 2 3 4 5 6 7 8 9 10 11 12];x2( n)=R 10( n)⑴线性:(a)代码:w=li nspace(-8,8,10000);nx仁[0:11]; nx2=[0:9];x1=[1 2 3 4 5 6 7 8 9 10 11 12];x2=[1 1 1 1 1 1 1 1 1 1];x3=[x2,zeros(1,(le ngth(x1)-le ngth(x2)))];x4=2*x1+3*x3;X1=x1*exp(-j* nx1'*w);% 频率特性X3=x3*exp(-j* nx1'*w);% 频率特性X4=x4*exp(-j* nx1'*w);% 频率特性subplot(5,3,1),stem( nx1,x1),axis([-1,13,0,15]);title('x1').n DTFT结果川原信号0 05 1眉信寻采率结臭心ylabel('x (n)');subplot(5,3,2),stem( nx2,x2),axis([-1,13,0,5]);title('x2');subplot(5,3,3),stem( nx1,x4),axis([-1,13,0,26]);title('x4=2*x1+3*x 3');subplot(5,3,4),plot(w,abs(X1)); ylabel(' 幅度') subplot(5,3,7),plot(w,a ngle(X1));ylabel(' 相位') subplot(5,3,10),plot(w,real(X1));ylabel(' 实部') subplot(5,3,13),plot(w,imag(X1)); ylabel(' 虚部') subplot(5,3,5),plot(w,abs(X3)); subplot(5,3,8),plot(w,a ngle(X3)); subplot(5,3,11),plot(w,real(X3)); subplot(5,3,14),plot(w,imag(X3)); subplot(5,3,6),plot(w,abs(X4)); subplot(5,3,9),plot(w,a ngle(X4)); subplot(5,3,12),plot(w,real(X4));subplot(5,3,15),plot(w,imag(X4));(b)结果:⑵卷积:(a )代码:nx1= 0:11; nx2=0:9; nx3=0:20;w=li nspace(-8,8,40); %w=[-8,8]分 10000 份x1=[1 2 3 4 5 6 7 8 9 10 11 12]; x2=[1 1 1 1 1 1 1 1 1 1]; x3=conv(x1,x2);% x1 卷积 x2x4=x1*exp(-j*nx1'*w);% x1 频率特性 x5=x2*exp(-j* nx2'*w);% x2 频率特性 x6=x3*exp(-j*nx3'*w);% x1x7=x4.*x5;卷积x2频率特性subplot(2,2,1),stem( nx1,x1),axis([-1,15,0,15]),title('x1'); subplot(2,2,2),stem( nx2,x2),axis([-1,15,0,5]),title('x2'); subplot(2,1,2),stem(nx3,x3),axis([-1,25,0,80]);title('x1卷积 x2 结xl0 5 10 15l DC 0一叫0 101DCi ----- * ------ n■1Q 0 10^JUQ-"w50 10E■-10 Tin □1U0 ©zZ1010 10果x3');figure,subplot(2,2,1),stem(x4,'filled'),title('x1 的DTFT吉果x4');subplot(2,2,2),stem(x5,'filled'),title('x2 的DTFT吉果x5');subplot(2,2,3),stem(x6,'filled'),title('x3 的DTFT吉果x6');subplot(2,2,4),stem(x7,'filled'),title('x4 的DTFT吉果x7'); figure,subplot(3,2,1),stem(w,abs(x6)). ylabel(' 幅度'),title('x1积x2 的DTFT');subplot(4,2,3),stem(w,a ngle(x6)),ylabel(' 相位')subplot(4,2,5),stem(w,real(x6)),ylabel(' 实部')subplot(4,2,7),stem(w,imag(x6)),ylabel(' 虚部')subplot(4,2,2),stem(w,abs(x7)), title('x1 与x2 的DTFT的乘积');subplot(4,2,4),stem(w,a ngle(x7));subplot(4,2,6),stem(w,real(x7));subplot(4,2,8),stem(w,imag(x7));(b)结果:*1巷视说箔畢內10J5330-100泊的(JTFT结畀汕□10 2 口3Q 4Q⑶共轭:(a )代码:xln=[1 2 3 4 5 6 7 8 9 10 11 12]; w=-10:10;N1= le ngth(x1 n); n1=0:N1-1; x1=real(x1 n); x2=imag(x1 n); x2n=x1-j*x2;X 仁 x2 n*(exp(-j)4( n1'*w)); X2=x1 n*(exp(j)4( n1'*w)); x3=real(X2); x4=imag(X2); X2=x3-j*x4;figure,subplot(211);stem(w,X1,'.');title('x1 n 共轭的 DTFT');subplot(212);stem(w,X2,'.');title('x1 n的 DTFT 取共轭且反折');的「JFTH1三汀的「TFT 笊乘祀(b)结果:-10 -B -S3.求LTI系统的频率响应给定系统H( Z) =B (Z) /A (Z), A=[0.98777 -0.31183 0.0256] B=[0.98997 0.989 0.98997],求系统的幅频响应和相频响应。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的1在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解;2熟悉并掌握按时间抽取FFT算法的程序;3了解应用FFT进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、栅栏效应等,以便在实际中正确应用FFT。
二、实验内容1仔细分析教材第六章‘时间抽取法FFT ’的算法结构,编制出相应的用FFT 进行信号分析的C语言(或MATLAB 语言)程序;用MATLAB语言编写的FFT源程序如下:%% 输入数据f、N、T及是否补零clc;clear;f=input('输入信号频率f:');N=input('输入采样点数N:');T=input('输入采样间隔T:');C=input('信号是否补零(补零输入1,不补零输入0):'); %补零则输入1,不补则输入0if(C==0)t=0:T:(N-1)*T;x=sin(2*pi*f*t);b=0;e lseb=input('输入补零的个数:');while(log2(N+b)~=fix(log2(N+b)))b=input('输入错误,请重新输入补零的个数:');endt=0:T:(N+b-1)*T;x=sin(2*pi*f*t).*(t<=(N-1)*T);end%% fft算法的实现A=bitrevorder(x); % 将序列按二进制倒序N=N+b;M=log2(N); % M为蝶形算法的层数W=exp(-j*2*pi/N);for L=1:1:M %第L层蝶形算法B=2^L/2; % B为每层蝶形算法进行加减运算的两个数的间隔K=N/(2^L); % K为每层蝶形算法中独立模块的个数for k=0:1:K-1for J=0:1:B-1p=J*2^(M-L); % p 是W 的指数 q=A(k*2^L+J+1); % 用q 来代替运算前面那个数 A (k*2^L+J+1)=q+W^p*A(k*2^L+J+B+1); A(k*2^L+J+B+1)=q-W^p*A(k*2^L+J+B+1); end end end%% 画模特性的频谱图z =abs(A); % 取模z=z./max(z); %归一化hold onsubplot(2,1,1);stem(0:1:N-1,x,'DisplayName','z');title('时域信号');subplot(2,1,2);stem(0:1:N-1,z,'DisplayName','z');title('频谱图');figure(gcf) %画图2用FFT 程序计算有限长度正弦信号()sin(2),0*y t f t t N Tπ=≤<分别在以下情况下所得的DFT 结果并进行分析和讨论:a )信号频率f =50Hz ,采样点数N=32,采样间隔T=0.000625sT=0.005sb)信号频率f=50Hz,采样点数N=32,采样间隔c)信号频率f=50Hz,采样点数N=32,采样间隔T=0.0046875sd)信号频率f=50Hz,采样点数N=32,采样间隔T=0.004se)信号频率f=50Hz,采样点数N=64,采样间隔T=0.000625sf)信号频率f=250Hz,采样点数N=32,采样间隔T=0.005sg)将c)信号后补32个0,做64点FFT三、实验分析DFT是对有限序列做傅里叶变换后在频域上进行采样,而相对应的时域以频谱上的采样频率的倒数进行周期拓展。
而在此题中,题中给出时域上的连续信号,对该连续信号进行加窗采样后得到有限序列,要求对该有限序列求DFT。
所以整个步骤为:对时域加窗,则相对应的频域与窗函数的傅里叶变换即sinc函数相卷积;再对时域采样,则对应的频域以时域采样频率的倒数进行周期性拓展;再将时域以窗长为周期进行周期性拓展,对应的频域以该周期的倒数进行采样,即得所求DFT。
a)信号频率f=50Hz,采样点数N=32,采样间隔T=0.000625s。
Sin函数信号对应的频谱图为在窗长,对应的sinc函数主瓣宽,其余波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。
在频域上采32个点,则对应每个点之间的间距为,(对应时域以0.02s进行周期性拓展,不予考虑)。
此时我们可以发现除了在f=50Hz(对应为第1个点)上采到的点幅值为sinc函数的最大值外,其他频率上采到的点刚好对应sinc函数的波节处,即此时采到的值为0。
又因为DFT满足共轭对称,所以可得图如上。
b)信号频率f=50Hz,采样点数N=32,采样间隔T=0.005s。
与a相比,采样间隔T不同,所以窗长,为a中窗长的8倍,所以窗长在频域上对应的sinc函数主瓣宽及波节与波节间距都为a中的即,两信号相卷,将sinc函数平移到;在时域以进行采样,即频域以进行周期性拓展。
在频域上采32个点,则对应每个点之间的间距为。
此时我们可以发现除了在f=50Hz上采到的点幅值为sinc函数的最大值外,其他频率上采到的点刚好对应sinc函数的波节处,即采到的值为0,而f=50Hz=8*6.25Hz,则第8个点为1;又因为DFT满足共轭对称,所以可得图如上。
c)信号频率f=50Hz,采样点数N=32,采样间隔T=0.0046875s。
Sin函数信号对应的频谱图为在窗长,对应的sinc函数主瓣宽,其余波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。
在频域上采32个点,则对应每个点之间的间距为,与波节间距相等。
但可以发现f=50Hz对应第7.5个点,而所求必须采到整数点上,所以采出来的点即没有最大值,也不存在0点。
又因为DFT满足共轭对称,所以可得图如上。
d)信号频率f=50Hz,采样点数N=32,采样间隔T=0.004s。
Sin函数信号对应频谱图为在窗长,对应的sinc函数主瓣宽,波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。
在频域上采32个点,则对应每个点之间的间距为,与波节间距相等。
但可以发现f=50Hz对应第6.4个点,而所求必须采到整数点上,所以采出来的点即没有最大值,也不存在0点。
又因为DFT满足共轭对称,所以可得图如上。
e)信号频率f=50Hz,采样点数N=64,采样间隔T=0.000625s。
Sin函数信号对应的频谱图为在窗长,对应的sinc函数主瓣宽,其余波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。
在频域上采64个点,则对应每个点之间的间距为。
此时我们可以发现除了在f=50Hz(对应为第2个点)上采到的点幅值为sinc函数的最大值外,其他频率上采到的点刚好对应sinc函数的波节处,即此时采到的值为0。
又因为DFT满足共轭对称,所以可得图如上。
f)信号频率f=250Hz,采样点数N=32,采样间隔T=0.005s。
与a相比,采样间隔T不同,所以窗长,为a中窗长的8倍,所以窗长在频域上对应的sinc函数主瓣宽及波节与波节间距都为a中的即,两信号相卷,将sinc函数平移到;在时域以进行采样,即频域以进行周期性拓展,又因为,所以相当于将sinc函数平移到。
在频域上采32个点,则对应每个点之间的间距为。
此时我们可以发现除了在f=50Hz上采到的点幅值为sinc函数的最大值外,其他频率上采到的点刚好对应sinc函数的波节处,即采到的值为0,而f=50Hz=8*6.25Hz,则第8个点为1;又因为DFT满足共轭对称,所以可得图如上。
与b比较易得两图所得结果相同。
g)将c信号后补32个0,做64点FFT。
Sin函数信号对应的频谱图为在窗长,对应的sinc函数主瓣宽,其余波节与波节间距,两信号在频域上相卷,即将sinc函数平移;在时域以进行采样,即频域以进行周期性拓展。
在频域上采64个点,则对应每个点之间的间距为。
可以发现f=50Hz对应第15个点,并且每个波节刚好被采到。
又因为DFT满足共轭对称,所以可得图如上。
与c信号相比较易发现刚好在c信号的每两点的中间多采一点。
小结:影响DFT结果的参数有信号频率f,采样点数N,采样间隔T,是否补零。
信号频率f:由b)和f)比较得,f影响到sinc函数做卷积后的位置,而这这两个信号中的频率差恰好等于时域采样频率,又在频域上以为周期做拓展,所以得到的DFT结果一样。
采样点数N:由a)和e)比较得,频谱上虽然采样更密,但同时频谱也被压缩,所以采样点数N并不产生影响。
采样间隔T:由a)、b)、c)、d)比较得,采样间隔T与N一起决定了窗的长度,与f一起决定了频谱上采样点的位置,是影响频谱图像的主要因素。
补零:由c)和g)比较得,补零对应在频谱上采样密度增加一倍,使频谱图更加清晰。
如果补零后的总点数是原采样点数的倍,则频谱上采样的密度为原来的倍。
四、实验总结这次实验让我对fft算法有了详细的掌握,能够熟练地用fft算法求解DFT。
除此之外,对DFT的物理意义有了更加深入的了解,掌握了求解DFT的详细过程,并对影响DFT的几种因素进行了分析,对栅栏效应、频谱分辨率、泄露效应及各种参数的选择有了进一步的了解。
总而言之,这次实验编程部分还算比较容易,而因为对DFT的原理不是很熟练,所以觉得对各种参数的分析比较难,但在老师和同学们的帮助下最后还是掌握了这部分知识,也是这种感觉让我很期待下一次的实验。