
关键词:频谱分析;matlab;快速傅里叶变换;仿真
中图分类号:tn911.6 文献标识码:a 文章编号:1009-3044(2016)19-0240-01
1 背景
信号的频域分析在信号处理中非常重要。matlab 软件作为一种科学计算工具,因其功能强大,被越来越多的科研和工程技术人员用来进行科学研究与计算。matlab提供的丰富的计算函数和绘图命令,很方便实现信号频域分析这一抽象理论的可视化,为信号分析提供了方便。
2 傅里叶变换
信号的分析方法包括时域分析方法和频率域分析方法两种。傅里叶变换可以用于连续时间信号系统和离散时间系统的频率分析中,其中常用的是离散傅里叶变换( dft)和快速傅里叶变换(fft)。
设 x (n) 为 n 点的有限长序列,其离散傅里叶变换为f(k),从公式中可以看出,离散信号的傅里叶变换需要n2-n次复数加法和n2次复数乘法运算。当n很大时,运算时间会很长,要求设备较复杂,影响了离散傅里叶变换的使用。
3 仿真分析
文中采用matlab7.0仿真平台,产生一个连续时间信号并生成其频谱。以频率为1hz和2hz的余弦信号x(t)和y(t)为例,采样间隔取ts=1/100s,利用matlab中函数fft对其进行4096点的快速傅立叶变换。得到的频谱横轴为采样点数,纵轴为频谱幅值,从图中无法确定频谱幅值非零位置对应的频率,即不能确定信号的频谱范围。
于是采用两种方法对横坐标的采样点数进行改进,将采样点转换为频率值。第一种方法仍然是对频率为1hz和2hz的余弦信号x(t)和y(t)信号进行4096点的fft变换,进行变换后,将频谱中心搬到零频,再求幅频值,最后对横轴进行了处理,实现了指定点傅里叶变换图。代码如下:
z1=fft(x,4096);%使信号x(t)产生4096点的傅里叶变换
z=fftshift(z1);%移动频谱中心到零频
z=abs(z);%求幅频值
u1=fft(y,4096);% 使信号y(t)产生4096点的傅里叶变换
u=fftshift(u1); %移动频谱中心到零频
u=abs(u); %求幅频值
a=[-2048:2047]*fs/4096;%将横坐标点数转换为频率
第二种方法是对频率为1hz和2hz的余弦信号x(t)和y(t)信号进行fft变换,然后移动频谱中心到零频,求幅频值,最后将横轴采样点和频率进行转换,得到了横轴为频率的频谱图。其代码为:
z1=fft(x);%对信号x(t)进行傅里叶变换
z=fftshift(z1);%移动频谱中心到零频
z=abs(z);%求幅频值
u1=fft(y);% 对信号y(t)进行傅里叶变换
u=fftshift(u1); %移动频谱中心到零频
u=abs(u); %求幅频值
l=length(t);%计算信号的长度
a=0:fs/(l-1):fs;
a=a-fs/2;%将横轴转换为频率
图1为横轴转换成频率的1hz和2hz余弦信号频谱,其中1(a)和1(b)为采用第一种方法转换得到的频谱图,2(a)和2(b)为采用第二种方法转换得到的频谱图。从图中可以看出,通过这两种方法都可以确定频率在哪个位置幅频值不为零,和理论分析结果一致,将抽象的概念和复杂的公式计算通过图形表示出来,使我们对信号的频谱分析更容易。
4 结束语
matlab是通信、电子专业的实验仿真工具。matlab的通信工具箱是一个运算函数和仿真模块的集合体, 可以用来进行通信领域的研发、系统设计和仿真分析。将matlab引入信号频谱分析中,通过观察matlab生成的信号时域波形和频谱图,方便直观地给出信号频谱分布情况,文中采用两种方法将横轴的fft点数转换成频率,仿真得到的结果与理论分析一致。
