Matlab语言实现信号频谱分析姓名:蒋政胜学号:14092202959序号:40这个学期我们初步接触了Matlab的学习,开始懂得用Matlab画图以及信号与系统仿真,在几个星期的学习下,老师叫我们完成一篇关于信号处理领域当中应用Matlab语言的论文,我选择了Matlab语言实现信号与频谱分析方面的论题,因为随着计算机的普及应用以及科技的发达,现代社会是信息的社会,对信息的研究变得非常重要,而对信号波形的模拟可以方便研究人员研究。以前的信号模拟是用硬件,对仪器和实验室的要求较高,不便于广泛应用,而且信号处理具有内容繁多、概念抽象、设计复杂等特点,学生在学习时常常会感到枯燥,难以理解和掌握。硬件模拟信号波形对设备要求较高,有时候受仪器或操作不对等因素的影响将无法正确直观的看到波形,参数改变时不能立即看到波形变化。而用软件的形式对信号波形进行仿真有着界面可视性强,操作简单方便;便于数据修改,文件保存,实验效率高,实验内容丰富,结果直观易懂,便于分析;而且系统容易扩展新的实验项目,所以信号仿真很有必要而且急为迫切,对连续信号的处理及分析更加便捷Matlab在全世界内都很是流行,特别是在工程计算领域。近年来越来越多的国人也喜爱上了这一套软件。Matlab的toolbox中也含有概率统计方面的库函数。概率方面的库函数主要有各种常见分布的分布函数、概率密度、分布率以及生成服从各种分布随机数的函数.统计方面的库函数含盖了简单随机样本下常见的参数估计(点估计、区间估计),假设检验等等。通过实验,加强学生对信号与系统课程的理解和掌握。介绍了信号之间相互转换的基本原理,并结合仿真程序的开发实例,重点讨论了典型的连续信号的基本运算:时移、折叠和尺度的关键步骤和代码,最后,给出了调制的仿真结果。Matlab是一种高性能的用于工程计算的编程软件,它具有强大的数学计算、算法推导、建模仿真、图形绘制等功能。文中提出了用典型信号——正弦信号的波形转换的方案,解决了连续信号的频谱分析,使得其他连续信号的执行更加便利。Matlab作为编程语言和可视化工具,用Matlab开发的实验为学生提供了“信号分析”、“信号抽样”、“系统仿真”、“系统特性”、“滤波器设计”及“傅立叶变换”等实验模块。它的界面演示框如同通用示波器,显示了信号分析与系统设计的动态仿真过程,给人以直观的感受。在教学中它能为同学们提供了大量的实例,同时它也留下了在实验中同学们可以改变信号、模块、仿真子系统等的参数,并观察信号与系统的相应变化.在实验过程中,同学们对所学的书本知识会有感性的认识和直观的验证,加深对“信号与系统”原理的理解。1.基本信号产生模块的窗体创建启动matlab7.0,在命令窗口输入guide,打开GUI制作窗口,在窗体上有界面制作工具。在pushbutton下单击右键callback,打开callbackfunction,调用MATLAB内部提供的函数,square函数,sawtooth函数,sinc函数,diric函数,rectpuls函数,tripuls函数,pulstran函数,chip函数在GUI制作窗口,axes是用来显示图形,当单击pushbutton,运行结果,会在axes中显示出来。简单函数基本性质的模块,通过人机交互方式进行设计,在信号1和信号2中输入幅值,频率,初相,移位不同的值,对其信号相加,信号相乘,信号移位使信号在axes窗口中,显示出来。仿真的波形有正弦波,三角波,指数函数,抽样函数,脉冲函数等。Popupmenu函数中用switchval1case1来调用不同的波形,)设置句柄get(handles.popupmenu)用strdouble(get(handles.edit,’string’)来输入测试数据,达到直观仿真模拟图.2:用Matlab实现正弦信号的频谱、功率谱以及反变换例一:正弦信号时域波形a.正弦信号的公式。正弦信号,一般写做tKtfsin(5-3)式中K为振幅,是角频率,为初相位。弦信号是周期信号,其周期T与角频率和频率满足下列关系式fT12(5-4)b.正弦信号的运行结果如图所示:c.程序代码fs=1000;%设定采样频率N=1024;%设定数据长度i=0:N-1;t=i/fs;f=100;%设定正弦信号频率%生成正弦信号x=sin(2*pi*f*t);subplot(231);plot(t,x);%作正弦信号的时域波形axis([0,0.01,-1,1]);xlabel('t');ylabel('y');title('正弦信号时域波形');例二:正弦信号幅度频谱图a.运行结果如图5-12所示:图5-12正弦信号幅频谱图c.部分程序:fs=1000;%设定采样频率N=1024;%设定数据长度i=0:N-1;t=i/fs;f=100;%设定正弦信号频率%生成正弦信号y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M;plot(f,mag);%做频谱图axis([0,100,0,80]);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号幅频谱图');grid;例三:正弦信号功率谱a.正弦信号功率谱运行界面如图5-14所示图5-14正弦信号功率谱图b.部分程序:fs=1000;%设定采样频率N=1024;%设定数据长度i=0:N-1;t=i/fs;f=100;%设定正弦信号频率%生成正弦信号y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M;axis([0,100,0,80]);sq=abs(y);power=sq.^2;plot(f,power);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号功率谱');grid;例四:通过IFFT转换的正弦信号波形a.通过IFFT转换的正弦信号波形运行界面如图5-16所示图5-16通过IFFT转换的正弦信号波形图b.部分程序:fs=1000;%设定采样频率N=1024;%设定数据长度i=0:N-1;t=i/fs;f=100;%设定正弦信号频率%生成正弦信号y=fft(x,N);%进行fft变换mag=abs(y);%求幅值f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M;axis([0,100,0,80]);sq=abs(y);power=sq.^2;grid;ln=log(sq);xifft=ifft(y);magx=real(xifft);ti=[0:length(xifft)-1]/fs;plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形');grid;从以上几个简单的图中,可以看到用Matlab实现信号领域的分析非常方便,在万力老师的指导下,本次Matlab论文,就要画上一个句号了,通过对信号的频谱分析这个课题的研究,我在编程能力上有了实质性地提高。鉴于本文设计的信号频谱分析平台为个人计算机,其性能有限,故暂不能做大规模的精确系统测试。虽然连续信号的频谱分析已经顺利完工并能够正常运行,但想要成为一个能够在大范围内广泛应用的此类设计,本系统还需要投入更多的精力去学习和完善。Matlab实验平台发展到现在,虽然时间不长,然现如今已经发展成为信息产业中一个大的研究热点。更是由于次实验系统的复杂性和所具有的挑战性,才使得有更多的Matlab爱好者投身其中,为基于Matlab的信号与系统实验平台的发展贡献力量。要在最短的时间内写出最成功的论文,不仅靠课堂上的知识,还要靠平时的积累,和课外阅读的素材。MATLAB有很好的图象处理功能,其特点是开发效率高,接受能力快,所以选择Matlab软件来实现对信号频谱分析具有很大优势,我以后还会通过更深层次的学习来掌握Matlab,从而解决信号领域的一些难题,使信号领域的学习更加清晰,更加轻松!