音频频谱分析仪设计与实现
频谱分析仪解决方案

频谱分析仪解决方案一、概述频谱分析仪是一种用于测量和分析信号频谱特性的仪器,广泛应用于无线通信、电子设备测试、音频和视频处理等领域。
本文将介绍一种基于先进技术的频谱分析仪解决方案,涵盖硬件和软件两个方面。
二、硬件方案1. 仪器特性该频谱分析仪采用宽频带接收机和高性能数字信号处理器,具有以下特性:- 频率范围广:覆盖从几千赫兹到几十吉赫兹的宽频带范围。
- 高灵敏度:能够检测到微弱信号,并提供高动态范围的测量结果。
- 高分辨率:具备高分辨率的频谱显示,以便更准确地分析信号特性。
- 多功能性:支持多种测量模式,如频谱分析、功率谱密度分析等。
2. 仪器设计该频谱分析仪采用模块化设计,包括前端接收模块、数字信号处理模块和用户界面模块。
- 前端接收模块:负责信号的接收和预处理,包括低噪声放大器、滤波器等。
- 数字信号处理模块:采用高性能的数字信号处理器,对接收到的信号进行快速处理和分析。
- 用户界面模块:提供友好的用户界面,包括显示屏、按键和旋钮等,方便用户进行操作和数据分析。
三、软件方案1. 数据处理算法该频谱分析仪配备了先进的数据处理算法,能够对接收到的信号进行精确的频谱分析和测量。
- 快速傅里叶变换(FFT):用于将时域信号转换为频域信号,实现频谱分析。
- 自动峰值检测:能够自动识别信号的峰值,并提供峰值频率和功率信息。
- 信噪比计算:通过对信号和噪声功率的测量,计算信噪比以评估信号质量。
2. 数据显示和分析该频谱分析仪提供多种数据显示和分析功能,方便用户深入研究信号特性。
- 频谱显示:以图形方式展示信号的频谱特性,包括频率、功率和带宽等信息。
- 功率谱密度显示:以图形方式展示信号的功率谱密度分布,帮助用户了解信号能量分布情况。
- 数据存储和导出:支持将测量数据存储到内部存储器或外部存储介质,并支持数据导出为常见格式,如CSV、Excel等。
四、应用案例该频谱分析仪解决方案可以应用于多个领域,以下是几个典型的应用案例:1. 无线通信:用于分析和优化基站和无线网络的信号质量,提供频谱资源管理和干扰分析的支持。
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],
因版权原因,仅展示原文概要,查看原文内容请购买。
声音的频率测量方法与技巧

声音的频率测量方法与技巧声音作为一种特殊的物理现象,广泛存在于我们的日常生活中。
了解和测量声音的频率对于很多领域都非常重要,比如音乐工程、语音识别技术、环境监测等。
本文将介绍一些声音频率测量的方法与技巧。
1.声音频率的基本概念声音的频率指的是声波的振动次数,单位一般是赫兹(Hz)。
人类能听到的声音频率范围大约在20Hz到20kHz之间。
在音乐中,低频音通常给人一种沉稳和厚实的感觉,高频音则给人一种明亮和尖锐的感觉。
2.使用频谱分析仪测量声音频率频谱分析仪是一种常用的声音频率测量仪器。
它能将声音信号转换成频谱图,显示出不同频率的声音分量。
使用频谱分析仪测量声音频率的步骤如下:(1)将声音信号输入频谱分析仪。
可以通过麦克风、音频接口等设备将声音信号输入到频谱分析仪中。
(2)调整频谱分析仪的设置。
选择适当的量程范围、时间窗口等参数,以便得到准确的频率分析结果。
(3)观察频谱图。
频谱图以频率为横轴,声音强度为纵轴,显示出不同频率的声音分量。
根据图中最高峰的位置,可以确定声音的主要频率。
3.使用频率计测量简单声音的频率对于一些简单的声音,可以使用频率计来快速测量其频率。
频率计是一种能够直接测量声音频率的仪器。
使用频率计测量声音频率的步骤如下:(1)将频率计设置为声音测量模式。
(2)将频率计的麦克风或传感器放置在声源附近。
(3)触发频率计,让其开始测量。
(4)等待测量结果。
频率计会自动显示声音的频率。
4.技巧:降噪处理提高测量精度在进行声音频率测量时,噪音的干扰往往会降低测量精度。
因此,进行降噪处理可以提高测量结果的准确性。
常用的降噪处理方法包括:(1)在测量环境中减少噪音源。
将测量环境中的噪音源尽量减少或消除,可以有效降低噪音的干扰。
(2)使用降噪滤波器。
降噪滤波器能够将噪音信号从声音信号中滤除,提高信号的纯净度。
(3)增加测量时间。
通过连续测量相同声音信号多次并取平均值的方法,可以减小随机噪音对测量结果的影响,提高测量的准确性。
基于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 上面
音频频谱分析仪设计

信号处理实验实验八:音频频谱分析仪设计与实现一、实验名称:音频频谱分析仪设计与实现二、实验原理: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为采样间隔。
频谱分析实验报告

频谱分析实验报告频谱分析实验报告引言:频谱分析是一种用于研究信号频谱特性的方法,广泛应用于通信、音频处理、无线电等领域。
本实验旨在通过实际操作和数据分析,探索频谱分析的原理和应用。
实验设备与步骤:本次实验使用了频谱分析仪、信号发生器和电缆等设备。
具体步骤如下:1. 连接设备:将信号发生器通过电缆连接到频谱分析仪的输入端口。
2. 设置参数:根据实验要求,设置信号发生器的频率、幅度和波形等参数,并将频谱分析仪的参考电平和分辨率带宽调整到合适的范围。
3. 采集数据:启动频谱分析仪,开始采集信号数据。
可以选择连续扫描或单次扫描模式,并设置合适的时间窗口。
4. 数据分析:通过频谱分析仪提供的界面和功能,对采集到的数据进行分析和处理。
可以查看频谱图、功率谱密度图等,了解信号的频谱特性。
实验结果与讨论:通过实验操作和数据分析,我们得到了以下结果和结论。
1. 频谱分析原理:频谱分析仪通过将信号转换为频谱图来展示信号在不同频率上的能量分布情况。
频谱图通常以频率为横轴,幅度或功率为纵轴,可以直观地反映信号的频谱特性。
2. 不同信号的频谱特性:我们使用了不同频率和波形的信号进行实验,观察其在频谱图上的表现。
正弦波信号在频谱图上呈现出单个峰值,峰值的位置对应信号的频率。
方波信号在频谱图上则呈现出多个峰值,峰值的位置和幅度反映了方波的频率和谐波分量。
3. 噪声信号的频谱特性:我们还进行了噪声信号的频谱分析。
噪声信号在频谱图上呈现为连续的能量分布,没有明显的峰值。
通过分析噪声信号的功率谱密度图,可以了解噪声信号在不同频率上的能量分布情况。
4. 频谱分析的应用:频谱分析在通信和音频处理领域有着广泛的应用。
通过频谱分析,可以帮助我们了解信号的频率成分、噪声特性以及信号处理器件的性能等。
在无线电领域,频谱分析还可用于频段分配、干扰监测等工作。
结论:通过本次实验,我们深入了解了频谱分析的原理和应用。
频谱分析可以帮助我们理解信号的频谱特性,对于信号处理和通信系统设计具有重要意义。
音频频谱分析仪仿真实验

中 图 分 类 号 : 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 全球频谱分析仪市
分析范围不足
分析范围可以通过选用具有更大频率范围的 频谱分析仪来解决。
信号干扰
信号干扰可能会影响频谱分析结果,可以通 过优化测量环境、屏蔽干扰源等方式来解决。
校准问题
频谱分析仪的校准非常重要,可以定期进行 校准或选择具备自动校准功能的仪器。
七、总结与展望
频谱分析仪的发展 历程
频谱分析仪经过多年的发展, 已经成为电子测量领域中不 可或缺的重要工具。
未来发展方向
未来频谱分析仪将继续向更 高频率、更高精度、更智能 化的方向发展。
重点关注领域
未来频谱分析仪在5G通信、 物联网、射频芯片等领域将 发挥重要作用。
Res BW、VID BW、 RBW
Res BW指的是分辨带宽, VID BW指的是视频带宽, RBW指的是实时带宽。
信噪比、动态范围、 相位噪声
这些参数描述了频谱分析 仪的性能,包括信号与噪 声的比例、动态范围以及 相位噪声水平。
四、频谱分析仪的典型应用
无线电通信
频谱分析仪用于无 线电通信系统的频 谱监测、无线电干 扰分析等应用。
《频谱分析仪讲》PPT课 件
#ห้องสมุดไป่ตู้频谱分析仪讲
一、频谱分析仪的基本概念
频谱分析仪的定义
频谱分析仪是一种测量电信号频谱分布的仪器,用于分析信号的幅度和频率特性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八 音频频谱分析仪设计与实现一、实验原理MATLAB 是一个数据分析和处理功能十分强大的工程实用软件,其数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和指令。
本实验基于声卡与MATLAB 实现音频信号频谱分析仪。
1、频率(周期)检测对周期信号来说,可以用时域波形分析来确定信号的周期,也就是计算相邻两个信号波峰的时间差或过零点的时间差。
采用过零点(ti )的时间差T (周期)。
频率即为f=1/T ,由于能够求得多个T 值,故采用他们的平均值作为周期的估计值。
2、峰值检测在一个周期内,求出信号最大值m ax y 与最小值min y 的差得一半记为A ,同样得到多个A 值,但第一个A 值对应的m ax y 和min y 不是在一个周期内搜索得到的,故以除第一个以外的A 值的平均作为幅值的估计值。
3、相位检测采用过零法,即通过判断与同频零相位信号过零点时刻,计算其时间差,然后换成相应的相位差。
)π(T /ti -12=ϕ,同样以ϕ的平均值作为相位的估计值。
4、数字信号统计量估计(1)峰值P 的估计在样本数据x 中找出最大值与最小值,其差为双峰值,双峰值的一半即为峰值。
(2)均值估计∑=Ni=0iyN 1)y (E ,N 为样本容量。
(3)均方值估计∑=Ni=0iy22N 1)y (E(4)方差估计∑=Ni=0iy2))(E -(N 1)y (D y 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 = ~f时,Y(kΔf)取最大值,则~f为频率的估计值,由于采样间隔的误差,~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]6、模块划分模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成制定的功能,满足用户需求。
二、实验内容设计一个音频频谱分析仪,功能包括:(1)音频信号输入,从声卡输入、从W A V文件输入、从标准信号发生器输入;(2)信号波形分析,包括幅值、频率、周期、相位的估计,以及统计量峰值、均值。
均方值和方差的计算。
(3)信号频谱分析,频率、周期的估计,图形显示幅值谱、相位谱、时频谱、虚频谱和功率谱的曲线。
三.实验结果1.声卡输入(1)正弦波(2)方波(3)三角波(4)锯齿波(5)白噪声程序function varargout = fanwenhan(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @fanwenhan_OpeningFcn, ...'gui_OutputFcn', @fanwenhan_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 fanwenhan_OpeningFcn(hObject, eventdata, handles, varargin) handles.inputtype=0;xlabel(handles.plot1,'freqency(Hz)');xlabel(handles.plot2,'freqency(Hz)');xlabel(handles.plot3,'freqency(Hz)');xlabel(handles.plot4,'freqency(Hz)');xlabel(handles.plot5,'freqency(Hz)');ylabel(handles.plot1,'amplitude');ylabel(handles.plot2,'phase(rad)');ylabel(handles.plot3,'real');ylabel(handles.plot4,'Imaginary');ylabel(handles.plot5,'power');handles.output = hObject;function varargout = fanwenhan_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;function figure1_CreateFcn(hObject, eventdata, handles)function timeanalyse_Callback(hObject, eventdata, handles)Fs=str2double(get(findobj('Tag','samplerate'),'String'));N=str2double(get(findobj('Tag','samplenum'),'String'));if handles.inputtype==0msgbox('No wave exist! Please choose a input type!');return;endn=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;for i=1:n-1T(i)=ti(i+1)-ti(i);endfreq=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(f rom:to)))/2);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);function WAVfile_Callback(hObject, eventdata, handles)h=findobj('Tag','filename');set(h,'enable','on');h=findobj('Tag','freq');set(h,'enable','off');h=findobj('Tag','amp');set(h,'enable','off');h=findobj('Tag','phase');set(h,'enable','off');set(findobj('Tag','recordtime'),'enable','off');set(handles.channel,'enable','on');set(handles.fileopen,'enable','on');set(handles.gensig,'enable','off');set(handles.wavetype,'enable','off');set(handles.add,'enable','off');set(handles.startrecord,'enable','off');function soundcard_Callback(hObject, eventdata, handles) set(findobj('Tag','recordtime'),'enable','on');h=findobj('Tag','filename');set(h,'enable','off');h=findobj('Tag','freq');set(h,'enable','off');h=findobj('Tag','amp');set(h,'enable','off');h=findobj('Tag','phase');set(h,'enable','off');set(handles.channel,'enable','off');set(handles.fileopen,'enable','off');set(handles.gensig,'enable','off');set(handles.wavetype,'enable','off');set(handles.add,'enable','off');set(handles.startrecord,'enable','on');function generator_Callback(hObject, eventdata, handles) h=findobj('Tag','filename');set(h,'enable','off');h=findobj('Tag','freq');set(h,'enable','on');h=findobj('Tag','amp');set(h,'enable','on');h=findobj('Tag','phase');set(h,'enable','on');set(findobj('Tag','recordtime'),'enable','off');set(handles.channel,'enable','off');set(handles.fileopen,'enable','off');set(handles.gensig,'enable','on');set(handles.wavetype,'enable','on');set(handles.add,'enable','on');set(handles.startrecord,'enable','off');function filename_Callback(hObject, eventdata, handles)function filename_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction freq_Callback(hObject, eventdata, handles)function freq_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction amp_Callback(hObject, eventdata, handles)function amp_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction phase_Callback(hObject, eventdata, handles)function phase_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction samplerate_Callback(hObject, eventdata, handles)function samplerate_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction samplenum_Callback(hObject, eventdata, handles)function samplenum_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction ampfreq_CreateFcn(hObject, eventdata, handles)function recordtime_Callback(hObject, eventdata, handles)function recordtime_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction startrecord_Callback(hObject, eventdata, handles)Fs=str2double(get(findobj('Tag','samplerate'),'String'));handles.y=wavrecord(str2double(get(findobj('Tag','recordtime'),'Strin g'))*Fs, Fs,'int16');handles.inputtype=1;guidata(hObject,handles);plot(handles.time,handles.y);title('WAVE');ysize=size(handles.y)set(handles.samplenum,'String',num2str(ysize(1)));function fileopen_Callback(hObject, eventdata, handles)temp = wavread(get(findobj('Tag','filename'),'String'));channel=str2double(get(handles.channel,'String'));handles.y=temp(:,channel);handles.inputtype=2;guidata(hObject,handles);plot(handles.time,handles.y);title('WAVE');ysize=size(handles.y)set(handles.samplenum,'String',num2str(ysize(1)));function gensig_Callback(hObject, eventdata, handles)Fs=str2double(get(findobj('Tag','samplerate'),'String'));N=str2double(get(findobj('Tag','samplenum'),'String'));x=linspace(0,N/Fs,N);soundtype=get(handles.wavetype,'Value');frequency=str2double(get(handles.freq,'String'));amp=str2double(get(handles.amp,'String'));phase=str2double(get(handles.phase,'String'));switch soundtypecase 1y=amp*sin(2*pi*x*frequency+phase);case 2y=amp*sign(sin(2*pi*x*frequency+phase));case 3y=amp*sawtooth(2*pi*x*frequency+phase,0.5);case 4y=amp*sawtooth(2*pi*x*frequency+phase);case 5y=amp*(2*rand(size(x))-1);otherwiseerrordlg('Illegal wave type','Choose errer');endif get(handles.add,'Value')==0.0handles.y=y;handles.y=handles.y+y;endhandles.inputtype=3;guidata(hObject,handles);plot(handles.time,handles.y);title('WAVE');axis([0 N -str2double(get(handles.amp,'String'))str2double(get(handles.amp,'String'))]);function outfreq_Callback(hObject, eventdata, handles)function outfreq_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction outamp_Callback(hObject, eventdata, handles)function outamp_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction outphase_Callback(hObject, eventdata, handles)function outphase_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));function outpeak_Callback(hObject, eventdata, handles)function outpeak_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction outmean_Callback(hObject, eventdata, handles)function outmean_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction outmeansquare_Callback(hObject, eventdata, handles)function outmeansquare_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction outs_Callback(hObject, eventdata, handles)function outs_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction foutfreq_Callback(hObject, eventdata, handles)function foutfreq_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction foutamp_Callback(hObject, eventdata, handles)function foutamp_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction foutphase_Callback(hObject, eventdata, handles)function foutphase_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction edit18_Callback(hObject, eventdata, handles)function edit18_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction edit19_Callback(hObject, eventdata, handles)function edit19_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction edit20_Callback(hObject, eventdata, handles)function edit20_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction edit21_Callback(hObject, eventdata, handles)function edit21_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));function freqanalyse_Callback(hObject, eventdata, handles)Fs=str2double(get(findobj('Tag','samplerate'),'String'));N=str2double(get(findobj('Tag','samplenum'),'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));set(handles.foutt,'String',1/f(I));set(handles.foutfreq,'String',f(I));Y=Y(1:(to-from+1)/2);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);xlabel(handles.plot1,'freqency(Hz)');xlabel(handles.plot2,'freqency(Hz)');xlabel(handles.plot3,'freqency(Hz)');xlabel(handles.plot4,'freqency(Hz)');xlabel(handles.plot5,'freqency(Hz)');ylabel(handles.plot1,'amplitude');ylabel(handles.plot2,'phase(rad)');ylabel(handles.plot3,'real');ylabel(handles.plot4,'Imaginary');ylabel(handles.plot5,'power');function pointfrom_Callback(hObject, eventdata, handles)function pointfrom_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction pointto_Callback(hObject, eventdata, handles)function pointto_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction play_Callback(hObject, eventdata, handles)Fs=str2double(get(findobj('Tag','samplerate'),'String'));wavplay(handles.y,Fs);function scale_Callback(hObject, eventdata, handles)val=get(hObject,'value');val=10^(val*5+1);x=get(handles.xmove,'Value')*str2double(get(handles.samplenum,'String '));axis(handles.time,[x val+x min(handles.y) max(handles.y)]);function scale_CreateFcn(hObject, eventdata, handles)usewhitebg = 1;if usewhitebgset(hObject,'BackgroundColor',[.9 .9 .9]);elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction scale2_Callback(hObject, eventdata, handles)val=get(hObject,'value');val=10^(val*5+1);xlim(handles.plot1,[0 val]);xlim(handles.plot2,[0 val]);xlim(handles.plot3,[0 val]);xlim(handles.plot4,[0 val]);function scale2_CreateFcn(hObject, eventdata, handles)usewhitebg = 1;if usewhitebgset(hObject,'BackgroundColor',[.9 .9 .9]);elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction channel_Callback(hObject, eventdata, handles)function channel_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction wavetype_Callback(hObject, eventdata, handles)function wavetype_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction add_Callback(hObject, eventdata, handles)function add_DeleteFcn(hObject, eventdata, handles)function xmove_Callback(hObject, eventdata, handles)val=get(handles.scale,'value');val=10^(val*5+1);x=get(hObject,'Value')*str2double(get(handles.samplenum,'String')); axis(handles.time,[x val+x min(handles.y) max(handles.y)]);function xmove_CreateFcn(hObject, eventdata, handles)usewhitebg = 1;if usewhitebgset(hObject,'BackgroundColor',[.9 .9 .9]);elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction analyseall_Callback(hObject, eventdata, handles)if get(hObject,'Value')==0.0set(handles.pointfrom,'Enable','on');set(handles.pointto,'Enable','on');elseset(handles.pointfrom,'String','1','Enable','off');set(handles.pointto,'String',get(handles.samplenum,'String'),'Enable' ,'off');endfunction outt_Callback(hObject, eventdata, handles)function outt_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction foutt_Callback(hObject, eventdata, handles)function foutt_CreateFcn(hObject, eventdata, handles)if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor' ));endfunction gensig_CreateFcn(hObject, eventdata, handles)function add_CreateFcn(hObject, eventdata, handles)function startrecord_CreateFcn(hObject, eventdata, handles)function freqanalyse_CreateFcn(hObject, eventdata, handles)结果分析通过不断的尝试及计算,得到上述实验结果,可以看到设置不同的采样频率和采样点数将分析出不同的结果,其无论在时域分析或频域分析上都有影响,如对频率、相位的判断等。