音频频谱分析仪设计
matlab频谱分析仪

%
%
GUOJING('CALLBACK',hObject,eventData,handles,...) calls the
local
%
function named CALLBACK in GUOJING.M with the given input
arguments.
%
%
GUOJING('Property','Value',...) creates a new GUOJING or
% --- Outputs from this function are returned to the command line. function varargout = guojing_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
2
% --- Executes on button press in soundcard. function soundcard_Callback(hObject, eventdata, handles) % hObject handle to soundcard (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
DN6000实时音频频谱分析仪

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],
因版权原因,仅展示原文概要,查看原文内容请购买。
基于MSP430的FM音频频谱分析仪设计与实现

x ( k ) = D F T [ x ( n ) 】 = ∑x ( )
2, vk
,
_
( k = 0 , 1 , … , N 一 1 )
,
( 1 )
~
图 2 频 谱 分 析 仪 系 统 框 图
式l 中,
:
称 为旋 转因子 ,并 有:
= 哝 ,
i = 一 。
—
( n )
:
( 2 )
N
. . ,
+
( 2 n +1 ) z ”
' 一 液晶m ) 6 6 7 7 2
按键 串口
( 2 )
=
∑ ( 2 一 ) 嗡 + Ex ( 2 n + l
n = 0 n = 0
一
( = 0 , 1 , … , N 一 1
x ( O ) X ( 0 )
万 。
2 频 谱 分析 仪 设 计 原 理 由 于 在 数 字 系 统 中 处 理 的 数 据 都 是 经 由 采 样 得 到 , 所 以 得 到 的 数 据 必 然 是 离 散 的 。 对 于 离 散 的 数 据 , 适 用 离 散 傅 立 叶 变 换, 是 离 散 傅 里 叶变 换 的快 速 算 法 , 也 可 用 于 计 算 离 散 傅 里 叶 变 换 的 逆 变 换 , 目前 已被 数 字 式 频 谱 仪 广 泛 采 用 。 对 于长 度 为N 的复数序列 X o , x 一 , x , 离散 傅 里 叶 变 换 公 式 为 :
进行调整和改进。
【 关键 词 】 音 频 频 谱 分 析 ;快 速 傅 立 叶 变换 ;数 字信 号处 理
1 前 言 易 看 出 特 征 了 ,这 就 是 频 谱 仪 的一 般 原理 。 在 实 际 的 广 播 电视 发 射 工作 中 ,新 的 发 射 机 的 进 场 测 试 , 发 射 3 . 频谱 分 析 仪 的 实 现 机 的 日常 指 标 测 试 等 都 涉 及 l 『音 频 的测 试 。本 文 设 计 的 音 频 频 谱 分 本文介绍 了一种基于F F T 的 的 数 字 音 频 频 谱 分 析 仪 的实 现 , 通 过 析 仪 就 是 从 信 号 源 的 角 度 出 发 , 测 量 音 频 信 号 的 频 谱 , 从 而 确 定 各 A D C 采 样 输 入 的 音 频 信 号 ,A D C 采 样 完 成 以后 ,将 数据 进 行 倒 序 排 列 并 频 率 成 分 的大 小 , 为 调 频 广 播 的 各 项 音 频 指 标 的提 供 参 考 。 进行F F T 运算,结果通过T F T 液 晶 显 示 出来 。系 统 的框 图 如 图 2 所 示。 在 本 文 中 主 要 讨 论 了 以M S P 4 3 处 理 器 为 核 心 的 音 频 频 谱 分 析 仪 的 设计 与 实 现 。 以 数 字信 号 处 理 的 相 关 理 论 知 识 为 指 导 ,利 用M S P 4 3 0 处 理 器 的优 势 来进 行 音 频 频 谱 的 分 析 ,并 最 终 在 T F T 液 晶H D 6 6 7 7 2 上面
频谱分析实验报告

频谱分析实验报告频谱分析实验报告引言:频谱分析是一种用于研究信号频谱特性的方法,广泛应用于通信、音频处理、无线电等领域。
本实验旨在通过实际操作和数据分析,探索频谱分析的原理和应用。
实验设备与步骤:本次实验使用了频谱分析仪、信号发生器和电缆等设备。
具体步骤如下: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. 断开连接和关闭仪器在测量结束后,先断开频谱分析仪与信号源之间的连接,然后关闭仪器。
注意遵循正确的操作顺序,避免损坏设备。
以上即为频谱分析仪的基本操作流程。
频谱分析仪使用简介

图37 剩余调频使信号模糊
54
d、相位噪声
相位噪声也称作边带噪声,它是由LO的不稳定 引起的,因为在某种程度上所有振荡器都存在 随机噪声的相位调制,在频域上就表现为信号 附近的边带噪声,这种边带噪声可能掩盖近端 的低电平信号。见图38。
55
图38 噪声边带掩盖小信号
56
• 分辨率带宽对扫描时间的影响:
概要
三章 频谱仪重要指标
1
第一章 信号分析简介
1.1 信号的分类 1.2 为什么要进行频域测量 1.3 频谱分析仪典型应用
2
1.1 信号的分类:
按表现形式分:连续波信号,模拟调制信号,数字 调制信号,噪声信号。 对信号的分析包括:时域分析,频域分析,调制域 分析。
52
c、剩余调频
影响频谱仪分辨率的另一个因素频谱仪的本振频率稳 定度(即LO的剩余调频),这种不稳定度将被转移 到任何混频产物中去,并将无法确定是由LO还是输 入信号引起的。剩余调频是显示的信号模糊不清(图 37),以至于在规定的剩余调频至内的两个信号不能 被分辨;所以,频谱仪的剩余调频决定了可允许的最 小分辨率。锁相本振作为参考源可降低剩余调频,也 降低了最小可允许的分辨带宽,高性能的频谱仪价格 较贵,因为它有较好的相位锁定系统,具有较低的剩 余调频和较小的最小分辨率。
39
技术小结
完成频谱分析有:扫频式和FFT两种方式; FFT适合于窄分析带宽,快速测量场合; 扫频方式适合于宽频带分析场合; 单点频CW信号在扫频式频谱仪上测试显示的 结果为中频滤波器形状。
40
第四章 频谱仪的重要指标
4.1 频率范围 4.2 准确度
4.3 分辨力
4.4 灵敏度 4.5 失真 4.6 动态范围
音频频谱分析仪仿真实验

中 图 分 类 号 : 3 . 1 TM9 2 5
文 献 标 识 码 : A
文 章 编 号 : 7 ( 0 —0 1 —0 1 0 —9 6 2 0) 0 41 01 8 1 3 2
po(, e ) l tt x, 1 ;
形
1概述
本 文 在 M ATLAB仿 真 环 境 下 , 音 频 对
% o t 是 个 结 构 , 面 包 含 着 有 关 该 声 ps 里 音 文 件 的 所 有 信 息
% g a 返 回 当 前 轴 的 句 柄 并 设 置 c是 tte[ 画 左 右 声 道 声 音 波 形 ’) il(’ ]l
x a e(。 ( S ’。 ; lb l【T ’S )】 )
f e p a ,n me} i =[n me fa 】 l % 文 件 名 称 和 路 径
e ’,
stg a 。 o t me ’ il , F n Sz e(c , F n Na , Ara ’ ’ o ti
1) 0;
真 界 面 播 放 该 声曹 文 件 、 示 音 频 输 入 信 显
一
[ n =sz ( ) m, l iex ; f e fl ’f= itsrf) Hz i i =[ e l i s n 2t(s , n tsrn i ) ’is 】 2 t(bt b t ’; s
i n= =2 f
程 序 2 a d p c. : u s e m
fn to y u s e (cin ; u cin =a d p cato )
%x ( , ) % 取 右 声 道 数 据 =x : 2 ;
e nd;
ys r t Kt e yp
i sr mp ato ’ly。 % 播 放 声 音 f tc (c in,P a )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信号处理实验实验八:音频频谱分析仪设计与实现一、实验名称:音频频谱分析仪设计与实现二、实验原理: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.声卡输入声卡输入的录音是非周期的,故时域分析和频域分析结果都是“非周期”。