音频频谱分析仪设计
- 格式:docx
- 大小:530.13 KB
- 文档页数:18
DN6000实时音频频谱分析仪
肖和祥
【期刊名称】《电声技术》
【年(卷),期】1998(000)004
【摘要】DN6000实时音频频谱分析仪肖和祥英国KlarkTeknik公司的DN6000采用了的DSP(数字信号处理)技术。
能提供超级的、高分辨率的频谱/时间分析功能。
在信号处理领域中,DN6000的灵活适应性、高质量和可靠性,使其处在世界领先地位。
DN60...
【总页数】1页(P48)
【作者】肖和祥
【作者单位】无
【正文语种】中文
【中图分类】TN911.72
【相关文献】
1.显示实时RF的泰克新型手持式实时频谱分析仪 [J], 泰克公司
2.泰克针对实时RF应用推出中端实时频谱分析仪 [J], 郭晶
3.显示实时RF的泰克新型手持式实时频谱分析仪 [J],
4.泰克新型中端实时频谱分析仪提供实时RF技术 [J],
5.频谱分析仪产品系列——泰克实时频谱分析仪为新兴RF技术提供完整的测量套件 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。
频谱分析实验报告频谱分析实验报告引言:频谱分析是一种用于研究信号频谱特性的方法,广泛应用于通信、音频处理、无线电等领域。
本实验旨在通过实际操作和数据分析,探索频谱分析的原理和应用。
实验设备与步骤:本次实验使用了频谱分析仪、信号发生器和电缆等设备。
具体步骤如下:1. 连接设备:将信号发生器通过电缆连接到频谱分析仪的输入端口。
2. 设置参数:根据实验要求,设置信号发生器的频率、幅度和波形等参数,并将频谱分析仪的参考电平和分辨率带宽调整到合适的范围。
3. 采集数据:启动频谱分析仪,开始采集信号数据。
可以选择连续扫描或单次扫描模式,并设置合适的时间窗口。
4. 数据分析:通过频谱分析仪提供的界面和功能,对采集到的数据进行分析和处理。
可以查看频谱图、功率谱密度图等,了解信号的频谱特性。
实验结果与讨论:通过实验操作和数据分析,我们得到了以下结果和结论。
1. 频谱分析原理:频谱分析仪通过将信号转换为频谱图来展示信号在不同频率上的能量分布情况。
频谱图通常以频率为横轴,幅度或功率为纵轴,可以直观地反映信号的频谱特性。
2. 不同信号的频谱特性:我们使用了不同频率和波形的信号进行实验,观察其在频谱图上的表现。
正弦波信号在频谱图上呈现出单个峰值,峰值的位置对应信号的频率。
方波信号在频谱图上则呈现出多个峰值,峰值的位置和幅度反映了方波的频率和谐波分量。
3. 噪声信号的频谱特性:我们还进行了噪声信号的频谱分析。
噪声信号在频谱图上呈现为连续的能量分布,没有明显的峰值。
通过分析噪声信号的功率谱密度图,可以了解噪声信号在不同频率上的能量分布情况。
4. 频谱分析的应用:频谱分析在通信和音频处理领域有着广泛的应用。
通过频谱分析,可以帮助我们了解信号的频率成分、噪声特性以及信号处理器件的性能等。
在无线电领域,频谱分析还可用于频段分配、干扰监测等工作。
结论:通过本次实验,我们深入了解了频谱分析的原理和应用。
频谱分析可以帮助我们理解信号的频谱特性,对于信号处理和通信系统设计具有重要意义。
R&S®FSL频谱分析仪重量极轻, 高性能,结构紧凑测试与测量产品手册|5.1罗德与施瓦茨R&S®FSL频谱分析仪1¸FSL 是在该级别仪器中具有最宽的解调带宽和最佳 RF 特性的全功能频谱分析仪。
2R&S®FSL 频谱分析仪一览¸FSL 是一台重量极轻且结构紧凑的分析仪,适合在开发、维护和生产中的大量应用中使用。
尽管它体积很小,却提供了高端仪器才具有的大量功能,因而具有出色的性价比。
¸FSL 是在该级别中唯一的一种具有高达6 GHz 的跟踪源的仪器,可以对具有28 MHz 带宽的信号进行I/Q 解调。
除此之外, ¸FSL 的工作频率范围可达18 GHz, 适用于微波频段高端功能也体现在其操作特点上。
与高端频谱仪一样,¸FSL 的主要功能可直接通过固定分配的功能键进行访问,而附加功能可通过软键和表格进行访问。
这样就缩短了新用户学习使用仪器的时间。
紧凑的设计、极轻的重量以及可选的内置电池,使得¸FSL 适合于移动使用。
¸FSL 具有独特的即插即用升级能力。
所有选件可以不打开仪器而添加进来。
主要特点频率范围9 kHz 至3 GHz/6 GHz/18 GHz 3 GHz/6 GHz 产品可选配跟踪源同类产品中最佳射频性能同类产品中最大I/Q 解调带宽28 MHz 即使在微波频段也具有很高的测量精度由于全数字运算而具有很高的滤波器精度结构坚固而紧凑便携提手和很轻的重量(<8 kg/18 lbs )可选择电池供电操作功能广泛,操作简单易于在现场升级J J J J J J J J J J J 现在,您在购买频谱分析仪时无需再在价格和功能二者之间进行折衷了。
您不必增加预算,就能购买到具有高端性能的仪器 — ¸FSL 。
R&S®FSL频谱分析仪优势及主要特点同类产品中优异的性能从9 kHz到18 GHz连续射频范围和28 MHz解调带宽即是在微波频段也有低的测量不确定度灵活快速的用于生产高测量速度节省了时间提高了效率通过LAN或IEC/IEEE总线进行符合SCPI标准的远程控制用于实验室研发极高的性价比满足信号分析的通用目的对于各种无线/数字蜂窝标准具有广泛的测量功效轻便紧凑的结构,便于现场安装维护和操作尺寸小重量轻,易于便携可选内部电池实现无电源线操作支持NRP-Zxx探头进行功率测量接口多样,升级简便所有选件的安装都可以不打开仪器附加接口扩展了FSL的应用范围功能广泛-易于操作拥有广泛的测量功能,具备高端频谱分析仪的特点内置测量程序和多种可选择的固件选件JJJJJJJJJJJJJJ罗德与施瓦茨R&S®FSL频谱分析仪3该级别中性能最为优异的仪器偏离载波10 kHz处的相位噪声典型值为-103 dBc (1 Hz),三阶互调截止点典型值为+18 dBm, 10 Hz 至10 MHz的中频带宽范围,以及-162 dBm的平均显示噪声电平 (DANL),所有这些都使¸FSL能够与高端分析仪相匹敌。
频谱分析仪操作流程频谱分析仪是一种用于测量和分析信号频谱特性的仪器。
它能够帮助工程师们深入了解信号的频域特性,从而在电子通信、音频处理、无线电、无线电频段研究等领域中发挥重要作用。
本文将介绍频谱分析仪的基本操作流程,帮助读者快速上手。
1. 连接设备首先,确保频谱分析仪和待测信号源正确连接。
通过信号源输出端口与频谱分析仪的输入端口相连接,使用合适的连接线缆确保稳定可靠的信号传输。
同时,检查电源线是否连接正常。
2. 打开频谱分析仪通过按下电源按钮开启频谱分析仪。
在启动过程中,仪器会进行自检,并显示相关启动信息。
确保仪器运行正常后,等待进入工作状态。
3. 设置参数根据实际需求,设置频谱分析仪的参数。
这些参数可能包括中心频率、带宽、时钟速率、分析窗口类型等。
根据待测信号的特点,调整参数以获取所需的测试结果。
4. 选择测量模式在频谱分析仪的菜单系统中选择合适的测量模式。
常见的测量模式包括实时模式和扫描模式。
实时模式能够提供连续的频谱显示,适用于对动态信号进行实时观测。
扫描模式则能够根据特定的扫描范围获取更详细的频谱信息。
5. 开始测量确定测量模式后,点击“开始”按钮或按下相应的测量快捷键,开始进行频谱分析。
频谱分析仪会对输入信号进行采样和处理,并显示频谱结果。
根据实际需要可能需要等待一些时间来获取准确的测量数据。
6. 数据解读分析仪显示的频谱图将提供信号的频域信息。
读取并分析频谱图上的曲线、峰值、幅度等信息,对信号特征进行辨识和理解。
理解频谱图可以帮助识别信号中的峰值、杂散、干扰等。
7. 归档和报告将所测得的频谱数据归档并生成报告。
可以将数据保存到电脑硬盘或其他存储介质中,以备后续分析和复查。
同时,根据实际需要,可以生成图表、图像或报告,用于数据展示和共享。
8. 断开连接和关闭仪器在测量结束后,先断开频谱分析仪与信号源之间的连接,然后关闭仪器。
注意遵循正确的操作顺序,避免损坏设备。
以上即为频谱分析仪的基本操作流程。
频谱分析仪N9010A频谱分析仪是一种电子测量设备,用于测量电子设备的频谱特性和频率响应。
它能够将电信号的频谱信息转换为可视化的图形,帮助工程师更好地了解电路和系统的性能和特性。
N9010A是一款高功率、高性能的频谱分析仪,由美国Agilent Technologies公司设计和生产,应用广泛。
基本功能N9010A频谱分析仪具有很多基本功能,主要包括以下几个方面:1. 频谱分析频谱分析是频谱分析仪最基本的功能。
它能够将电信号转换为频谱图,图中显示出信号的频率分布和强度分布。
这个功能尤其适用于无线通讯领域,可以用来分析无线信号的频率和功率等特征。
2. 模拟信号分析除了数字信号,N9010A频谱分析仪也可以分析模拟信号,比如声音。
它可以将模拟信号转换为数字信号并显示在频谱图上,帮助工程师分析模拟信号的特征和性能。
3. 波形分析波形分析是N9010A频谱分析仪的另一个重要功能。
它可以对任意信号进行波形采集和分析,包括时域和频域分析,有助于了解信号的波形和频率特征。
技术参数除了基本的功能,N9010A频谱分析仪还有很多其他的技术参数和性能指标,如下:1. 频率范围N9010A频谱分析仪的频率范围非常广,可以覆盖从9kHz到26.5GHz的频率范围,适用于各种不同的应用场合。
2. 分辨率带宽分辨率带宽是N9010A频谱分析仪的一个关键性能指标,它影响仪器对信号的分辨率和精度。
N9010A的分辨率带宽可以从1Hz到10MHz进行设置,可以根据实际需要进行调整。
3. 动态范围动态范围是指仪器在测量过程中可以准确检测的信号强度范围。
N9010A频谱分析仪的动态范围为165dB,可以适应各种信号强度的变化。
4. 输入阻抗N9010A频谱分析仪的输入阻抗可以选择50Ω或1MΩ,用于适应不同的测量环境和需求。
应用场景N9010A频谱分析仪广泛应用于各种不同的场景,比如:1. 通讯领域N9010A频谱分析仪在通讯领域应用广泛。
频谱分析仪的原理操作应用1. 介绍频谱分析仪是一种常用的电子测试仪器,用于分析信号的频谱特征。
本文将介绍频谱分析仪的原理、操作和应用。
2. 频谱分析仪的原理频谱分析仪基于傅里叶变换原理,将信号从时域转换为频域,通过显示信号在不同频率下的幅度和相位信息,实现对信号频谱特性的分析。
2.1 傅里叶变换傅里叶变换是将一个信号从时域转换为频域的数学工具。
它将一个连续或离散的时域信号分解成不同频率分量的叠加,得到信号在频域上的表示。
2.2 快速傅里叶变换快速傅里叶变换(FFT)是一种快速计算离散傅里叶变换(DFT)的算法。
它通过降低计算复杂度,提高计算速度,广泛应用于频谱分析仪中。
3. 频谱分析仪的操作频谱分析仪的操作步骤如下:1.连接信号源:将待分析的信号源与频谱分析仪进行连接,确保接口连接正确。
2.设置参数:根据需要设置频谱分析仪的参数,包括采样率、带宽、中心频率等。
3.选择窗函数:窗函数用于减小信号频谱泄露和谱线扩展的影响,根据需要选择合适的窗函数。
4.启动分析:启动频谱分析仪,开始对信号进行频谱分析。
5.分析结果显示:频谱分析仪会将信号的频谱特征以图表的形式显示出来,包括幅度谱、相位谱等。
4. 频谱分析仪的应用频谱分析仪在各个领域都有广泛的应用,以下是几个常见的应用场景:4.1 通信领域在通信领域,频谱分析仪用于对通信信号进行分析和测试,包括调制解调、频谱占用等方面的研究。
4.2 音频领域在音频领域,频谱分析仪用于音频信号的分析和处理,可以用于音乐制作、音频调试等方面。
4.3 无线电领域在无线电领域,频谱分析仪用于无线电信号的分析和监测,可以用于无线电频段的占用情况、频率干扰等方面的研究。
4.4 电力领域在电力领域,频谱分析仪用于电力系统的故障检测和干扰分析,可以帮助发现电力设备的故障和电磁干扰源。
5. 总结本文介绍了频谱分析仪的原理、操作和应用。
频谱分析仪通过傅里叶变换将信号从时域转换为频域,并显示信号在不同频率下的幅度和相位信息,实现对信号频谱特性的分析。
信号处理实验实验八:音频频谱分析仪设计与实现一、实验名称:音频频谱分析仪设计与实现二、实验原理:MATLAB是一个数据信息和处理功能十分强大的工程实用软件,其数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令。
本实验可以用MATLAB进行音频信号频谱分析仪的设计与实现。
1、信号频率、幅值和相位估计(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的小数部分,同样,以φ的平均值作为相位的估计值。
频率、幅值和相位估计的流程如图所示。
其中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为横坐标,arg Y(f)为纵坐标,可以得到相位谱;以频率f为横坐标,Re Y(f)为纵坐标,可以得到实频谱;以频率f为横坐标,Im Y(f)为纵坐标,可以得到虚频谱。
根据采样定理,只有频率不超过Fs/2的信号才能被正确采集,即Fourier变换的结果中频率大于Fs/2的部分是不正确的部分,故不在频谱图中显示。
即横坐标f ∈[0, Fs/2]4、模块划分模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求。
根据人类解决一般问题的经验,如果一个问题由两个问题组合而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度之和,也就是说把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。
这就是模块化的根据。
在模块划分时应遵循如下规则:改进软件结构提高模块独立性;模块规模应该适中;深度、宽度、扇出和扇入都应适当;模块的作用域应该在控制域之内;力争降低模块接口的复杂程度;设计单入口单出口的模块;模块功能应该可以预测。
三、实验要求:参考以上原理,查阅相关资料,构建交互界面,设计一个音频频谱分析仪,实现一下功能:(1)音频信号信号输入,从声卡输入、从W A V文件输入、从标准信号发生器输入;(2)信号波形分析,包括幅值、频率、周期、相位的估计,以及统计量峰值、均值、均方值和方差的计算;(3)信号频谱分析,频率、周期的估计,图形显示幅值谱、相位谱、实频谱、虚频谱和功率谱的曲线。
四、实验界面及程序程序:function varargout = yinpin(varargin)% YINPIN M-file for yinpin.fig% YINPIN, by itself, creates a new YINPIN or raises the existing% singleton*.%% H = YINPIN returns the handle to a new YINPIN or the handle to% the existing singleton*.%% YINPIN('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in YINPIN.M with the given input arguments.%% YINPIN('Property','Value',...) creates a new YINPIN or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before yinpin_OpeningFunction gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to yinpin_OpeningFcn via varargin.%% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help yinpin% Last Modified by GUIDE v2.5 07-Nov-2012 17:08:53% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @yinpin_OpeningFcn, ...'gui_OutputFcn', @yinpin_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});endfunction yinpin_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = yinpin_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;function edit1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction caiyangpinlv_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction caiyangdianshu_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction luyin_Callback(hObject, eventdata, handles)set(handles.luyin,'value',1);set(handles.wavfile,'value',0);set(handles.xinhaofasheng,'value',0);h=findobj('Tag','recordtime');set(h,'enable','on');h=findobj('Tag','kaishiluyin');set(h,'enable','on');h=findobj('Tag','wavname');set(h,'enable','off');h=findobj('Tag','liulan');set(h,'enable','off');h=findobj('Tag','inwave');set(h,'enable','off');h=findobj('Tag','infudu');set(h,'enable','off');h=findobj('Tag','infre');set(h,'enable','off');h=findobj('Tag','inphase');set(h,'enable','off');h=findobj('Tag','mix');set(h,'enable','off');h=findobj('Tag','shengchengboxing');set(h,'enable','off');function wavfile_Callback(hObject, eventdata, handles)set(handles.luyin,'value',0);set(handles.wavfile,'value',1);set(handles.xinhaofasheng,'value',0);h=findobj('Tag','recordtime');set(h,'enable','off');h=findobj('Tag','kaishiluyin');set(h,'enable','off');h=findobj('Tag','wavname');set(h,'enable','on');h=findobj('Tag','liulan');set(h,'enable','on');h=findobj('Tag','inwave');set(h,'enable','off');h=findobj('Tag','infudu');set(h,'enable','off');h=findobj('Tag','infre');set(h,'enable','off');h=findobj('Tag','inphase');set(h,'enable','off');h=findobj('Tag','mix');set(h,'enable','off');h=findobj('Tag','shengchengboxing');set(h,'enable','off');function xinhaofasheng_Callback(hObject, eventdata, handles)set(handles.luyin,'value',0);set(handles.wavfile,'value',0);set(handles.xinhaofasheng,'value',1);h=findobj('Tag','recordtime');set(h,'enable','off');h=findobj('Tag','kaishiluyin');set(h,'enable','off');h=findobj('Tag','wavname');set(h,'enable','off');h=findobj('Tag','liulan');set(h,'enable','off');h=findobj('Tag','inwave');set(h,'enable','on');h=findobj('Tag','infudu');set(h,'enable','on');h=findobj('Tag','infre');set(h,'enable','on');h=findobj('Tag','inphase');set(h,'enable','on');h=findobj('Tag','mix');set(h,'enable','on');h=findobj('Tag','shengchengboxing');set(h,'enable','on');function recordtime_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction kaishiluyin_Callback(hObject, eventdata, handles)Fs=str2double(get(handles.caiyangpinlv,'String'));N=str2double(get(handles.recordtime,'String'))*Fs;handles.y=wavrecord(N, Fs,'double');handles.inputtype=1;guidata(hObject,handles);plot(handles.fenxiduixiang,handles.y);ysize=size(handles.y);set(handles.caiyangdianshu,'String',num2str(ysize(1)));function wavname_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction liulan_Callback(hObject, eventdata, handles)[filename,filepath]=uigetfile('*.wav','wavfile');set(handles.wavname,'string',filename);[handles.y,Fs,bit]=wavread(filename);handles.inputtype=2;guidata(hObject,handles);plot(handles.fenxiduixiang,(1:length(handles.y)/10)/Fs,handles.y(1:length(handles.y)/10)); ysize=size(handles.y);set(handles.caiyangdianshu,'String',num2str(ysize(1)));set(handles.caiyangpinlv,'string',Fs);function listbox2_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction inwave_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction infudu_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction infre_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction inphase_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction shengchengboxing_Callback(hObject, eventdata, handles)Fs=str2double(get(findobj('Tag','caiyangpinlv'),'String'));N=str2double(get(findobj('Tag','caiyangdianshu'),'String'));x=linspace(0,N/Fs,N);soundtype=get(handles.inwave,'Value');frequency=str2double(get(handles.infre,'String'));amp=str2double(get(handles.infudu,'String'));phase=str2double(get(handles.inphase,'String'));switch soundtypecase 1y=amp*sin(2*pi*x*frequency+phase);handles.inputtype=3;case 2y=amp*sign(sin(2*pi*x*frequency+phase));handles.inputtype=3;case 3y=amp*sawtooth(2*pi*x*frequency+phase,0.5);handles.inputtype=3;case 4y=amp*sawtooth(2*pi*x*frequency+phase);handles.inputtype=3;case 5y=amp*(2*rand(size(x))-1);handles.inputtype=4;endif get(handles.mix,'Value')==0.0handles.y=y;elsehandles.y=handles.y+y;endguidata(hObject,handles);plot(handles.fenxiduixiang,handles.y);title('WA VE');axis([0 N -str2double(get(handles.infudu,'String')) str2double(get(handles.infudu,'String'))]); function edit11_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit12_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction popupmenu3_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit13_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit14_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit15_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit9_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction edit10_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction circle_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction outfreq_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction outamp_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction outphase_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function outpeak_CreateFcn(hObject, eventdata, handles)% hObject handle to outpeak (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function outmean_CreateFcn(hObject, eventdata, handles)% hObject handle to outmean (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function edit24_CreateFcn(hObject, eventdata, handles)% hObject handle to edit24 (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function outminus_CreateFcn(hObject, eventdata, handles)% hObject handle to outminus (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function foutt_CreateFcn(hObject, eventdata, handles)% hObject handle to foutt (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function foutfreq_CreateFcn(hObject, eventdata, handles)% hObject handle to foutfreq (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function pointfrom_CreateFcn(hObject, eventdata, handles)% hObject handle to pointfrom (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes during object creation, after setting all properties.function pointto_CreateFcn(hObject, eventdata, handles)% hObject handle to pointto (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');end% --- Executes on button press in timeanalyse.function timeanalyse_Callback(hObject, eventdata, handles)Fs=str2double(get(findobj('Tag','caiyangpinlv'),'String'));N=str2double(get(findobj('Tag','caiyangdianshu'),'String'));if handles.inputtype==0msgbox('No wave exist! Please choose a input type!');return;end%guo ling jian cen=1;ymax=max([handles.y(1) handles.y(2)]);ymin=min([handles.y(1) handles.y(2)]);from=str2double(get(handles.pointfrom,'String'));to=str2double(get(handles.pointto,'String'));if from<1 | to-from<5;msgbox('Error range!');return;endfor i=from+2:to-1;if handles.y(i-1)<0 & handles.y(i-2)<0 & handles.y(i)>=0 & handles.y(i+1)>0if handles.y(i)==0ti(n)=i;elseti(n)=i-handles.y(i)/(handles.y(i)-handles.y(i-1));endamp(n)=(ymax-ymin)/2;ymax=0;ymin=0;n=n+1;elseif ymax<handles.y(i)ymax=handles.y(i);endif ymin>handles.y(i)ymin=handles.y(i);endendendn=n-1;%freqence and periodicityfor i=1:n-1T(i)=ti(i+1)-ti(i);endfreq=Fs/mean(T);if (handles.inputtype==1||handles.inputtype==2||handles.inputtype==4)set(handles.circle,'String','非周期');set(handles.outfreq,'String','非周期');endif(handles.inputtype==3)set(handles.circle,'String',1/freq);set(handles.outfreq,'String',num2str(freq));endset(handles.outamp,'String',num2str(mean(amp(2:n-1))));%phasephase=2*pi*(1-(ti(1:n-1)-1)./T+floor((ti(1:n-1)-1)./T));set(handles.outphase,'String',num2str(mean(phase)));%peakset(handles.outpeak,'String',(max(handles.y(from:to))-min(handles.y(from:to)))/2);%meanset(handles.outmean,'String',mean(handles.y(from:to)));%meansquareset(handles.outmeansquare,'String',mean(handles.y(from:to).^2));%sset(handles.outminus,'String',std(handles.y(from:to))^2);% --------------------------------------------------------------------function uipanel18_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to uipanel18 (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB% handles structure with handles and user data (see GUIDATA)[filename,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.samplefre,'string',Fs);h=waitbar(0,'pleas wait...');for i=1:10000waitbar(i/10000,h)endclose(h)% --- Executes on button press in freqanalyse.function freqanalyse_Callback(hObject, eventdata, handles)% hObject handle to freqanalyse (see GCBO)% eventdata reserved - to be defined in a future version of MA TLAB % handles structure with handles and user data (see GUIDATA) Fs=str2double(get(findobj('Tag','caiyangpinlv'),'String'));N=str2double(get(findobj('Tag','caiyangdianshu'),'String'));if handles.inputtype==0msgbox('No wave exist! Please choose a input type!');return;endfrom=str2double(get(handles.pointfrom,'String'));to=str2double(get(handles.pointto,'String'));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));if(handles.inputtype==1||handles.inputtype==2||handles.inputtype==4) set(handles.foutt,'String','非周期');set(handles.foutfreq,'String','非周期');endif(handles.inputtype==3)set(handles.foutt,'String',1/f(I));set(handles.foutfreq,'String',f(I));endY=Y(1:(to-from+1)/2);plot(handles.fuzhipu,f,2*sqrt(Y.*conj(Y)));plot(handles.xiangweipu,f,angle(Y));plot(handles.shipin,f,real(Y));plot(handles.xupin,f,imag(Y));plot(handles.gonglvpu,f,abs(Y).^2);xlabel(handles.fuzhipu,'freqency(Hz)');xlabel(handles.xiangweipu,'freqency(Hz)');xlabel(handles.shipin,'freqency(Hz)');xlabel(handles.xupin,'freqency(Hz)');xlabel(handles.gonglvpu,'freqency(Hz)');ylabel(handles.fuzhipu,'amplitude');ylabel(handles.xiangweipu,'phase(rad)');ylabel(handles.shipin,'real');ylabel(handles.xupin,'Imaginary');ylabel(handles.gonglvpu,'power');五、音频频谱分析仪运行结果1.声卡输入声卡输入的录音是非周期的,故时域分析和频域分析结果都是“非周期”。