实验八 音频频谱分析仪设计与实现Word格式文档下载.docx

上传人:b****6 文档编号:21663327 上传时间:2023-01-31 格式:DOCX 页数:20 大小:577.03KB
下载 相关 举报
实验八 音频频谱分析仪设计与实现Word格式文档下载.docx_第1页
第1页 / 共20页
实验八 音频频谱分析仪设计与实现Word格式文档下载.docx_第2页
第2页 / 共20页
实验八 音频频谱分析仪设计与实现Word格式文档下载.docx_第3页
第3页 / 共20页
实验八 音频频谱分析仪设计与实现Word格式文档下载.docx_第4页
第4页 / 共20页
实验八 音频频谱分析仪设计与实现Word格式文档下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

实验八 音频频谱分析仪设计与实现Word格式文档下载.docx

《实验八 音频频谱分析仪设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验八 音频频谱分析仪设计与实现Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。

实验八 音频频谱分析仪设计与实现Word格式文档下载.docx

5、频谱分析原理

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

(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]

6、模块划分

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

2、实验内容

设计一个音频频谱分析仪,功能包括:

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

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

均方值和方差的计算。

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

三、实验结果

(1)根据实验提示,设计如下界面

(2)通过声卡输入,分析声音频谱程序和界面如下

开始录音callback函数

functionluyin_pushbutton_Callback(hObject,eventdata,handles)

%hObjecthandletoluyin_pushbutton(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

handles.inputtype=1;

%用于点选控制

Fs=str2double(get(findobj('

Tag'

'

samplerate'

),'

string'

));

handles.y=wavrecord(str2double(get(handles.recordtime,'

))*Fs,Fs);

guidata(hObject,handles);

axes(handles.signal_axes)

plot(handles.y);

title('

WAVE'

);

ysize=size(handles.y);

set(handles.samplenum,'

num2str(ysize

(1)));

%输出采样点数

(3)通过加载wav输入信号,分析声音频谱程序和界面如下

打开文件callback函数

functionopenfile_pushbutton_Callback(hObject,eventdata,handles)

%hObjecthandletoopenfile_pushbutton(seeGCBO)

temp=wavread(get(findobj('

filename'

String'

channel=str2double(get(handles.channel,'

handles.y=temp(:

channel);

(4)通过信号发生器生成正弦波和白噪声混叠波形如下

(5)通过信号发生器生成方波和白噪声混叠波形如下

(6)通过信号发生器生成三角波和白噪声混叠波形如下

(7)通过信号发生器生成锯齿波和白噪声混叠波形如下

(4)~(7)中重要callback函数

生成波形callback函数

functionshengchengboxing_Callback(hObject,eventdata,handles)

%hObjecthandletoshengchengboxing(seeGCBO)

N=str2double(get(findobj('

samplenum'

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

soundtype=get(handles.waveform,'

Value'

frequency=str2double(get(handles.pinlvF,'

amp=str2double(get(handles.fuzhiA,'

phase=str2double(get(handles.xiangweiQ,'

switchsoundtype%波形选择

case1

y=amp*sin(2*pi*x*frequency+phase);

case2

y=amp*sign(sin(2*pi*x*frequency+phase));

case3

y=amp*sawtooth(2*pi*x*frequency+phase,0.5);

case4

y=amp*sawtooth(2*pi*x*frequency+phase);

case5

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

otherwise

errordlg('

Illegalwavetype'

Chooseerrer'

end

ifget(handles.add,'

)==0.0

handles.y=y;

else

handles.y=handles.y+y;

%波形混叠

handles.inputtype=3;

set(handles.signal_axes,'

XMinorTick'

on'

时域分析callback函数

functionfrequencydomain_pushbutton_Callback(hObject,eventdata,handles)

%hObjecthandletofrequencydomain_pushbutton(seeGCBO)

ifhandles.inputtype==0

msgbox('

Nowaveexist!

Pleasechooseainputtype!

'

return;

from=str2double(get(handles.startpoint,'

to=str2double(get(handles.endpoint,'

sample=handles.y(from:

to);

f=linspace(0,Fs/2,(to-from+1)/2);

Y=fft(sample,to-from+1);

[C,I]=max(abs(Y));

set(handles.period_of_F_output,'

1/f(I));

set(handles.frequency_of_F_output,'

f(I));

Y=Y(1:

(to-from+1)/2);

plot(handles.frequency_axes,f,2*sqrt(Y.*conj(Y)));

plot(handles.phase_axes,f,angle(Y));

plot(handles.real_axes,f,real(Y));

plot(handles.imagin_axes,f,imag(Y));

plot(handles.power_axes,f,abs(Y).^2);

%---Executesonbuttonpressintimedomain_pushbutton.

functiontimedomain_pushbutton_Callback(hObject,eventdata,handles)

%hObjecthandletotimedomain_pushbutton(seeGCBO)

%guolingjiance

n=1;

ymax=max([handles.y

(1)handles.y

(2)]);

ymin=min([handles.y

(1)handles.y

(2)]);

iffrom<

1||to-from<

5;

Errorrange!

fori=from+2:

to-1;

ifhandles.y(i-1)<

0&

&

handles.y(i-2)<

handles.y(i)>

=0&

handles.y(i+1)>

ifhandles.y(i)==0

ti(n)=i;

else

ti(n)=i-handles.y(i)/(handles.y(i)-handles.y(i-1));

%x1=i-1;

%y1=handles.y(i-1);

%x2=i;

%y2=handles.y(i);

%a=handles.y(i)-handles.y(i-1);

%b=a*x1-y1;

%ti(n)=b/a;

end

amp(n)=(ymax-ymin)/2;

ymax=0;

ymin=0;

n=n+1;

ifymax<

handles.y(i)

ymax=handles.y(i);

ifymin>

ymin=handles.y(i);

n=n-1;

%freqenceandperiodicity

fori=1:

n-1

T(i)=ti(i+1)-ti(i);

freq=Fs/mean(T);

set(handles.period_output,'

1/freq);

set(handles.frequency_output,'

num2str(freq));

%amplitude

set(handles.A_output,'

num2str(mean(amp(2:

n-1))));

%phase

phase=2*pi*(1-(ti(1:

n-1)-1)./T+floor((ti(1:

n-1)-1)./T));

set(handles.xiangweQ_output,'

num2str(mean(phase)));

%peak

set(handles.peakvalue_output,'

(max(handles.y(from:

to))-min(handles.y(from:

to)))/2);

%mean

set(handles.averagevalue_output,'

mean(handles.y(from:

to)));

%meansquare

set(handles.squarevalue_output,'

to).^2));

%s

set(handles.fanfcha_output,'

std(handles.y(from:

to))^2);

频域分析callback函数

主函数的openingFcn函数

functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)

%Thisfunctionhasnooutputargs,seeOutputFcn.

%hObjecthandletofigure

%varargincommandlineargumentstountitled(seeVARARGIN)

handles.inputtype=0;

%

xlabel(handles.frequency_axes,'

freqency(Hz)'

%横坐标显示

xlabel(handles.phase_axes,'

xlabel(handles.real_axes,'

xlabel(handles.imagin_axes,'

xlabel(handles.power_axes,'

%Choosedefaultcommandlineoutputforuntitled

handles.output=hObject;

%Updatehandlesstructure

guidata(hObject,handles);

%UIWAITmakesuntitledwaitforuserresponse(seeUI

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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