基于MATLAB的简易声音信号频谱分析仪设计
基于MATLAB的频谱分析仪设计

基于MATLAB的频谱分析仪设计
频谱分析仪是一种用于测量信号频谱以及分析信号频谱特征的仪器。
频谱分析仪在许多领域具有广泛的应用,例如通信系统、音频处理、机械振动等。
在这篇文章中,我们将基于MATLAB来设计一个频谱分析仪。
首先,我们需要了解频谱是什么。
频谱是信号在不同频率上的能量分布情况。
在频谱分析中,常用的频谱表示方法有幅度谱和相位谱。
在MATLAB中,可以使用fft函数对信号进行频谱分析。
该函数将信号从时域转换为频域,并返回信号的幅度谱和相位谱。
接下来,我们需要设计一个用户界面,用于输入和显示信号数据。
可以使用MATLAB的图形用户界面(GUI)工具箱来实现。
首先,创建一个GUI窗口,包括信号输入框、频谱显示框和按钮。
用户可以在信号输入框中输入信号数据,然后点击按钮来进行频谱分析。
在按钮的回调函数中,我们可以获取用户输入的信号数据,并使用fft函数对信号进行频谱分析。
然后,我们将频谱数据显示在频谱显示框中。
在频谱显示框中,我们可以使用MATLAB的plot函数来绘制频谱图。
可以将频率作为X轴,幅度谱作为Y轴进行绘制。
此外,我们还可以为频谱分析仪添加一些额外的功能,例如窗函数选择、功率谱密度估计、频谱平滑等。
这些功能可以使用MATLAB提供的函数来实现。
总结起来,基于MATLAB的频谱分析仪设计主要包括信号输入、频谱分析、频谱显示以及额外功能的添加。
通过MATLAB的函数和工具箱,我们可以方便地实现一个功能完善的频谱分析仪。
基于matlab实现语音信号频谱分析

目录第1章课题的设计要求、目的、意义 (3)1.1课题的设计要求: (3)1.1.1.信号采集 (3)1.1.2.构造受干扰信号并对其进行FFT频谱分析 (3)1.1.3.数字滤波器设计 (3)1.1.4.信号处理 (3)1.1.5.设计图形用户界面 (3)1.2课题的设计目的与意义: (3)第2章课程设计报告内容 (4)2.1理论依据 (4)2.2信号采集 (4)2.3构造一个正弦干扰信号来干扰语音信号 (4)2.4数字滤波器设计 (4)2.5信号处理 (4)2.6具体指标 (4)2.7设计图形用户界面 (4)第3章设计理论依据 (5)3.1采样定理 (5)3.2采样频率 (5)第4章图形用户界面制作及Matlab实现 (6)4.1 按钮、静态文本和编辑器的使用 (6)4.1.1打开guide (6)4.2 按钮与程序的联系 (8)第5章调试及分析 (8)5.1打开信号。
(8)5.2声音播放,同时显示波形。
(9)5.3语音信号的频谱、幅度和相位。
(10)5.3.1频谱。
(10)5.3.2幅度。
(10)5.3.3相位。
(11)5.4加噪声后的语音信号波形。
(12)5.5加噪声后的语音信号的频谱、幅度和相位。
(12)5.5.1频谱。
(12)5.5.2幅度。
(13)5.5.3相位。
(13)5.6信号通过FIR滤波器后的波形。
(14)5.7信号通过FIR滤波器后的频谱、幅度和相位。
(15)5.7.1频谱。
(15)5.7.2幅度。
(16)5.7.3相位。
(16)5.8信号通过IIR滤波器后的波形。
(17)5.9 信号通过IIR滤波器后的频谱、幅度和相位。
(18)5.9.1频谱。
(18)5.9.2幅度。
(18)5.9.3相位。
(19)5.10信号通过巴特沃斯滤波器后的波形。
(20)5.11 信号通过巴特沃斯滤波器后的频谱、幅度和相位。
(21)5.11.1频谱。
音频频谱分析仪设计

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

的起点移至 处截取信号 ,再做傅里叶变换而得到
的一个频谱函数。这是直接将频率轴方向来理解的。
另一种解释是从时间轴方向来理解,当频率固定时,
例如
,则
可以看作是信号经过一个中心频
率为 的带通滤波器产生的输出。这是因为窗口函数
通常具有低通频率响应,而指数 对语音信号
有调制的作用,使频谱产生移位,即将 频谱中
对应于频率 的分量平移到零频。
3、短时傅里叶反变换(倒谱分析)
傅里叶变换建立了信号从时域到频域的变换桥
梁,而傅里叶反变换则建立了信号从频域到时域的
变换桥梁这两个域之间的变换为一对一映射关系。
我们知道,
可以看作是加窗后函数的傅里叶变
换,为了实现反变换,将
进行频率采样,即令
图2 频谱分析过程
,则有
2、短时傅里叶变换(频谱分析)
公司推出的一种面向工程和科学计算的交互式计算软 的录音机功能可以用麦克风直接录制一段女声“世界
件,它以矩阵运算为基础,把计算、可视化、程序设 上最遥远的距离不是生与死,而是我就站在你面前
计融合到了一个简单易用的交互式工作环境中。同时 你确不知道我爱你”,并保存为WAV 格式文件,供
由于Matlab是一个数据分析和处理功能十分强大的工程 MATLAB 相关函数直接读取、写入或播放。本文以
三、语音信号分析及MATLAB的实现 1、语音信号的频谱分析过程 傅里叶频谱分析是语音信号频域分析中广泛采用的 一种方法。语音波是一个非平稳过程,因此适用于周 期、瞬变或平稳随机信号的标准傅里叶变换不能直接 表示语音信号,而应该用短时傅里叶变换对语音信号 的频谱进行分析,相应的频谱称为“短时谱”。 进行频谱分析时,在时域数据进行短时FFT处理之 前都要进行加窗处理。在FFT处理之后,普通频谱分析 可以进行频域上的滤波处理,从而使频谱更加平滑。 最后IFFT处理观察恢复后的时域信号图形,频谱分析过 程(如图2所示)。
基于.MATLAB的声音信号频谱分析仪设计说明书

1.概述随着软硬件技术的发展.仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向[1]。
虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统.且功能灵活.很容易构建.所以应用面极为广泛。
基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器.如示波器、逻辑分析仪、信号发生器、频谱分析仪等[2]。
从发展史看.电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器.由于计算机性能的飞速发展.已把传统仪器远远抛到后面.并给虚拟仪器生产厂家不断带来连锅端的技术更新速率。
目前已经有许多较成熟的频谱分析软件.如SpectraLAB、RSAVu、dBFA等。
声卡是多媒体计算机最基本的配置硬件之一.价格便宜.使用方便。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件.他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令[3]。
本文将给出基于声卡与MATLAB的声音信号频谱分析仪的设计原理与实现方法.功能包括:<1> 音频信号信号输入.从声卡输入、从WAV文件输入、从标准信号发生器输入;<2> 信号波形分析.包括幅值、频率、周期、相位的估计.以及统计量峰值、均值、均方值和方差的计算;<3> 信号频谱分析.频率、周期的估计.图形显示幅值谱、相位谱、实频谱、虚频谱和功率谱的曲线。
2.设计原理2.1波形分析原理2.1.1 信号频率、幅值和相位估计<1>频率<周期>检测对周期信号来说.可以用时域波形分析来确定信号的周期.也就是计算相邻的两个信号波峰的时间差、或过零点的时间差。
这里采用过零点<ti>的时间差T<周期>。
频率即为f = 1/T.由于能够求得多个T值<ti有多个>.故采用它们的平均值作为周期的估计值。
<2>幅值检测在一个周期内.求出信号最大值y max与最小值y min的差的一半.即A = <y max - y min>/2.同样.也会求出多个A值.但第1个A值对应的y max和y min不是在一个周期内搜索得到的.故以除第1个以外的A值的平均作为幅值的估计值。
基于MATLAB的声音信号频谱分析仪设计

基于MATLAB的声音信号频谱分析仪设计1设计目的及要求1.1设计目的基于MATLAB设计一个简易声音信号频谱分析仪。
1.2设计要求(1)输入方式:①利用电脑声卡录音;②打开WAV文件;(2)时域分析:计算原始信号的幅值,频率,相位;(3)频域分析:利用快速傅里叶变换(FFT)得到信号的幅频特性和相频特性。
2设计原理分析2.1设计结构设计的结构图如下:2.2 声音输入方式(1) 声卡输入:利用MATLAB 中的函数wavrecord 函数获取声卡录制的声音,录制频率和时间可以设置。
默认双声道录制。
(2) 打开WA V 文件:通过MATLAB 中的uigetfile 函数获取声音文件。
如果获取的信号是单声道信号,则双声道分析不可选。
2.3 声道选择设置一个变量handles.sd,如果选择的是左声道,handles.sd =1;如果是右声道,handles.sd =2;如果是双声道,handles.sd =0;在时域和频域分析的时候,通过handles.sd 的值来判断声道。
2.4 时域分析(1) 幅值检测:在一个周期内,求出信号最大值max y 与最小值min y 的差的一半,即max min ()/2A y y =-,同样,也会求出多个A 值,但第1个A 值对应的max y 和min y 不是在一个周期内搜索得到的,故以除第1个以外的A 值的平均作为幅值的估计值。
(2) 频率检测:对周期信号来说,可以用时域波形分析来确定信号的周期,也就是计算相邻的两个信号波峰的时间差、或过零点的时间差。
这里采用过零点i t 的时间差T (周期)。
频率即为1/f T =,由于能够求得多个T 值(i t 有多个),故采用它们的平均值作为周期的估计值。
(3) 相位检测:采用过零法检测,通过判断与同频零相位信号过零点时刻,计算其时间差,然后换成相应的相位差。
2(1/)i t T φπ=-,同样,以φ的平均值作为相位的估计值。
利用MATLAB软件对音频信号进行频谱分析与处理

利用MATLAB软件对音频信号进行频谱分析与处理一、简介频谱分析是通过对信号的频率成分进行分析,它允许我们了解信号的特性,计算信号的能量分布,同时还可以用来定位造成干扰的频率组件,以及检测和分析信号的变化。
MATLAB是一种编程语言和科学计算软件,它可以非常便捷地实现对音频信号的频谱分析和处理。
二、实现方法1.导入音频信号在使用MATLAB进行频谱分析时,首先需要先将音频信号导入MATLAB环境中。
可以使用audioplayer和audioread函数来完成这一步骤,示例代码如下:[audioData, fs] = audioread(‘AudioFile.wav’);player = audioplayer(audioData, fs);play(player);其中audioData表示从wav文件中读取的音频数据,fs表示采样率,player表示存储audioData和fs的audioplayer实例,play函数可以播放音频文件。
2.信号预处理针对所记录的音频信号,需要进行一些基本的信号处理操作,包括去噪、均衡、时域平均等。
去噪可以用MATLAB内置的函数完成,例如:audioData_NoiseRemoved = denoise(audioData,‘meanspectrum’);均衡是指将频谱的一些区域调整到更好的水平,可以用equalizer函数实现:audioData_Equalized = equalizer(audioData, ‘bandwidth’, 0.2);时域平均则可以使用conv函数实现:audioData_Meaned = conv(audioData, [1/N 1/N ... 1/N]);3.频谱分析频谱分析的主要工作是计算信号的谱密度,也就是每一个频率分量的能量。
基于MATLAB的声音信号频谱分析的课程设计

基于MATLAB 的声音信号频谱分析组号:11组1. 课程设计目的综合运用数学信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MA TLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
2. 理解设计基本要求1) 熟悉离散信号和系统的时域特性。
2) 熟悉线性卷积和相关的计算编程方法。
3) 掌握序列傅里叶变换的计算机实现方法,利用序列傅里叶变换对离散信号、系统和系统的响应进行频域分析。
4) 学会MA TLAB 的使用,掌握MA TLAB 的程序设计方法。
5) 利用MA TLAB 对wav 文件进行频谱分析。
3. 课程设计内容选择一个wav 文件作为分析的对象,或录制一段语音信号,对其进行频谱分析,根据信号的频谱特点重构语音信号。
4. 课程设计实现步骤(1)语音信号的获取选择一个wav 文件作为分析的对象,可以利用Windows 下的录音机或其他软件,录制一段自己的话音,时间控制在1s 左右,然后再MA TLAB 软件平台下,通过使用wavread 函数,理解采样频率、采样位数等概念。
(2)wav 信号的频谱分析画出语音信号的时域波形,然后对语音信号进行频谱分析。
在MA TLAB 中,可以利用函数fft 对信号进行快速傅里叶变化,得到信号的频谱特性。
在频谱特性中分析最大值的位置(可能有几个),它代表的频率和时域的采样时间有关,相邻的两点之间的距离为()s NT f 1=。
其中,N 是离散傅里叶变换用的点数,s T 是采样的时间,前面在读取 wav 文件时得到了采样频率s s T f 1=。
既然知道了该声波的频谱,按频率就可以反演它的时域值,利用以上分析的主要峰值来重构声波。
由于没有考虑相位和其他的频谱分量,所以波形和原来的波形相差甚大,但大体的频率是没有错的。
(3)wav 文件的分段傅里叶分析语音是分音节的,应把它分段分析,而且实际运用中DSP 中FFT 的点数是有限的,一般只能达到千点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的简易声音信号频谱分析仪设计摘要语音信号处理技术是语音处理领域中新近发展起来的一个学科分支,而频谱分析技术是进行语音信号处理的基础。
DFT及FFT变换是进行数字信号频谱分析的重要方法。
DFT是FFT的基础, FFT是DFT 的快速算法。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,运用它来进行语音信号的采集、分析和处理相当方便。
本文介绍了在MATLAB环境中如何采集声音信号和采集后的频谱分析方法,并使用MATLAB软件的GUI模块,设计了一个简易的声音信号频谱分析仪。
关键字:MATLAB,FFT,声音信号,频谱分析1概述随着信息时代和数字世界的到来,数字信号处理己成为当今一门极其重要的学科和技术领域,数字信号处理在通信、语音、图像、自动控制、医疗和家用电器等众多领域得到了广泛的应用。
任意一个信号都具有时域与频域特性,信号的频谱完全代表了信号,因而研究信号的频谱就等于研究信号本身。
通常从频域角度对信号进行分析与处理,容易对信号的特性获得深入的了解。
因此,信号的频谱分析是数字信号处理技术中的一种较为重要的工具【2】。
声卡是计算机最基本的配置硬件之一,价格便宜,使用方便。
MATLAB 工具箱集成了一些语音处理功能函数。
本文将给出基于声卡与MATLAB 的声音信号频谱分析仪的设计原理与实现方法。
2 设计原理频谱分析用傅立叶变换将波形x(t)变换为频谱X(f),从另一角度来了解信号特征。
常见傅里叶变换有DFT 和FFT 。
DFT 是FFT 的基础, FFT 是DFT 的快速算法,在MATLAB 中可以利用函数fft 来计算序列的离散傅里叶变换DFT 。
FFT 是时域和频域转换的基本运算。
2.1 离散傅里叶级数如果x(n)表示周期为N 的周期序列,即:()()x n x n kN =+ k 为任意整数 (2-1)周期序列用离散的傅里叶级数来表达,其表达式如下:1(2/)01()()N j N kn k x n X k eN π-==∑ (2-2)式(2-2)称为周期序列的离散傅里叶变换的级数表示。
对上式进行离散傅里叶逆变换,得:1(2/)0()()N j N kn n X k x n e π--==∑(2-3)式(2-3)称为周期序列的离散傅里叶逆变换的级数表示。
记:(2/)j N N W e π-= (2-4)这样,结合式(2-2)和式(2-3)周期序列的离散傅里叶级数对可表示为:1010()()1()()N kn N n N kn N k X k x n W x n X k W N -=--=⎧=⎪⎪⎨⎪=⎪⎩∑∑ (2-5)2.2 D FT 和FFT 变换对于给定的一段时域信号,可以通过傅里叶变换得到相应的频域信号。
计算公式如下:1100()()cos(2)()sin(2)N N n n X f x n fn t j x n fn t t ππ--==⎡⎤=∆+∆∆⎢⎥⎣⎦∑∑(2-6)上式中,N 为样本点数,1/t Fs ∆=为采样时间间隔。
采样信号的频谱是一个连续的频谱,故采用离散傅里叶变换(即DFT ),计算公式如下:1(2/)0()(),0,1,2,,1N j N kn n X k f x n e t k N π--=∆=∆=⋅⋅⋅-∑(2-7)上式中,N 为样本点数,1/t Fs ∆=为采样时间间隔,/f Fs N ∆=。
由于采用式(2-7)进行计算时,有大量的指数(等价于三角函数)运算,效率很低,因此实际中多采用快速傅里叶变换(即FFT )。
其原理是通过选择和重新排列,将重复的三角函数计算得到的中间结果保存起来,以减少重复计算带来的时间浪费。
由于三角函数计算的重复量相当大,故FFT 能极大地提高运算效率。
2.3 汉宁窗频谱修正采用FFT 算法计算信号频谱时,设数据点数为N ,采样频率为Fs 。
则计算得到的离散频率点为:/,0,1,2,,/2i f i Fs N i N =⨯= (2-8)如果信号中的频率分量与频率取样点不重合,则只能按四舍五入的原则,取相邻的频率取样点谱线值代替。
这就产生了栅栏效应。
频谱的离散取样造成了栅栏效应,谱峰越尖锐,产生误差的可能性就越大。
实际应用中,由于信号截断的原因,产生了能量泄漏,即使信号频率与频谱离散取样点不相等,也能得到该频率分量的一个近似值。
信号截断带来的能量泄漏分主瓣泄漏和旁瓣泄漏,主瓣泄漏可以减小因栅栏效应带来的谱峰幅值估计误差,而旁瓣泄漏则是完全有害的。
实际应用时,可以通过使用截断函数 (窗函数)来减小栅栏效应。
下面仅以汉宁窗函数为例,说明其工作原理。
汉宁窗函数是余弦平方函数,又称为升余弦函数,它的时域形式可以表示为:11cos ,2()0,t t T TT w t t T π⎧⎛⎫+≤⎪ ⎪=⎝⎭⎨⎪>⎩ (2-9)它的频率幅度特性函数为:()()sin sin sin 1()2T T T W T T T ωπωπωωωωπωπ+-⎡⎤=++⎢⎥+-⎣⎦ (2-10)汉宁窗的时域和频域曲线图如下所示:汉宁窗时域波形曲线图汉宁窗频域特性曲线图在MATLAB中,生成汉宁窗的函数是hanning。
使用该函数进行频谱修正时,先生成一个和待修正的样本具有相同点数的汉宁窗。
然后,将原样本序列和生成的汉宁窗序列相乘,得到修正后的样本。
最后,对修正后的样本进行FFT变换,即可得到修正后的频谱特性曲线。
3MATLAB程序设计3.1图形界面设计首先打开MATLAB,在命令窗口中输入guide命令进入GUI图形设计界面。
再新建一个空白的图形界面文件,添加如下的控件并设计它们的布局。
(1)添加3个axes控件,用于显示时域波形图和频域频谱图;(2)添加7个static text控件,用于窗口及其他控件的说明使用;(3)添加4个panel控件,将一组相关的控件框在一起;(4)添加5个edit控件,用于输入和显示幅值、频率等参数值;(5)添加1个pop-up menu控件,用于选择信号发生器产生的信号类型;(6)添加11个push button控件,其中3个用于控制输出显示相应的信号波形和频谱,2个用于控制播放声音信号,其余6个用于控制3个坐标轴的放大和缩小。
双击各个控件,打开其属性编辑窗,即可修改其名称、颜色、大小、初始值及位置等属性。
最终编辑好的界面如下图所示:3.2M ATLAB编程当界面控件及布局创建完成以后,点击运行即可自动生成包含各控件回调函数在内的m文件。
MATLAB对于输入框、按钮及滑动条等控件的响应都是通过自动调用相应的回调函数来实现的。
回调函数即在一定的操作下自动执行的指令代码。
本次简易声音信号频谱分析仪设计的主要功能有声音文件的打开读取,声音信号的采集录制,信号发生器产生波形,时域信号的频谱分析以及频谱的汉宁窗口校正。
下面就依次介绍实现各功能M代码的编写。
(1).wav声音文件的打开读取。
实现的代码及说明如下:function PB_Open_Callback(hObject, eventdata, handles)[filename] = uigetfile('*.wav','选择声音文件');[y,fs] = wavread(filename);handles.y = y;N = size(handles.y);guidata(hObject,handles);t=0:1/fs:(N(1)-1)/fs;plot(handles.axes1,t,handles.y);xlabel(handles.axes1,'Time (s)','fontweight','bold');ylabel(handles.axes1,'Amplitude','fontweight','bold');grid(handles.axes1);上面代码为文件打开按钮的回调函数中的一部分,第一句打开文件对话框,限定选择.wav文件,返回选择的文件名。
第二句读取打开的声音文件,并获取音频采样率的值。
接着将获得的信号数据存入handles句柄。
然后,根据获取到的音频采样率和数据长度还原出时间轴序列。
最后将信号波形输出到axes1坐标轴上。
(2)声音信号的采集录制。
实现的代码如下:function PB_Record_Callback(hObject, eventdata, handles)fs=str2double(get(handles.edit_Fs,'String')); % 获取采样频率值handles.y=wavrecord(5*fs,fs,'int16'); % 录制声音,并设定时间guidata(hObject,handles);上面代码为录制声音按钮的回调函数其中的一部分。
首先利用get函数获取采样率编辑框中的参数值,然后用该采样率录制一段声音信号,并将它保存到handles数据中,方便后面的信号处理和播放。
(3)信号发生器产生波形。
实现的代码如下:function PB_SignalGeneration_Callback(hObject, eventdata, handles)fs=str2double(get(handles.edit_Fs,'String'));a=str2double(get(handles.edit_amplitude,'String'));f=str2double(get(handles.edit_frequency,'String'));t=0:1/fs:1.0;i=get(handles.PM_Signaltype,'Value');switch icase 1handles.y=a*sin(2*pi*f*t);case 2handles.y=a*square(2*pi*f*t);case 3handles.y=a*sawtooth(2*pi*f*t,0.5);case 4handles.y=a*sawtooth(2*pi*f*t);case 5handles.y=sqrt(a)*randn(size(t));endguidata(hObject,handles);上面代码为信号产生分析按钮的回调函数其中的一部分。
前三句利用get函数获取到采样频率、产生信号的幅度和频率值,然后再获取弹出菜单控件的选择项序号,根据选择项序号的值,用switch语句和MATLAB自带的波形函数产生相对应的信号波形数据。
最后将生成的波形数据保存到handles数据中,方便后面的信号处理。