MATLAB实验傅里叶分析
离散傅立叶变换DFT实验报告
实验一 离散时间系统的时域分析
一、实验目的
1. 运用MATLAB 仿真一些简单的离散时间系统,并研究它们的时域特性。
2. 运用MATLAB 中的卷积运算计算系统的输出序列,加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。
二、实验原理
离散时间系统其输入、输出关系可用以下差分方程描述:
∑=∑=-=-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)计算卷积。
例1
clf;
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;
MATLAB实验二傅里叶分析与应用
实验二傅里叶分析及应用
一、实验目的
(一)掌握使用Matlab进行周期信号傅里叶级数展开和频谱分析
1、学会使用Matlab分析傅里叶级数展开,深入理解傅里叶级数的物理含义
2、学会使用Matlab分析周期信号的频谱特性
(二)掌握使用Matlab求解信号的傅里叶变换并分析傅里叶变换的性质
1、学会运用Matlab求连续时间信号的傅里叶变换
2、学会运用Matlab求连续时间信号的频谱图
3、学会运用Matlab分析连续时间信号的傅里叶变换的性质
(三)掌握使用Matlab完成信号抽样并验证抽样定理
1、学会运用MATLAB完成信号抽样以及对抽样信号的频谱进行分析
2、学会运用MATLAB改变抽样时间间隔,观察抽样后信号的频谱变化
3、学会运用MATLAB对抽样后的信号进行重建
二、实验条件
Win7系统,MATLAB R2015a
三、实验内容
1、分别利用Matlab符号运算求解法和数值计算法求下图所示信号的FT,并画出其频谱图(包括幅度谱和相位谱)[注:图中时间单位为:毫秒(ms)]。
符号运算法
数值运算法
012
3
4
5
t
(20 π ex p(-3 t) heaviside(t) - 8 π ex p(-5 t) heaviside(t))/(2 π)
2、试用Matlab 命令求的傅里叶反变换,并绘出其时域信号图。
两个单边指数脉冲的叠加
3、已知门函数自身卷积为三角波信号,试用Matlab 命令验证FT 的时域卷积定理。
Code :
syms t ; fw =
sym('10/(3+i*w)-4/(5+i*w)');
数字信号处理实验 matlab版 离散傅里叶级数(DFS)
实验11 离散傅里叶级数(DFS)
(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word格式会让很多部分格式错误,谢谢)
XXXX学号姓名处XXXX
一、实验目的
1、加深对离散周期序列傅里叶级数(DFS)基本概念的理解。
2、掌握用MA TLAB语言求解周期序列傅里叶级数变换和逆变换的方法。
3、观察离散周期序列的重复周期数对频谱特性的影响。
4、了解离散序列的周期卷积及其线性卷积的区别。
二、实验内容
1、周期序列的离散傅里叶级数。
2、周期序列的傅里叶级数变换和逆变换。
3、离散傅里叶变换和逆变换的通用子程序。
4、周期重复次数对序列频谱的影响。
5、周期序列的卷积和。
三、实验环境
MA TLAB7.0
四、实验原理
用matlab进行程序设计,利用matlab绘图十分方便,它既可以绘制各种图形,包括二维图形和三位图形,还可以对图像进行装饰和控制。
1、周期序列的离散傅里叶级数
(1)连续性周期信号的傅里叶级数对应的第k次谐波分量的系数为无穷多。而周期为N 的周期序列,其离散傅里叶级数谐波分量的系数只有N个是独立的。
(2)周期序列的频谱也是一个以N为周期的周期序列。
2、周期序列的傅里叶级数变换和逆变换
例11-1已知一个周期性矩形序列的脉冲宽度占整个周期的1/4,一个周期的采样点数为16点,显示3个周期的信号序列波形。要求:
(1)用傅里叶级数求信号的幅度频谱和相位频谱。
(2)求傅里叶级数逆变换的图形,与原信号图形进行比较。
解MA TLAB程序如下:
MATLAB实验傅里叶分析
实验七 傅里叶变换
一、实验目的
傅里叶变换是通信系统、图像处理、数字信号处理以及物理学等领域内的一种重要的数学分析工具。通过傅里叶变换技术可以将时域上的波形分 布变换为频域上的分布,从而获得信号的频谱特性。MA TLAB 提供了专门的函数fft 、ifft 、fft2(即2维快速傅里叶变换)、ifft2以及fftshift 用于实现对信号的傅里叶变换。本次实验的目的就是练习使用fft 、ifft 以及fftshift 函数,对一些简单的信号处理问题能够获取其频谱特性(包括幅频和相频特性)。
二、实验预备知识
1. 离散傅里叶变换(DFT)以及快速傅里叶变换(FFT)简介
设x (t )是给定的时域上的一个波形,则其傅里叶变换为
2()() (1)j ft X f x t e dt π∞
--∞
=⎰
显然X ( f )代表频域上的一种分布(波形),一般来说X ( f )是复数。而傅里叶逆变换定义为:
2()() (2)j ft x t X f e df π∞
-∞
=⎰
因此傅里叶变换将时域上的波形变换为频域上的波形,反之,傅里叶逆变换则将频域上的波形变换为时域上的波形。
由于傅里叶变换的广泛应用,人们自然希望能够使用计算机实现傅里叶变换,这就需要对傅里叶变换(即(1)式)做离散化处理,使之符合电脑计算的特征。另外,当把傅里叶变换应用于实验数据的分析和处理时,由于处理的对象具有离散性,因此也需要对傅里叶变换进行离散化处理。而要想将傅里叶变换离散化,首先要对时域上的波形x (t )进行离散化处理。采用一个时域上的采样脉冲序列:
实验三 傅里叶分析实验
实验三傅里叶分析实验
一实验目的
学习MATLAB语言的编程方法及熟悉MATLAB指令。
深刻理解生成连续周期信号的方法,程序优化技巧。
学会用MATLAB求解系统的傅里叶变换,及参数检验。二实验内容
信号与系统MATLAB综合实验教中第四章练习题一。
三实验编程
T1=1;
N1=10000;
t1=linspace(0,T1-T1/N1,N1)';
f1=1-2*t1;
OMG=32*pi;
K1=100;
omg=linspace(-OMG/2,OMG/2-OMG/K1,K1)';
X1=T1/N1*exp(-j*kron(omg,t1.'))*f1;
fs1=OMG/2/pi/K1*exp(j*kron(t1,omg.'))*X1;
T2=5;
N2=10000;
t2=linspace(0,T2-T2/N2,N2)';
fs2=0*t2;
f2=sawtooth(t2*2*pi,0);
X2=T2/N2*exp(-j*kron(omg,t2.'))*f2;
fs2=fs2+OMG/2/pi/K1*exp(j*kron(t2,omg.'))*X2;
figure;
subplot(2,2,1);
plot(omg,abs(X1),'b');
xlabel('Frequency'),ylabel('Amplitude');
title('单个锯齿周期幅频特性曲线');
subplot(2,2,2);
plot(t1,fs1,'r');
xlabel('Time'),ylabel('Amplitude');
title('Function after recovered');
数字信号处理,实验,Matlab实验FFT算法实现
实验二 应用FFT 对信号进行频谱分析
一、实验目的
1、加深对离散信号的DTFT 和DFT 的及其相互关系的理解。
2、在理论学习的基础上,通过本次实验,加深对快速傅里叶变换的理解,熟悉FFT 算法极其程序的编写。
3、熟悉应用FFT 对典型信号进行频谱分析的方法。
4、了解应用FFT 进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用FFT 。
二、实验原理和方法
一个连续信号)(t x a 的频谱可以用它的傅里叶变换表示
⎰
+∞
∞-Ω-=Ωdt e t x j X t j a a
)()(^
(2—1) 如果对该信号进行理想采样,可以得到采样序列:
)()(nT X n x a = (2—2) 同样可以对该序列进行Z 变换,其中T 为采样周期
∑+∞-∞
=-=
n n z n x z X )()( (2—3) 当jw e Z =得时候,我们就得到了序列的傅里叶变换
∑+∞-∞=-=n jwn jw
e n x e X )()( (2—4)
其中w 称为数字频率,它和模拟频域的关系为
s f T w Ω=Ω= (2—5) 式中的s f 是采样频率,上式说明数字频率是模拟频率对采样频率s f 的归一化。同模拟域的情况相似,数字频率代表了序列值变化的速率,而序列的傅里叶变换称为序列的频谱。序列的傅里叶变换
和对应的采样信号频谱具有下式的对应关系 : ∑+∞∞--=)2(1)(T m w j X T e X a jw
π (2—6) 即序列的频谱是采样信号频谱的周期延拓。从式(2—6)可以看出,只要分析采样序列的频谱,就可以得到相应的连续信号的频谱。注意:这里的信号必须是带限信号,采样也必须满足Nyquist 定理。
傅里叶分析matlab程序
x t cos 2* pi *50* t cos 2* pi *200* t
看其时域图为
2 1.5 1 0.5 0 -0.5 -1 -1.5 -2
(1.2)
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
图表 1 信号时域图
再看去频域的图
5000 4500 4000 3500 3000 2500 2000 1500 1000 500 0 0 50 100 150 200 250 300 350 400 450 500
j
d
为了快速技术离散傅里叶变换, 通常使用快速傅里叶变换来代替信号的傅里 叶变换。现给出 matlab 公式如下
n=length(sig);%信号sig的长度 fs=1000; %采用频率 nfft=2^nextpow2(n); X=fft(sig,nfft); %做傅里叶变换 Axx=(abs(X)); t=nfft/2-1))/nfft*fs; plot(t,Axx)作图
如有一个信号时域表达为xtcos2pi50t??cos2pi200t12??????看其时域图为215105005115200050101502025030350404505图表1信号时域图再看去频域的图5000450040003500300025002000150010005000050100150200250300350400450500图表2信号的频域图从时域到频域需要的就是傅里叶变换在一些信号处理等利于这种变换很很常见
数字信号处理实验 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 中每一
用Matlab对信号进行傅里叶变换实例
目录
用Matlab对信号进行傅里叶变换 (2)
Matlab的傅里叶变换实例 (5)
Matlab方波傅立叶变换画出频谱图 (7)
用Matlab对信号进行傅里叶变换
1.离散序列的傅里叶变换DTFT(Discrete Time Fourier Transform)
代码:
1 N=8; %原离散信号有8点
2 n=[0:1:N-1] %原信号是1行8列的矩阵
3 xn=0.5.^n; %构建原始信号,为指数信号
4
5 w=[-800:1:800]*4*pi/800; %频域共-800----+800 的长度(本应是无穷,高频分量很少,故省去)
6 X=xn*exp(-j*(n'*w)); %求dtft变换,采用原始定义的方法,对复指数分量求和而得
7 subplot(311)
8 stem(n,xn);
9 title('原始信号(指数信号)');
10 subplot(312);
11 plot(w/pi,abs(X));
12 title('DTFT变换')
结果:
分析:可见,离散序列的dtft变换是周期的,这也符合Nyquist 采样定理的描述,连续时间信号经周期采样之后,所得的离散信号的频谱是原连续信号频谱的周期延拓。
2.离散傅里叶变换DFT(Discrete Fourier Transform)
与1中DTFT不一样的是,DTFT的求和区间是整个频域,这对
结果图:
分析:DFT只是DTFT的现实版本,因为DTFT要求求和区间无穷,而DFT只在有限点内求和。
3.快速傅里叶变换FFT(Fast Fourier Transform)
MATLAB离散信号的产生和频谱分析实验报告
MATLAB离散信号的产⽣和频谱分析实验报告
实验⼀离散信号的产⽣和频谱分析
⼀、实验⽬的
仿真掌握采样定理。
学会⽤FFT 进⾏数字谱分析。
掌握FFT 进⾏数字谱分析的计算机编程实现⽅法。
培养学⽣综合分析、解决问题的能⼒,加深对课堂内容的理解。
⼆、实验要求
掌握采样定理和数字谱分析⽅法;编制FFT 程序;完成正弦信号、线性调频信号等模拟⽔声信号的数字谱分析;
三、实验内容
单频脉冲(CWP )为)2e xp()()(0t f j T t rec t t s π=。式中,)(T
t
rect 是矩形包络,T 是脉冲
持续时间,0f 是中⼼频率。
矩形包络线性调频脉冲信号(LFM )为)]2
1(2exp[)()(2
0Mt t f j T
t
rect t s +=π。
式中,M 是线性调频指数。瞬时频率Mt f +0是时间的线性函数,频率调制宽度为MT B =。
设参数为kHz f 200=,ms T 50=,kHz B 10=,采样频率kHz f s 100=。 1.编程产⽣单频脉冲、矩形包络线性调频脉冲。 2.编程实现这些信号的谱分析。 3.编程实现快速傅⽴叶变换的逆变换。
四、实验原理
1、采样定理
所谓抽样,就是对连续信号隔⼀段时间T 抽取⼀个瞬时幅度值。在进⾏模拟/数字
信号的转换过程中,当采样频率fs ⼤于信号中最⾼频率f 的2倍时(fs>=2f),采样之后的数字信号完整地保留了原始信号中的信息,⼀般实际应⽤中保证采样频率为信号最⾼频率的5~10倍;采样定理⼜称奈奎斯特定理。
2、离散傅⾥叶变换(FFT )
信号与系统MATLAB实验报告
信号与系统MATLAB实验报告
第一篇:信号与系统 MATLAB实验报告
院系:
年级:
姓名:
实验时间:
实验地点:
MATLAB实验报告
专业:
班号:
学号:
《信号与系统》
实验一连续时间信号的表示及可视化
实验题目:
f(t)=δ(t);f(t)=ε(t);f(t)=eat(分别取a>0及a<0);f(t)=R(t);f(t)=Sa(ωt);f(t)=Sin(2πft)(分别画出不同周期个数的波形)。
解题分析:
以上各类连续函数,先运用t = t1: p:t2的命令定义时间范围向量,然后调用对应的函数,建立f与t的关系,最后调用plot()函数绘制图像,并用axis()函数限制其坐标范围。
实验程序:
(1)f(t)=δ(t)
t=-1:0.01:3 %设定时间变量t的范围及步长 f=dirac(t)%调用冲激函数dirac()plot(t,f)%用plot函数绘制连续函数axis([-1,3,-0.5,1.5])%用axis函数规定横纵坐标的范围(2)f(t)=ε(t)
t=-1:0.01:3 %设定时间变量t的范围及步长 f=heaviside(t)%调用阶跃函数heaviside()plot(t,f)%用plot函数绘制连续函数title('f(t)=heaviside(t)')%用title函数设置图形的名称axis([-1,3,-0.5,1.5])%用axis函数规定横纵坐标的范围(3)f(t)=eat
t=-5:0.01:5 %设定时间变量t的范围及步长f=exp(t)%调用指数函数exp()
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变换,我们成功地获得了该信号的频谱图,并观察到不同频率成分的存在。
[经验]matlab完成傅里叶变换
一、傅立叶变化的原理;
(1)原理
正交级数的展开是其理论基础!将一个在时域收敛的函数展开成一系列不同频率谐波的叠加,从而达到解决周期函数问题的目的。在此基础上进行推广,从而可以对一个非周期函数进行时频变换。
从分析的角度看,他是用简单的函数去逼近(或代替)复杂函数,从几何的角度看,它是以一族正交函数为基向量,将函数空间进行正交分解,相应的系数即为坐标。从变幻的角度的看,他建立了周期函数与序列之间的对应关系;而从物理意义上看,他将信号分解为一些列的简谐波的复合,从而建立了频谱理论。
当然Fourier积分建立在傅氏积分基础上,一个函数除了要满足狄氏条件外,一般来说还要在积分域上绝对可积,才有古典意义下的傅氏变换。引入衰减因子e^(-st),从而有了Laplace变换。(好像走远了)。
(2)计算方法
连续傅里叶变换将平方可积的函数f(t)表示成复指数函数的积分或级数形式。
这是将频率域的函数F(ω)表示为时间域的函数f(t)的积分形式。
连续傅里叶变换的逆变换 (inverse Fourier transform)为
即将时间域的函数f(t)表示为频率域的函数F(ω)的积分。
一般可称函数f(t)为原函数,而称函数F(ω)为傅里叶变换的像函数,原函数和像函数构成一个傅里叶变换对(transform pair)。
二、傅立叶变换的应用;
DFT 在诸多多领域中有着重要应用,下面仅是颉取的几个例子。需要指出的
是,所有DFT 的实际应用都依赖于计算离散傅里叶变换及其逆变换的快速算法,即快速傅里叶变换(快速傅里叶变换(即FFT )是计算离散傅里叶变换及其逆变换的快速算法。)。
第九节 用MATLAB求傅里叶级数及其实验
第九节用MATLAB求傅里叶级数及其实验
MATLAB是一款非常强大的数学软件,可以用来求解各种数
学问题,包括傅里叶级数的求解。下面,我们将介绍如何使用MATLAB来求解傅里叶级数,并给出一个实验过程。
一、MATLAB求傅里叶级数方法
MATLAB提供了fft函数来求解傅里叶级数,fft函数的基本格式如下:
Y = fft(X)
其中,X为输入向量,Y为输出向量。fft函数的返回值Y是
一个复数向量,其长度与输入向量X的长度相同。
为了理解fft函数的使用方法,我们可以以方波为例进行演示。假设我们要求解一个周期为T的方波的傅里叶级数,其公式为:
f(t) = 4/π∑ n=1,3,5...∞ (sin nωt/n)
我们可以先定义函数f(t),代码如下:
function y = f(t)
y = zeros(size(t));
for n = 1:2:50
y = y + (4/pi) * sin(n*t)/n;
end
然后,我们可以生成一个时间向量t,代码如下:
t = linspace(0, 2*pi, 1000);
接着,我们可以调用fft函数来求解傅里叶级数,代码如下:
y = fft(f(t));
得到y的结果后,我们可以通过ifft函数来求解逆变换,代码
如下:
y = ifft(y);
最后,我们可以画出原函数f(t)和傅里叶级数的图像进行比较,代码如下:
subplot(211), plot(t, f(t)), title('原函数');
subplot(212), plot(t, y), title('傅里叶级数');
信号与系统Matlab实验作业
实验一典型连续时间信号和离散时间信号
一、实验目的
掌握利用Matlab画图函数和符号函数显示典型连续时间信号波形、典型时间离散信号、连续时间信号在时域中的自变量变换。
二、实验内容
1、典型连续信号的波形表示(单边指数信号、复指数信号、抽样信号、单位阶
跃信号、单位冲击信号)
1)画出教材P28习题1-1(3) ()[(63)(63)]
t
=----的波形图。
f t e u t u t
2)画出复指数信号()()j t f t e σω+=当0.4, 8σω==(0<t<10)时的实部和虚部的
波形图。
t=0:0.01:10;
f1='exp(0.4*t)*cos(8*t)';
f2='exp(0.4*t)*sin(8*t)';
figure(1)
ezplot(f1,t);
grid on;
figure(2)
ezplot(f2,t);
grid on;
3)画出教材P16图1-18,即抽样信号Sa(t)的波形(-20<t<20)。t=-10:0.01:10;
f='sin(t)/t';
ezplot(f,t);
grid on;
4)用符号函数sign画出单位阶跃信号u(t-3)的波形(0<t<10)。t=0:0.01:10;
f='(sign(t-3)+1)/2';
ezplot(f,t);
grid on;
5)单位冲击信号可看作是宽度为∆,幅度为1/∆的矩形脉冲,即t=t 1处的冲
击信号为
11111 ()()0 t t t x t t t other
δ∆⎧<<+∆⎪=-=∆⎨⎪⎩
第九节用MATLAB求傅里叶级数及其实验
当 x+2n (n0 1 2 )时,级数收敛于 f( x),因为 l ,输入程序:
>> syms x n fun=x; l=pi; [a0,an,bn]=afourier(fun,l) 运行后屏幕显示函数 sinx 的傅里叶系数为: a0 = 0 an = 0 bn = -2*(-sin(n*pi)+n*pi*cos(n*pi))/n^2/pi 再输入程序: >> syms x n fun=x; l=pi; a0 =0; an =0; bn = -2*(-sin(n*pi)+n*pi*cos(n*pi))/n^2/pi; S=safourier(fun,a0,an,bn,l,6) 运行后屏幕显示在闭区间 (,) 上将函数 sinx 的傅里叶级数 的前 6 项为 S= 2*sin(x)-sin(2*x)+2/3*sin(3*x)-1/2*sin(4*x)+2/5*sin(5*x) -1/3*sin(6*x)+…… (x x 35 ……) 二、实验内容 (一) 、问题 用 MATLAB 软件求函数的傅里叶级数的部分和和傅里 叶系数等。 (二) 、实验目的 学会使用 MATLAB 软件求函数的傅里叶级数的部分和 和傅里叶系数等的方法。 (三) 、预备知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB实验傅里叶分析
实验七 傅里叶变换
一、实验目的
傅里叶变换是通信系统、图像处理、数字信号处理以及物理学等领域内的一种重要的数学分析工具。通过傅里叶变换技术可以将时域上的波形分 布变换为频域上的分布,从而获得信号的频谱特性。MATLAB 提供了专门的函数fft 、ifft 、fft2(即2维快速傅里叶变换)、ifft2以及fftshift 用于实现对信号的傅里叶变换。本次实验的目的就是练习使用fft 、ifft 以及fftshift 函数,对一些简单的信号处理问题能够获取其频谱特性(包括幅频和相频特性)。
二、实验预备知识
1. 离散傅里叶变换(DFT)以及快速傅里叶变换(FFT)简介
设x (t )是给定的时域上的一个波形,则其傅里叶变换为
2()() (1)j ft X f x t e dt π∞--∞=⎰
显然X ( f )代表频域上的一种分布(波形),一般来说X ( f )是复数。而傅里叶逆变换定义为:
2()() (2)j ft
x t X f e df π∞-∞
=⎰
因此傅里叶变换将时域上的波形变换为频域上的波形,反之,傅里叶逆变换则将频域上的波形变换为时域上的波形。
由于傅里叶变换的广泛应用,人们自然希望能够使用计算机实现傅里叶变换,这就需要对傅里叶变换(即(1)式)做离散化处理,使
之符合电脑计算的特征。另外,当
把傅里叶变换应用于实验数据的分
析和处理时,由于处理的对象具有
离散性,因此也需要对傅里叶变换
进行离散化处理。而要想将傅里叶
变换离散化,首先要对时域上的波
形x (t )进行离散化处理。采用一个
时域上的采样脉冲序列: δ (t -nT ), n = 0, 1, 2, …, N -1;
可以实现上述目的,如图所示。其中N 为采样点数,T 为采样周期;f s = 1/T 是采样频率。注意采样时,采样频率f s 必须大于两倍的信号频率(实际是截止频率),才能避免混迭效应。 接下来对离散后的时域波形()()()(x t x t t n T x n T δ=
-=的傅里叶变换()X f 进行离散处理。与上述做法类
似,采用频域上的δ脉冲序列: x (t δ x (t )δ t t t
δ ( f -n/T 0), n = 0, 1, 2, …, N -1;T 0= NT 为总采样时间
可以实现傅里叶变换()X f 的离散化,如下图示。不难看出,离散后的傅里叶变换其频率间隔(频率轴上离散点的间隔,即频域分辨
率)
011 (3)s f f T NT N ∆===
因此要增加分辨率须增加采样
点数目N 。频域上每个离散点对
应的频率为:
0; 0,1,2,...,-1 (4)s n f n n f n n N T NT N ====显然n = 0的点对应于直流成分。
经过以上离散化处理之后,连续积分的傅里叶变换(1)式转变为如下离散形式:
12/0()(), 0,1,2,..., 1 (5)
N j nk N n k k X f x t e n N π--===-∑其中t k = kT
(k =0,1,2,…,N-1)代表采样点时刻。X ( f n )一般是复数,因此离散傅里叶变换(DFT)后变成一个N 点(采样点数)的复数序列。X ( f n )绝对值代表振幅,其幅角代表相位,因此由(5)式可以给出DFT 的振幅频谱和相位频谱。(5)式通常又简写f f f ()X f δ (f -X
(混
成如下形式:
10()(), 0,1,2,..., 1 (6)
N nk N k X n x k W n N -===-∑
其中 2/ j N N W e π-=,x 是采样点数据,它是一个N 个点的向量,DFT 的结果X 是N 个点的复数向量。(5)式或(6)式就是对傅里叶变换进行数值计算的基础。
一般采样点数N 越大,DFT 的结果越接近真实的情况,但是当N 较大时,(6)式的计算量很大,因为使用计算机求解(6)式时,总共要执行N 2次复数乘法和N×(N-1)次复数加法。所以直接用DFT 算法(即(5)式)进行谱分析和信号的实时处理是不切实际的。为了减轻计算的压力,人们提出了一种所谓快速傅里叶变换(FFT )的思想:
取N =2m ,首先将N 个点的采样数据011[,,...,]N x x x x -=分成两个N /2点的序列:
1022[,,...,]N x x x x -= (偶数序列)
2131[,,...,]N x x x x -= (奇数序列)
这样处理的好处是可以把(6)式分解为两个N/2点的DFT ,使计算量降下来。接下来再将N/2点的序列x 1仿照上述做法进一步分裂成2个N/4
点的序列x3和x4,另一序列x2亦做如此处理,分裂成2个N/4点的序列x5和x6。这样两个N/2点的序列分成了更短的4个N/4点的序列,依次类推,最后的结果是将一个N点的序列x裂成了N个点的单点序列:x0, x1, x2, …, x N-1。这样做可以将DFT的运算效率提高1-2个数量级,为数字信号处理技术应用于各种信号的实时处理创造了条件,从而推动数字处理技术的发展。由此可见FFT的思想实质是不断地把长序列的DFT计算分解成若干短序列的DFT,并利用旋转因子(即W N )的周期性和对称性来减少DFT 的运算次数。所以FFT就是DFT的快速算法。
有关FFT算法的详细介绍和理论推导参见有关的书籍,这里不做进一步介绍。
2. FFT的MATLAB实现
为了实现快速傅里叶变换,MATLAB提供了fft、ifft、fft2、ifft2以及fftshift函数,分别用于一维和二维离散傅里叶变换(DFT)及其逆变换。借助这些函数可以完成很多信号处理任务。考虑到信号处理包含的领域很广泛,这里只介绍一维傅里叶变换及其逆变换函数。