数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx

上传人:b****6 文档编号:17625564 上传时间:2022-12-07 格式:DOCX 页数:30 大小:523.04KB
下载 相关 举报
数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx_第1页
第1页 / 共30页
数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx_第2页
第2页 / 共30页
数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx_第3页
第3页 / 共30页
数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx_第4页
第4页 / 共30页
数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx

《数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。

数字信号处理实验8音频频谱分析仪设计与实现Word文件下载.docx

其中tin表示第n个过零点,yi为第i个采样点的值,Fs为采样频率。

2、数字信号统计量估计

(1)峰值P的估计

在样本数据x中找出最大值与最小值,其差值为双峰值,双峰值的一半即为峰值。

P=0.5[max(yi)-min(yi)]

(2)均值估计

式中,N为样本容量,下同。

(3)均方值估计

(4)方差估计

2、频谱分析原理

时域分析只能反映信号的幅值随时间的变化情况,除单频率分量的简单波形外,很难明确提示信号的频率组成和各频率分量大小,而频谱分析能很好的解决此问题。

(1)DFT与FFT

对于给定的时域信号y,可以通过Fourier变换得到频域信息Y。

Y可按下式计算

式中,N为样本容量,Δt=1/Fs为采样间隔。

采样信号的频谱是一个连续的频谱,不可能计算出所有的点的值,故采用离散Fourier变换(DFT),即

式中,Δf=Fs/N。

但上式的计算效率很低,因为有大量的指数(等价于三角函数)运算,故实际中多采用快速Fourier变换(FFT)。

其原理即是将重复的三角函数算计的中间结果保存起来,以减少重复三角函数计算带来的时间浪费。

由于三角函数计算的重复量相当大,故FFT能极大地提高运算效率。

(2)频率、周期的估计

对于Y(kΔf),如果当kΔf=时,Y(kΔf)取最大值,则为频率的估计值,由于采样间隔的误差,也存在误差,其误差最大为Δf/2。

周期T=1/f。

从原理上可以看出,如果在标准信号中混有噪声,用上述方法仍能够精确地估计出原标准信号的频率和周期,这个将在下一章做出验证

3、频谱图

为了直观地表示信号的频率特性,工程上常常将Fourier变换的结果用图形的方式表示,即频谱图。

以频率f为横坐标,|Y(f)|为纵坐标,可以得到幅值谱;

以频率f为横坐标,argY(f)为纵坐标,可以得到相位谱;

以频率f为横坐标,ReY(f)为纵坐标,可以得到实频谱;

以频率f为横坐标,ImY(f)为纵坐标,可以得到虚频谱。

根据采样定理,只有频率不超过Fs/2的信号才能被正确采集,即Fourier变换的结果中频率大于Fs/2的部分是不正确的部分,故不在频谱图中显示。

即横坐标f∈[0,Fs/2]

4、模块划分

模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求。

根据人类解决一般问题的经验,如果一个问题由两个问题组合而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度之和,也就是说把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。

这就是模块化的根据。

在模块划分时应遵循如下规则:

改进软件结构提高模块独立性;

模块规模应该适中;

深度、宽度、扇出和扇入都应适当;

模块的作用域应该在控制域之内;

力争降低模块接口的复杂程度;

设计单入口单出口的模块;

模块功能应该可以预测。

3、实验要求:

参考以上原理,查阅相关资料,构建交互界面,设计一个音频频谱分析仪,实现一下功能:

(1)音频信号信号输入,从声卡输入、从WAV文件输入、从标准信号发生器输入;

(2)信号波形分析,包括幅值、频率、周期、相位的估计,以及统计量峰值、均值、均方值和方差的计算;

(3)信号频谱分析,频率、周期的估计,图形显示幅值谱、相位谱、实频谱、虚频谱和功率谱的曲线。

4、实验界面及程序

程序:

functionvarargout=yinpin(varargin)

%YINPINM-fileforyinpin.fig

%YINPIN,byitself,createsanewYINPINorraisestheexisting

%singleton*.

%

%H=YINPINreturnsthehandletoanewYINPINorthehandleto

%theexistingsingleton*.

%YINPIN('

CALLBACK'

hObject,eventData,handles,...)callsthelocal

%functionnamedCALLBACKinYINPIN.Mwiththegiveninputarguments.

Property'

'

Value'

...)createsanewYINPINorraisesthe

%existingsingleton*.Startingfromtheleft,propertyvaluepairsare

%appliedtotheGUIbeforeyinpin_OpeningFunctiongetscalled.An

%unrecognizedpropertynameorinvalidvaluemakespropertyapplication

%stop.Allinputsarepassedtoyinpin_OpeningFcnviavarargin.

%*SeeGUIOptionsonGUIDE'

sToolsmenu.Choose"

GUIallowsonlyone

%instancetorun(singleton)"

.

%Seealso:

GUIDE,GUIDATA,GUIHANDLES

%Edittheabovetexttomodifytheresponsetohelpyinpin

%LastModifiedbyGUIDEv2.507-Nov-201217:

08:

53

%Begininitializationcode-DONOTEDIT

gui_Singleton=1;

gui_State=struct('

gui_Name'

mfilename,...

'

gui_Singleton'

gui_Singleton,...

gui_OpeningFcn'

@yinpin_OpeningFcn,...

gui_OutputFcn'

@yinpin_OutputFcn,...

gui_LayoutFcn'

[],...

gui_Callback'

[]);

ifnargin&

&

ischar(varargin{1})

gui_State.gui_Callback=str2func(varargin{1});

end

ifnargout

[varargout{1:

nargout}]=gui_mainfcn(gui_State,varargin{:

});

else

gui_mainfcn(gui_State,varargin{:

%Endinitializationcode-DONOTEDIT

%---Executesjustbeforeyinpinismadevisible.

functionyinpin_OpeningFcn(hObject,eventdata,handles,varargin)

%Thisfunctionhasnooutputargs,seeOutputFcn.

%hObjecthandletofigure

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

%varargincommandlineargumentstoyinpin(seeVARARGIN)

%Choosedefaultcommandlineoutputforyinpin

handles.output=hObject;

%Updatehandlesstructure

guidata(hObject,handles);

%UIWAITmakesyinpinwaitforuserresponse(seeUIRESUME)

%uiwait(handles.figure1);

%---Outputsfromthisfunctionarereturnedtothecommandline.

functionvarargout=yinpin_OutputFcn(hObject,eventdata,handles)

%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);

%Getdefaultcommandlineoutputfromhandlesstructure

varargout{1}=handles.output;

%---Executesduringobjectcreation,aftersettingallproperties.

functionedit1_CreateFcn(hObject,eventdata,handles)

%hObjecthandletoedit1(seeGCBO)

%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled

%Hint:

editcontrolsusuallyhaveawhitebackgroundonWindows.

%SeeISPCandCOMPUTER.

ifispc&

isequal(get(hObject,'

BackgroundColor'

),get(0,'

defaultUicontrolBackgroundColor'

))

set(hObject,'

white'

);

functioncaiyangpinlv_CreateFcn(hObject,eventdata,handles)

%hObjecthandletocaiyangpinlv(seeGCBO)

functioncaiyangdianshu_CreateFcn(hObject,eventdata,handles)

%hObjecthandletocaiyangdianshu(seeGCBO)

%---Executesonbuttonpressinluyin.

functionluyin_Callback(hObject,eventdata,handles)

%hObjecthandletoluyin(seeGCBO)

get(hObject,'

)returnstogglestateofluyin

set(handles.luyin,'

value'

1);

set(handles.wavfile,'

0);

set(handles.xinhaofasheng,'

h=findobj('

Tag'

recordtime'

set(h,'

enable'

on'

kaishiluyin'

wavname'

off'

liulan'

inwave'

infudu'

infre'

inphase'

mix'

shengchengboxing'

%---Executesonbuttonpressinwavfile.

functionwavfile_Callback(hObject,eventdata,handles)

%hObjecthandletowavfile(seeGCBO)

)returnstogglestateofwavfile

%---Executesonbuttonpressinxinhaofasheng.

functionxinhaofasheng_Callback(hObject,eventdata,handles)

%hObjecthandletoxinhaofasheng(seeGCBO)

)returnstogglestateofxinhaofasheng

functionrecordtime_CreateFcn(hObject,eventdata,handles)

%hObjecthandletorecordtime(seeGCBO)

%---Executesonbuttonpressin

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

当前位置:首页 > 高中教育 > 理化生

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

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