matlab频谱分析仪

上传人:ni****g 文档编号:551052892 上传时间:2023-12-01 格式:DOCX 页数:19 大小:323.47KB
返回 下载 相关 举报
matlab频谱分析仪_第1页
第1页 / 共19页
matlab频谱分析仪_第2页
第2页 / 共19页
matlab频谱分析仪_第3页
第3页 / 共19页
matlab频谱分析仪_第4页
第4页 / 共19页
matlab频谱分析仪_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《matlab频谱分析仪》由会员分享,可在线阅读,更多相关《matlab频谱分析仪(19页珍藏版)》请在金锄头文库上搜索。

1、频谱分析仪摘要 频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制 度、谱纯度、频率稳定度和交调失真等信号参数的测量,是一种多用途的电子测量 仪器。随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机 构的发展方向。虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功 能灵活,很容易构建,所以应用面极为广泛。本文介绍了一种使用GUI工具箱用 mat lab实现的简易虚拟频谱分析仪的设计方法。关键词 matlab,频谱分析仪,时域分析,频域分析目录1概述 32技术路线43实现方法53.1搭建GUI界面 53. 2信号输入 63. 2. 1选择信号输入63.2.2声卡输

2、入73.2.3读取wav文件73. 2. 4信号发生器输入 73.3时域分析3.4频域分析 93.5仿真 103.5.1声卡输入 103.5.2读取wav文件 103.5.3信号发生器 114存在的问题 155致谢 15参考文献 151概述MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司 出品的商业数学软件。可以进行矩阵运算、绘制函数和数据、实现算法、创建用户 界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与 通讯、图像处理、信号检测、金融建模设计与分析等领域。图形用户界面 (Graphical User Interfa

3、ce,简称GUI,又称图形用户接口)是指采用图形方式显 示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用 户来说在视觉上更易于接受。MATLAB自带了强大的GUl工具1。在本文中,将利 用MATLAB的GUI工具,设计出数字频谱分析仪。频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制度、谱纯 度、频率稳定度和交调失真等信号参数的测量,可用以测量放大器和滤波器等电路 系统的某些参数,是一种多用途的电子测量仪器。它又可称为频域示波器、跟踪示 波器、分析示波器、谐波分析器、频率特性分析仪或傅里叶分析仪等。现代频谱分 析仪能以模拟方式或数字方式显示分析结果,能分析1赫

4、兹以下的甚低频到亚毫米 波段的全部无线电频段的电信号2。目前已经有许多较成熟的频谱分析软件,如 SpectraLAB、RSAVu、dBFA等3。本文将给出的则是通过MATLAB软件实现的基于 FFT的数字频谱分析仪。FFT (Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变 换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变 换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算 机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步4。通过此次设计,能进一步掌握MATLAB软件开发过程的基本理论、基本知识和

5、 基本技能,熟悉基于MATLAB平台的若干信号处理系统开发及调试方法,且成本 低,易于实现,容易修改,并可以进行仿真。该设计的进行可以为我们以后的学习 工作奠定一定的基础。2技术路线本次设计的频谱分析仪模块划分如图1所示:I 换谱分析仗图1 频谱分析仪模块划分3实现方法3.1搭建GUI界面此次设计搭建的GUI见面如图2所示:擀-丹匚*匕 三住E懲Z-P3I JTJTZfr |图2 GUI界面最上方为标题区,用于显示软件标题等信息。再往下是信号输入区,首先应 输入采样频率和采样点。信号有3种输入方式,包括声卡输入,读取WAV文件和信 号发生器输入。在信号发生器中加入了信号叠加选项,从而可以将产生

6、的信号与原 有的信号进行混迭。只有当某个单选框被选中时才允许使用对应的输入框、按钮 等。输入区右边为分析区,除了对wav文件进行播放外,还可以对信号进行时域 分析和频域分析,该软件的核心代码都在这两个按钮的回调函数中。再下方为分析结果区,用于显示波形基本参数与统计量的计算结果,Axes 1为波形显示区,在录音结束、打开WAV文件成功或者信号发生器生成 波形时会更新显示。 Ax e s 2为频谱图显示区,用于显示各种频谱的谱线,在点击频 域分析后会更新显示。点击频谱类型可以显示不同的频谱图。本次设计提供了幅频 特性分析和相频特性分析。3.2信号输入3.2.1选择信号输入开始使用频谱分析仪时,除了

7、需要设定采样频率和采样点数外,还需要选择 信号输入方式,本次设计提供三种输入,分别是:声卡录音,读取wav文件和信号 发生器。其代码如下(仅以选择声卡输入为例):function record_Callback(hObject, eventdata, handles)set(handles.record,value,1);set(handles.wavfile,value,0);set(handles.wave,value,0);h=findobj(Tag,recordtime); set(h,enable,on);h=findobj(Tag,startrecord); set(h,enabl

8、e,on); h=findobj(Tag,wavname); set(h,enable,off); h=findobj(Tag,openfile); set(h,enable,off); h=findobj(Tag,inwave); set(h,enable,off); h=findobj(Tag,inamp); set(h,enable,off); h=findobj(Tag,infre); set(h,enable,off); h=findobj(Tag,inpha); set(h,enable,off); h=findobj(Tag,mix);set(h,enable,off);h=fi

9、ndobj(Tag,wavemake);set(h,enable,off);当选择了一种输入方式之后,另外两种输入方式将不能使用。3.2.2声卡输入这里声卡输入是指由麦克风录音得到的声音信号的输入,MATLAB提供了 wavrecord函数,该函数能够实现读取麦克风录音信号。声卡输入的主要代码如下所示5:function startrecord_Callback(hObject, eventdata, handles)Fs=str2double(get(handles.samplefre,String);N=str2double(get(handles.recordtime,String)*F

10、s;handles.y=wavrecord(N, Fs,double);handles.inputtype=1;guidata(hObject,handles);plot(handles.axes1,handles.y);ysize=size(handles.y);set(handles.samplenum,String,num2str(ysize(1);3.2.3读取wav文件MATLAB提供了 wavread函数,该函数能够方便的打开并读取WAV文件中的声音信息。其代码如下:function openfile_Callback(hObject, eventdata, handles) fi

11、lename,filepath=uigetfile(*.wav,wavfile); set(handles.wavname,string,filename);handles.y,Fs,bit=wavread(filename);handles.inputtype=2;guidata(hObject,handles); plot(handles.axes1,(1:length(handles.y)/Fs,handles.y); ysize=size(handles.y);set(handles.samplenum,String,num2str(ysize(1); set(handles.samp

12、lefre,string,Fs);3. 2. 4信号发生器输入MATLAB可以产生标准信号,如sin能够产生正弦波,首先利用get函数获得 波形,频率f,幅值a和相位p,然后判断是否有信号叠加,若无叠加,则直接生 成信号波形,如有叠加,则进行信号混叠。function wavemake_Callback(hObject, eventdata, handles)N=str2double(get(handles.samplenum,String);x=linspace(0,N/Fs,N); t=get(handles.inwave,Value); f=str2double(get(handles.

13、infre,String); a=str2double(get(handles.inamp,String); p=str2double(get(handles.inpha,String); switch t case 1 y=a*sin(2*pi*x*f+p);case 2 y=a*sign(sin(2*pi*x*f+p);case 3y=a*sawtooth(2*pi*x*f+p,0.5);case 4y=a*sawtooth(2*pi*x*f+p);case 5y=a*(2*rand(size(x)-1);endif get(handles.mix,Value)=0.0handles.y=

14、y;elsehandles.y=handles.y+y;endhandles.inputtype=3;guidata(hObject,handles);plot(handles.axes1,handles.y);xlim(0 200);3.3时域分析 时域分析直接在时间域内对系统动态过程进行研究的方法。根据输出量的时 域表达式,可以分析系统的稳定性、瞬态和稳态性能。该设计中,时域分析包括峰 峰值、均值、均方值、方差的计算。MATLAB提供了 mean, std等函数,能够方便 地计算均值、方差。主要设计代码如下:function pushbutton3_Callback(hObject, ev

15、entdata, handles)Fs=str2double(get(handles.samplefre,String);set(handles.VPP,String,(max(handles.y)-min(handles.y);set(handles.ave,String,mean(handles.y);set( handles.RMS,S tring,mean(handles.y.2);set( handles.var,S tring,s td(handles.y厂2);3.4频域分析频域分析包括幅值谱、相位谱等的计算,结果以图形显示出来。频域分析需 要作Fourier变换,MATLAB提供了 fft函数,能够方便地实现快速Fourier变换 算法。本次设计中,除了能从图形看出频率,幅值等信息,也可以用坐标捕获来获 取坐标值。主要代码如下:%频域分析代码6:function pushbutt

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号