matlab gui 频谱分析仪.doc_第1页
matlab gui 频谱分析仪.doc_第2页
matlab gui 频谱分析仪.doc_第3页
matlab gui 频谱分析仪.doc_第4页
matlab gui 频谱分析仪.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习资料收集于网络,仅供参考 频谱分析仪实验报告 一:频谱分析仪的功能:(1) 音频信号信号输入。输入的途径包括从声卡、从WAV文件输入、从信号发生器输入; (2) 信号波形分析。包括幅值、频率、周期、相位的估计,并计算统计量的峰值、均值、均方值和方差等信息;GUI界面见附页(3) 信号频谱分析。频率、周期的估计,图形显示幅值谱、相位谱和功率谱等信息的曲线。 二:实验原理1. 时域抽样 时域抽样定理给出了连续信号抽样过程中信号不失真的约束条件:对于基带信号,信号抽样频率 大于等于2倍的信号最高频率。时域抽样是把连续信号 变成适于数字系统处理的离散信号。2.快速傅里叶变换(FFT) 对有限长序列可以利用离散傅立叶变换(DFT)进行分析。DFT不但可以很好的反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上进行分析。MATLAB为计算数据的离散快速傅立叶变换,提供了一系列丰富的数学函数,本设计用的为FFT3.波形分析原理(1)频率(周期)检测 对周期信号来说,可以用时域波形分析来确定信号的周期,也就是计算相邻的两个信号波峰的时间差、或过零点的时间差。这里采用过零点(ti)的时间差T(周期)。频率即为f = 1/T,由于能够求得多个T值(ti有多个),故采用它们的平均值作为周期的估计值。 (2)幅值检测 在一个周期内,求出信号最大值ymax与最小值ymin的差的一半,即A = (ymax - ymin)/2,同样,也会求出多个A值,但第1个A值对应的ymax和ymin不是在一个周期内搜索得到的,故以除第1个以外的A值的平均作为幅值的估计值。 (3)相位检测 采用过零法,即通过判断与同频零相位信号过零点时刻,计算其时间差,然后换成相应的相位差。=2(1-ti/T),x表示x的小数部分,同样,以的平均值作为相位的估计值。 (4) 峰值P的估计 在样本数据x中找出最大值与最小值,其差值为双峰值,双峰值的一半即为峰值。 P=max(yi)-min(yi)/2 (5)均值,均方值,方差,均有计算所得4,频谱图 为了直观地表示信号的频率特性,工程上常常将Fourier变换的结果用图形的方式表示,即频谱图三:程序设计1、三种信号的输入方式(1)声卡的输入 这里声卡输入是指由麦克风录音得到的声音信号的输入,MATLAB提供了wavrecord函数,该函数能够实现读取麦克风录音信号。以下是“开始录音”按钮的回调函数内容。获得FS的值Fs=str2double(get(findobj(Tag,samplerate),String);根据设定的时间长度进行录音,保存在handles中,保存为double型handles.y=wavrecord(str2double(get(findobj(Tag,recordtime),String)*Fs, Fs,double); handles.inputtype=1;保存handles结构体,使得handles.y在别的函数中也能使用guidata(hObject,handles);绘制波形图plot(handles.time,handles.y);title(WAVE);将所采样的点数保存在“采样点数”中ysize=size(handles.y) set(handles.samplenum,String,num2str(ysize(1);(2)WAV文件输入 MATLAB提供了wavread函数,该函数能够方便的打开并读取WAV文件中的声音信息,并且同时读取所有声道。下面是“打开文件”按钮回调函数的部分代码。绘制和保存采样点数代码与声卡输入的类似从WAV文件中读取的声音信息并临时存放到temp变量中temp = wavread(get(findobj(Tag,filename),String);获得所选择的声道channel=str2double(get(handles.channel,String);将指定声道的信息存放到handles.y中handles.y=temp(:,channel);(3)信号发生器 MATLAB有产生标准信号的函数,如sawtooth能够产生三角波或钜齿波,首先利用get函数获得波形soundtype,频率frequency,幅值amp和相位phase,然后是以下代码。 switch soundtype case 1 正弦波 y=amp*sin(2*pi*x*frequency+phase); case 2 方波 y=amp*sign(sin(2*pi*x*frequency+phase); case 3 三角波 y=amp*sawtooth(2*pi*x*frequency+phase,0.5); case 4 锯齿波 y=amp*sawtooth(2*pi*x*frequency+phase); case 5 白噪声 y=amp*(2*rand(size(x)-1); otherwise errordlg(Illegal wave type,Choose errer);endif get(handles.add,Value)=0.0 handles.y=y; 没有混叠else 有混叠 handles.y=handles.y+y;end2、时域分析 MATLAB提供了mean,std函数,能够方便地计算均值、标准差。下面是过零检测之后的代码,其中T为过零检测得到的周期(向量),amp为过零检测得到的幅值(向量),n为过零点数。 freq=Fs/mean(T); %计算频率 set(handles.outt,String,1/freq); %输出周期估计值 set(handles.outfreq,String,num2str(freq); %输出频率估计值 %计算并输出幅值,以幅值均值作为其估计 set(handles.outamp,String,num2str(mean(amp(2:n-1); %将待分析信号的过零点与标准信号的过零点相比较,从而得出相位 phase=2*pi*(1-(ti(1:n-1)-1)./T+floor(ti(1:n-1)-1)./T); set(handles.outphase,String,num2str(mean(phase); %最大值与最小值的一半即为峰值 set(handles.outpeak,String,(max(handles.y(from:to)-min(handles.y(from:to)/2); %from,to即是界面中的“从第from点到第to点” %计算并输出均值 set(handles.outmean,String,mean(handles.y(from:to); %计算并输出均方值 set(handles.outmeansquare,String,mean(handles.y(from:to).2); %计算半输出方差 set(handles.outs,String,std(handles.y(from:to)2);3.频域分析频域分析需要作Fourier变换,MATLAB提供了fft函数,能够方便地实现快速Fourier变换算法。以下代码省去了从界面中获得from、to、Fs的部分,也省去了绘图后设置横、纵坐标轴的名称的部分。 %首先提取出待分析的样本,将其存入sample中 sample=handles.y(from:to); %生成离散化的频率点,以采样频率作为离散化的间隔 f=linspace(0,Fs/2,(to-from+1)/2); %对样本作快速Fourier变换,变换结果存入Y中 Y=fft(sample,to-from+1); C,I=max(abs(Y); %获得幅值最大的点及其所对应的下标值I %则f(I)为最大的幅值所对应的频率,即信号频率的估计值 set(handles.foutt,String,1/f(I); %计算并输出周期的估计值 set(handles.foutfreq,String,f(I); %输出频率的估计值 Y=Y(1:(to-from+1)/2); %为与f对应,只取Y的前半部分 plot(handles.plot1,f,2*sqrt(Y.*conj(Y); %绘制幅值谱曲线 plot(handles.plot2,f,angle(Y); %绘制相位谱曲线 plot(handles.plot3,f,real(Y); %绘制实频谱曲线 plot(handles.plot4,f,imag(Y); %绘制虚频谱曲线 plot(handles.plot5,f,abs(Y).2); %绘制功率谱曲线 四、软件运行及结果分析 1. 标准正弦信号的频率估计 用信号发生器生成标准正弦信号,然后分别进行时域分析与频域分析,得到的结果如图 4所示。从图中可以看出,时域分析的结果为f = 400Hz,频域分析的结果为f = 400.37Hz,而标准信号的频率为400Hz,从而对于标准信号时域分析的精度远高于频域分析的精度。2. 非标准正弦信号的频率估计 先生生幅值600的标准正弦信号,再将幅值300的白噪声信号与其混迭,对最终得到的信号进行时域分析与频域分析,结果如图 5所示,可以看出,时域分析的结果为f = 540.51Hz,频域分析的结果为f = 626.94Hz,而标准信号的频率为600Hz,从而对于带噪声的正弦信号频域分析的精度远高于时域分析的精度.五、小结 通过零检测的方式对于带噪声的信号既容易造成“误判”,也容易造成“漏判”,且噪声信号越明显,“误判”与“漏判”的可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论