matlab频谱分析仪Word文件下载.docx

上传人:b****3 文档编号:15143101 上传时间:2022-10-28 格式:DOCX 页数:12 大小:524.12KB
下载 相关 举报
matlab频谱分析仪Word文件下载.docx_第1页
第1页 / 共12页
matlab频谱分析仪Word文件下载.docx_第2页
第2页 / 共12页
matlab频谱分析仪Word文件下载.docx_第3页
第3页 / 共12页
matlab频谱分析仪Word文件下载.docx_第4页
第4页 / 共12页
matlab频谱分析仪Word文件下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

matlab频谱分析仪Word文件下载.docx

《matlab频谱分析仪Word文件下载.docx》由会员分享,可在线阅读,更多相关《matlab频谱分析仪Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。

matlab频谱分析仪Word文件下载.docx

3.2信号输入 

6

3.2.1选择信号输入 

3.2.2声卡输入 

7

3.2.3读取wav文件 

3.2.4信号发生器输入 

3.3时域分析 

8

3.4频域分析 

9

3.5仿真 

10

3.5.1声卡输入 

3.5.2读取wav文件 

3.5.3信号发生器 

11

4存在的问题 

15

5致谢 

参考文献 

1概述

MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件。

可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。

MATLAB自带了强大的GUl工具[1]。

在本文中,将利用MATLAB的GUI工具,设计出数字频谱分析仪。

频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量,可用以测量放大器和滤波器等电路系统的某些参数,是一种多用途的电子测量仪器。

它又可称为频域示波器、跟踪示波器、分析示波器、谐波分析器、频率特性分析仪或傅里叶分析仪等。

现代频谱分析仪能以模拟方式或数字方式显示分析结果,能分析1赫兹以下的甚低频到亚毫米波段的全部无线电频段的电信号[2]。

目前已经有许多较成熟的频谱分析软件,如SpectraLAB、RSAVu、dBFA等[3]。

本文将给出的则是通过MATLAB软件实现的基于FFT的数字频谱分析仪。

FFT(FastFourierTransformation),即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步[4]。

通过此次设计,能进一步掌握MATLAB软件开发过程的基本理论、基本知识和基本技能,熟悉基于MATLAB平台的若干信号处理系统开发及调试方法,且成本低,易于实现,容易修改,并可以进行仿真。

该设计的进行可以为我们以后的学习工作奠定一定的基础。

2技术路线

本次设计的频谱分析仪模块划分如图1所示:

图1 

频谱分析仪模块划分

3实现方法

3.1搭建GUI界面

此次设计搭建的GUI见面如图2所示:

图2 

GUI界面

最上方为标题区,用于显示软件标题等信息。

再往下是信号输入区,首先应输入采样频率和采样点。

信号有3种输入方式,包括声卡输入,读取WAV文件和信号发生器输入。

在信号发生器中加入了信号叠加选项,从而可以将产生的信号与原有的信号进行混迭。

只有当某个单选框被选中时才允许使用对应的输入框、按钮等。

输入区右边为分析区,除了对wav文件进行播放外,还可以对信号进行时域分析和频域分析,该软件的核心代码都在这两个按钮的回调函数中。

再下方为分析结果区,用于显示波形基本参数与统计量的计算结果,

Axes1为波形显示区,在录音结束、打开WAV文件成功或者信号发生器生成波形时会更新显示。

Axes2为频谱图显示区,用于显示各种频谱的谱线,在点击频域分析后会更新显示。

点击频谱类型可以显示不同的频谱图。

本次设计提供了幅频特性分析和相频特性分析。

3.2信号输入

3.2.1选择信号输入

开始使用频谱分析仪时,除了需要设定采样频率和采样点数外,还需要选择信号输入方式,本次设计提供三种输入,分别是:

声卡录音,读取wav文件和信号发生器。

其代码如下(仅以选择声卡输入为例):

functionrecord_Callback(hObject,eventdata,handles)

set(handles.record,'

value'

1);

set(handles.wavfile,'

0);

set(handles.wave,'

h=findobj('

Tag'

'

recordtime'

);

set(h,'

enable'

on'

startrecord'

wavname'

off'

openfile'

inwave'

inamp'

infre'

inpha'

mix'

wavemake'

当选择了一种输入方式之后,另外两种输入方式将不能使用。

3.2.2声卡输入

这里声卡输入是指由麦克风录音得到的声音信号的输入,MATLAB提供了wavrecord函数,该函数能够实现读取麦克风录音信号。

声卡输入的主要代码如下所示[5]:

functionstartrecord_Callback(hObject,eventdata,handles)

Fs=str2double(get(handles.samplefre,'

String'

));

N=str2double(get(handles.recordtime,'

))*Fs;

handles.y=wavrecord(N,Fs,'

double'

handles.inputtype=1;

guidata(hObject,handles);

plot(handles.axes1,handles.y);

ysize=size(handles.y);

set(handles.samplenum,'

num2str(ysize

(1)));

3.2.3读取wav文件

MATLAB提供了wavread函数,该函数能够方便的打开并读取WAV文件中的声音信息。

其代码如下:

functionopenfile_Callback(hObject,eventdata,handles)

[filename,filepath]=uigetfile('

*.wav'

wavfile'

set(handles.wavname,'

string'

filename);

[handles.y,Fs,bit]=wavread(filename);

handles.inputtype=2;

plot(handles.axes1,(1:

length(handles.y))/Fs,handles.y);

set(handles.samplefre,'

Fs);

3.2.4信号发生器输入

MATLAB可以产生标准信号,如sin能够产生正弦波,首先利用get函数获得波形,频率f,幅值a和相位p,然后判断是否有信号叠加,若无叠加,则直接生成信号波形,如有叠加,则进行信号混叠。

functionwavemake_Callback(hObject,eventdata,handles)

N=str2double(get(handles.samplenum,'

x=linspace(0,N/Fs,N);

t=get(handles.inwave,'

Value'

f=str2double(get(handles.infre,'

a=str2double(get(handles.inamp,'

p=str2double(get(handles.inpha,'

switcht

case1

y=a*sin(2*pi*x*f+p);

case2

y=a*sign(sin(2*pi*x*f+p));

case3

y=a*sawtooth(2*pi*x*f+p,0.5);

case4

y=a*sawtooth(2*pi*x*f+p);

case5

y=a*(2*rand(size(x))-1);

end

ifget(handles.mix,'

)==0.0

handles.y=y;

else

handles.y=handles.y+y;

handles.inputtype=3;

xlim([0200]);

3.3时域分析

时域分析直接在时间域内对系统动态过程进行研究的方法。

根据输出量的时域表达式,可以分析系统的稳定性、瞬态和稳态性能。

该设计中,时域分析包括峰峰值、均值、均方值、方差的计算。

MATLAB提供了mean,std等函数,能够方便地计算均值、方差。

主要设计代码如下:

functionpushbutton3_Callback(hObject,eventdata,handles)

set(handles.VPP,'

(max(handles.y)-min(handles.y)));

set(handles.ave,'

mean(handles.y));

set(handles.RMS,'

mean(handles.y.^2));

set(handles.var,'

std(handles.y)^2);

3.4频域分析

频域分析包括幅值谱、相位谱等的计算,结果以图形显示出来。

频域分析需要作Fourier变换,MATLAB提供了fft函数,能够方便地实现快速Four

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1