搜档网
当前位置:搜档网 › 信号与系统在matlab应用_论文

信号与系统在matlab应用_论文

信号与系统在matlab应用_论文
信号与系统在matlab应用_论文

基于MATLAB在傅里叶变换中的应用

摘要:MATLAB自推出以来就受到广泛的关注,其强大的扩转功能为各个领域的应用提供了有力的工具。信号处理箱就是其中之一。在信号处理工具箱中,MATLAB 提供了滤波器分析、滤波器实现、模拟滤波器设计、模拟滤波器变换、滤波器离散化、线性系统变换等方面的函数命令。应用MATLAB作数值计算,针对当自变量的信号“时间”或“频率”取连续值或离散值时形成的五种情况作出相应的计算及频谱曲线。

关键词:傅里叶变换;周期;频率;MATLAB。

1.引言

MATLAB 是国际上公认的优秀、可靠的科学计算和仿真的标准软件。它在许多科学领域中成为计算机辅助设计和分析、算法研究的基本工具。在傅里叶变换中,应用MATLAB作数值计算,可以很容易的作出相对应的计算及频谱曲线,大大提高了计算效率。

2.傅里叶变换

傅里叶变换就是建立以时间为自变量的“信号”与以频率为自变量之间的某种变化关系。所以,当自变量“时间”或“频率”取连续值或离散值时,就形成了几种不同形式的傅里叶变换,如表1傅里叶变换形式所示。

3.连续时间、连续频率------福利叶变换

这就是连续时间非周期信号x(t)福利叶变换关系,所得到的是连续的非周期的频率密集度函数()

X jΩ.其变换对为:

正变换:

()()j t

X j x t e dt

Ω=

-∞

?(1)

逆变换:1()()2j t

X t x j e d π-Ω∞=ΩΩ-∞

? (2) 例 1 分析如图 1时域信号及其频谱图 所示的矩形脉冲信号()f t (非周期信

号)在Ω=-40~40rad/s 区间的频谱。

(a )采样密 (b )采样稀,有频率泄漏

图 1时域信号及其频谱图

根据离散时间信号[]x n 的Z 变换定义: ()[]n x z x n z +∞--∞

=∑,矩形脉冲信号的

频谱为:

F(j )=()j t f t e dt -Ω∞Ω-∞

?

按MATLAB 作数值计算的要求,它不能计算无限区间,根据信号波形的情

况,将积分上下限定为0~10s ,并将t 分成N 等份,用求和代替积分。这样,

10111()()()1M

M N

N b b z n b z Y z H z X z a z n a z ----+++==+++ (3)

可写为

12121

F(j )=()[(),(),,()][,,,]n N

j t j t j t j t i n i f t e t f t f t f t e e e t -Ω-Ω-Ω-Ω=Ω?=???????∑ (4)

这说明求和的问题可以用()f t 行向量乘以n j t e -Ω列向量来实现,式中t ?是t 的增量,在程序中用dt 表示。由于求一系列不同Ω(程序中用Ω用W 表示)处的F 值,都用同一公式,这就可以利用matlab

中的元素群运算能力。类似

地也可以得到傅里叶逆变换的数值计算式。 MATLAB 源程序如下: clear,tf=10; N=input;

dt=10/N;t=[1:N]*dt; f=[ones(1,N/2),zeros(1,N/2)]; wf=input; Nf=input;

w1=linspace(0,wf,Nf) ;dw=wf/(Nf-1); F1=f*exp(-j*t'*w1)*dt; w=[-fliplr(w1),w1(2:Nf)]; F=[fliplr(F1),F1(2:Nf)]; subplot(1,2,1), plot(t,f,'linewidth',1.5), grid on

set(gcf,'color','w') axis([0,10,0,1.1]) subplot(1,2,2),

plot(w,abs(F),'linewidth',1.5) grid on

程序运行结果:若时间分隔的点数N=256,需求得频率宽度wf=40,需求的频率点数Nf=64,所得结果所示。若取时间分隔的点数N=64,频数宽度=40,频谱点数Nf=256,则得结果所示。此时采取采样周期为dt=10/64s ,对应的采样频率fs=1/dt=6.4Hz 或s Ω=40.2124rad/s 。从图中可以看出高频频谱以s Ω/2处为基准线的转迭,出现频率泄露。

4. 连续时间、离散频率----傅里叶级数

设()x t 代表一个周期为0T 的周期性连续时间函数,()x t 课展开成傅里叶级数,其傅里叶级数的系数为0()X jk Ω,0()X jk Ω是离散频率的非周期函数,()

x t

和0()X jk Ω组成的变换对为:

正变换:

000/2

0/2

1

()()T jk t T X jk x t e dt T -Ω-Ω=

?

(5)

逆变换:

0()()j k t

X t x j k e

Ω-∞

=Ω∑ (6)

式中,002/T πΩ=为离散频率相邻两谱线之间的频率间隔,k 为谐波序号。

5. 离散时间、连续频率----序列傅里叶变换

如果信号()x n 是非周期且绝对可和,则它的离散时间傅里叶变换对数为:

正变换: ()()j j n

X e x n e ω

ω∞

-∞=∑ (7)

逆变换: 1

()()2j j n x n X e

e d π

ω

ωπωπ

-

=

? (8)

在时域上市离散序列,而在频域上是连续函数,即具有连续的频谱。这里的

ω为数字频域,它与模拟角频率Ω的关系为:T ω=Ω,其中T 为模拟信号

()()x n x nT =的抽样时间间隔。

值得注意的是,对于序列傅里叶变换,如果()x n 为无限长,那么就不能用MATLAB 直接利用式12111

12()111N N r r r H z p z p z p z

---=

++???+---来计算()j X e ω

,只可以用它对表达式()j X e ω在[0,]π频率点上求值,在画出它的幅度和相位(或者实部和虚部)。

如果()x n 为有限长,那么就可直接用MATLAB ,根据式

12

111

12()111N N r r r H z p z p z p z

---=

++???+---,在任意频率对()j X e ω进行数值计算。 例2求/3()(0.9)j n x n e π=,010n ≤≤的离散时间傅里叶变换。 MATLAB 源程序如下: n=0:10;x=(0.9*exp(j*pi/3)).^n; k=-200:200;w=(pi/100)*k;

X=x*(exp(-j*pi/100)).^(n'*k); magX=abs(X);angX=angle(X); subplot(2,1,1);plot(w/pi,magX);grid axis([-2,2,0,8])

xlabel('frequency in pi units');ylabel('|X|'); title('Magnitude Part')

subplot(2,1,2);plot(w/pi,angX/pi);grid axis([-2,2,-1,1])

xlabel('frequency in pi units');ylabel('Radians/pi'); title('Angle part')

程序运行结果如图2所示。

6. 离散时间、离散频率----离散傅里叶级数

设()x n 是周期为N 的周期序列,则()x n 的离散傅里叶级数只有N 个独立的谐波成分,数字基数为02/N ωπ=谐波成分为2/,1,2,,1k N k N π=-。k 次谐波

的系数大小为()X k 。()x n 与()X k 的变换对数为:

图 2副频和相频特性曲线

正变换: 1

()[()]()N nk

N n X K DFS X n x n W -===∑ 0,1,2,,k N =- (9)

逆变换: 10

1()[()]()N nk

N k X n IDFS X k x k W N --===∑ 0,1,2,,n N =- (10)

式中,2j

nk N

N

W π-。可以看出谐波系数()X k 也是一个以N 为周期的周期序列。

7. 离散时间、离散频率----离散傅里叶变换

如果时域序列()x n 是有限长的,长度为N ,它的频谱可以通过离散傅里叶变换(DFT )来获得,其变换对为:

正变换: 1

0()[()]()N nk

N n X k DFT x n x n W -===∑ 0,1,2,,k N =- (11)

逆变换:10

1()[()]()N nk

N k x n IDFS X k K k W N --===∑ 0,1,2,,n N =- (12)

由DFT 变换对可以看出,DFT 是对有限长序列频谱的离散化,通过DFT 是对域有限长度系列与频域有限长度相对应,从而可再频域用计算机进行信号处理。更重要的是DFT 有多个快速算法(FFT ),可使信号处理速度提高好几倍,是数字信号的实时处理得以实现。

例3用FFT 计算先练两个序列的卷积。

()sin(0.4)()N x n n R n =,()0.9()n M h n R M =

并测试直接卷积和快速卷积的时间。用圆周卷积(FFT )替代线性卷积的计算方框图如图3所示。

图 3快速卷积方框图

按照该方框图很容易编写出如下MATLAB 程序: xn=sin(0.4*[1:15]); hn=0.9.^(1:20); tic,

yn=conv(xn,hn); toc,

M=length(xn); N=length(hn); nx=1:M;nh=1:N;

L=pow2(nextpow2(M+N-1)); tic,

Xk=fft(xn,L); Hk=fft(hn,L); Yk=Xk.*Hk; yn=ifft(Yk,L) toc,

subplot(2,2,1),stem(nx,xn,'.'),ylabel('x(n)'); subplot(2,2,2),stem(nh,hn,'.');

subplot(2,1,2),ny=1:L;stem(ny,real(yn),'.'),ylabel('y(n)'

图 4 ()x n ,()h n 及其线性卷积波形

8.结语

通过本次设计,学习和掌握了MATLAB软件在傅里叶变换中的应用,分析了连续时间、连续频率傅里叶变换,连续时间、离散频率序列傅里叶变换,离散时间、离散频率离散傅里叶级数。从中学到了MATLAB软件对傅里叶变换的可视化编写程序,及其各种MATLAB表达式的表示,及相关函数的了解。

参考文献:

[1] 刘勍,温志贤.MATLAB基础及应用[M].南京:东南大学出版社:江建中,2011.

[2] 唐向红,岳恒立,郑雪峰.MATLAB及在电子信息类课程中的应用(第2版)[M].北京:电子工业出版社:韩同平,2010.

相关主题