matlab频谱分析仪

合集下载

基于MATLAB的频谱分析仪设计

基于MATLAB的频谱分析仪设计

基于MATLAB的频谱分析仪设计
频谱分析仪是一种用于测量信号频谱以及分析信号频谱特征的仪器。

频谱分析仪在许多领域具有广泛的应用,例如通信系统、音频处理、机械振动等。

在这篇文章中,我们将基于MATLAB来设计一个频谱分析仪。

首先,我们需要了解频谱是什么。

频谱是信号在不同频率上的能量分布情况。

在频谱分析中,常用的频谱表示方法有幅度谱和相位谱。

在MATLAB中,可以使用fft函数对信号进行频谱分析。

该函数将信号从时域转换为频域,并返回信号的幅度谱和相位谱。

接下来,我们需要设计一个用户界面,用于输入和显示信号数据。

可以使用MATLAB的图形用户界面(GUI)工具箱来实现。

首先,创建一个GUI窗口,包括信号输入框、频谱显示框和按钮。

用户可以在信号输入框中输入信号数据,然后点击按钮来进行频谱分析。

在按钮的回调函数中,我们可以获取用户输入的信号数据,并使用fft函数对信号进行频谱分析。

然后,我们将频谱数据显示在频谱显示框中。

在频谱显示框中,我们可以使用MATLAB的plot函数来绘制频谱图。

可以将频率作为X轴,幅度谱作为Y轴进行绘制。

此外,我们还可以为频谱分析仪添加一些额外的功能,例如窗函数选择、功率谱密度估计、频谱平滑等。

这些功能可以使用MATLAB提供的函数来实现。

总结起来,基于MATLAB的频谱分析仪设计主要包括信号输入、频谱分析、频谱显示以及额外功能的添加。

通过MATLAB的函数和工具箱,我们可以方便地实现一个功能完善的频谱分析仪。

matlab频谱分析仪

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)

利用Matlab进行频谱分析的方法

利用Matlab进行频谱分析的方法

利用Matlab进行频谱分析的方法引言频谱分析是信号处理和电子工程领域中一项重要的技术,用于分析信号在频率域上的特征和频率成分。

在实际应用中,频谱分析广泛应用于音频处理、图像处理、通信系统等领域。

Matlab是一种强大的工具,可以提供许多功能用于频谱分析。

本文将介绍利用Matlab进行频谱分析的方法和一些常用的工具。

一、Matlab中的FFT函数Matlab中的FFT(快速傅里叶变换)函数是一种常用的频谱分析工具。

通过使用FFT函数,我们可以将时域信号转换为频域信号,并得到信号的频谱特征。

FFT 函数的使用方法如下:```Y = fft(X);```其中,X是输入信号,Y是输出的频域信号。

通过该函数,我们可以得到输入信号的幅度谱和相位谱。

二、频谱图的绘制在进行频谱分析时,频谱图是一种直观和易于理解的展示形式。

Matlab中可以使用plot函数绘制频谱图。

首先,我们需要获取频域信号的幅度谱。

然后,使用plot函数将频率与幅度谱进行绘制。

下面是一个示例:```X = 1:1000; % 时间序列Y = sin(2*pi*10*X) + sin(2*pi*50*X); % 输入信号Fs = 1000; % 采样率N = length(Y); % 信号长度Y_FFT = abs(fft(Y)); % 计算频域信号的幅度谱f = (0:N-1)*(Fs/N); % 频率坐标plot(f, Y_FFT);```通过上述代码,我们可以得到输入信号在频谱上的特征,并将其可视化为频谱图。

三、频谱分析的应用举例频谱分析可以应用于许多实际问题中。

下面将介绍两个常见的应用举例:语音信号分析和图像处理。

1. 语音信号分析语音信号分析是频谱分析的一个重要应用领域。

通过对语音信号进行频谱分析,我们可以探索声波的频率特性和信号的频率成分。

在Matlab中,可以使用wavread 函数读取音频文件,并进行频谱分析。

下面是一个示例:```[waveform, Fs] = wavread('speech.wav'); % 读取音频文件N = length(waveform); % 信号长度waveform_FFT = abs(fft(waveform)); % 计算频域信号的幅度谱f = (0:N-1)*(Fs/N); % 频率坐标plot(f, waveform_FFT);```通过上述代码,我们可以获取语音信号的频谱特征,并将其可视化为频谱图。

matlab gui 频谱分析仪

matlab gui 频谱分析仪

频谱分析仪实验报告一:频谱分析仪的功能:(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函数,该函数能够实现读取麦克风录音信号。

基于LabVIEW和MATLAB的频谱分析仪设计

基于LabVIEW和MATLAB的频谱分析仪设计

固《计量与洲斌桂术)2007牟第34卷第9期基于LabVIEW和MATLAB的频谱分析仪设计DesignontheVirtualSpectrumAnalysisInstrumentBasedonLabVIEWandMATIAB陈华丽(武汉科技大学,湖北武汉430081)摘要:介绍丁基于LaJ)VIEW和MATLAB的虚拟频藩分析仪的设计过程。

重点阐述了基于LabVIEW的前赍用户界面设计、基于MATLAB的后台信号分析算法研制两部分。

该仪器充分发挥了MATL^_B的数值运算功能、LabVIEW的动态显示和虚拟仪器特睦,以极小的成本实现了传统频谱分析仪的功能,且具有鏖好的扩展性和人机界面。

关键词:囝彤化编程;频谱分析仪;虚拟仪器1引言信号处理几乎涉及到所有的工程技术领域,面频谱分析又是信号处理中一个非常重要的分析手段。

一般的频学分析都依靠传统频谱分析仪来完成,价格昂贵,体积庞大,不便于工程技术人员的携带。

虚拟频谱分析仪改变了原有频谱分析仪的整体设计思路,用软件代替了硬件,使工程技术人员可以用一部笔记本电脑到现场就可轻松完成信号的采集、处理及频谱分析。

在工程领域中,LabVIEW和MATLAB是倍受程序开发人员青睐的两种语言,剐于一些需要做大量数据运算处理的复杂应用以及某些复杂的频谱分析算法LabVIEW显得有些力不从心。

而MATLAB不能实现端口操作和实时控制,在界面方面也稍逊一筹。

在实际工程应用中将二者结合起来取长补短,具有非常实用的价值。

本文将重点介绍基于LabVIEW和MAT—LAB的虚拟频谱分析仪的设计。

2基于LabVIEW和MATLAB的虚拟频谱分析仪的设计2.1基于LabVIEW的前台用户界面设计信号分析模块的前面板设置了一个WaveformGraph控件进行波形显示,显示对信号进行各种分析的结果。

分析仪能够同时进行时域分析和频域分析,时域分析包括微分、积分、卷积、自相关和互相关,频域分析包括F丌、Hilbert变换、小波变换、Hartley变换和IFFT变换,时域分析和频域分析可根据实际需要进行扩展。

基于matlab的频谱分析仪设计

基于matlab的频谱分析仪设计

Frequency AnalyzerYangXiao M2013705103HuaZhong University of Science and TechnologySchool of Mechanical Science and Engineering Abstract: Matlab Is a numerical analysis, matrix calculation, scientific data visualization and nonlinear dynamic state system modeling and simulation, and other functions of practical software engineering.It’s easy to use the windows environment and cast off a tradition on the interactive programming language (such as C, Fortran) Edit mode In large range.In this report,The task is to design a frequency analyzer by using matlab.Keyword:frequency analyzer;Matlab;time-domainanalysis;frequency-domain analysis;1.PrefaceMATLAB is called Matrix Laboratory,which is designed by the United States MathWorks company.It’s a commercial mathematical software. Matlab can be use for Matrix operations, mapping functions and data, algorithm, creating the user interface, connect to other programming languages procedures, mainly used in engineering calculations, control design, signal processing and communications, image processing, signal detection, design and financial modeling analysis and other fields. GUI (Graphical User Interface, referred to as GUI, known Graphical User Interface) is displayed using the graphical user interface of computer operations.. Matlab has a powerful GUl tool. In this report, by using matlab GUI tool we could design a frequency analyzer.Frequency analyzer is the instrument which could be used to study the structure of the electrical signal spectrum, and used to measure the signal parameters of signal distortion, modulation, frequency stability and spectral purity.Frequency analyzer could be used to measure some parameters of amplifier and filter circuit system , and it is a kind of multipurpose electronic measuring instrument.FFT (Fast Fourier Transformation) is the fast algorithm of DFT(discrete Fourier transformtion), which is based on discrete Fourier transform.By using FFT we could get the answer faster than DFT.2.IntroduceThe frequency analyzer which is designed by using matlab have three models:record,play wav file and generator some waves .Every model could make three kinds of waveforms:the time domain figure,the frequency spectrum domain figure and the power spectrum figure.We could get the message we want from the frequency analyzer.The interface is that:2.1 Interface3. Design PrinciplesThe task is to design the frequency analyzer which can record,open wav file and play it,generator some kinds of waveforms . Each waveform could do FFT analysis and draw its frequency spectrum figure and power spectrum figure.3.1 signal input3.1.1 choose signal inputWhen we start using the frequency analyzer,we should first set the sampling frequency,sampling numbers and the model of inputting signal.The frequency analyzer has three model of inputting:it’s the record,open and play wav file,signal generator.The program is(just the record):val=get(handles.model,'Value');switch valcase 1h=findobj('Tag','recordtime');set(h,'enable','on');h=findobj('Tag','startrecord');set(h,'enable','on');h=findobj('Tag','filename');set(h,'enable','off');h=findobj('Tag','openfile');set(h,'enable','off');h=findobj('Tag','wave');set(h,'enable','off');h=findobj('Tag','amplitude');set(h,'enable','off');h=findobj('Tag','frequency');set(h,'enable','off');h=findobj('Tag','phase');set(h,'enable','off');h=findobj('Tag','add');set(h,'enable','off');h=findobj('Tag','generatorwave');set(h,'enable','off');When we choose one model ,the others couldn’t work.3.1.2 The recordWe could input the sound signal by using the microphone.Matlab provides the wavecord function,which can be used to get the signal of microphone.The program of record is :Fs=str2double(get(handles.samplefrequency,'String'));N=str2double(get(handles.recordtime,'String'))*Fs;handles.y=wavrecord(N, Fs,'double');handles.inputtype=1;guidata(hObject,handles);plot(handles.axes1,handles.y);ysize=size(handles.y);set(handles.samplenumber,'String',num2str(ysize(1)));3.1.3 Read the wav fileWe use the function of wavread to open the wav file and play it. Theprogram is:[fname,filepath]=uigetfile('*.wav','wav');set(handles.filename,'string',fname);[handles.y,Fs,bit]=wavread(fname);temp = wavread(get(findobj('Tag','filename'),'String'));handles.inputtype=2;guidata(hObject,handles);plot(handles.axes1,(1:length(handles.y))/Fs,handles.y);ysize=size(handles.y);set(handles.samplenumber,'String',num2str(ysize(1)));set(handles.samplefrequency,'string',Fs);wavplay(temp,Fs);3.1.4 Signal generatorMatlab has the general functions which can generator the general waveform directly.We judge the signals should add or not.The program is:Fs=str2double(get(handles.samplefrequency,'String'));N=str2double(get(handles.samplenumber,'String'));x=linspace(0,N/Fs,N);t=get(handles.wave,'Value');f=str2double(get(handles.frequency,'String'));a=str2double(get(handles.amplitude,'String'));p=str2double(get(handles.phase,'String')); switch tcase 1y=a*sin(2*pi*x*f+p);case 2y=a*square(sin(2*pi*x*f+p));case 3y=a*sawtooth(2*pi*x*f+p,0.5);case 4y=a*sawtooth(2*pi*x*f+p);case 5y=a*(2*rand(size(x))-1);endif get(handles.add,'Value')==0.0handles.y=y;elsehandles.y=handles.y+y;endhandles.inputtype=3;guidata(hObject,handles);plot(handles.axes1,handles.y);xlim([0 200]);3.2 Time domain analysisMatlab provides the functions of mean and std,which can easily calculate the mean and variance.The program is :Fs=str2double(get(handles.samplefrequency,'String'));N=str2double(get(handles.samplenumber,'String'));set(handles.vpp,'String',(max(handles.y)-min(handles.y)));set(handles.average,'String',mean(handles.y));set(handles.variance,'String',std(handles.y)^2);3.3 Frequency domain analysisMatlab provide the function of FFT,which can easily achieve the fast Fourier transform algorithm.The program is:Fs=str2double(get(handles.samplefrequency,'String'));N=str2double(get(handles.samplenumber,'String'));temple=handles.y;f=linspace(0,Fs/2,N/2);P=2*fft(temple,N)/N;Pyy=sqrt(P.* conj(P));plot(handles.axes2,f,Pyy(1:N/2));plot(handles.axes3,f,abs(P(1:N/2)).^2);3.4 Simulation3.4.1 The recordWe select the record ,set the record time and sampling frequency,pushthe start record button to begin recording.We can get the waveform of the sound in the graphic area axes1.If we push the time analysis button ,we could get the parameter of vpp,average variance.If we push the fft button,we could get the frequency spectrum figure and power spectrum figure in the graphic area axes2 and axes3.The result is shown:3.1 Image of record3.4.2 Read the wav fileThe result is shown:3.2 wav file amplitude-frequency characteristic3.4.3 Signal generatorWe set the waveform, amplitude, frequency, phase and other information to generate the waveform.The time domain analysis and frequency domain analysis is shown:3.3 amplitude-frequency characteristic of sin wave3.4 amplitude-frequency characteristic of square waveWe can add some waves and analysis3.5 phase frequency characteristics of Superposition signalOther waveform analysis:3.6 amplitude-frequency characteristic of noise4 .Exist problemWhen using the signal generator to generator the wave,the picture ofaxes3 (power spectrum)would change.I can’t solve this problem.And Ifail to build the window function.5.ConclusionIn the future study, I will learn MATLAB this powerful engineering software more harder and try to solve some common engineering problems.References[1] 薛山. MATLAB基础教程. [M] 北京:清华大学出版社,2011.3。

基于.MATLAB的声音信号频谱分析仪设计说明书

基于.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的声音信号频谱分析仪设计

基于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写控制频谱仪语句
控制频谱仪是一项非常重要的技术,它可以帮助我们分析信号的频率和幅度特征。

在matlab中,我们可以通过编写相应的语句来实现对频谱仪的控制。

以下是一些常用的matlab语句:1. 打开设备使用instrfind函数查找可用设备,并使用fopen函数打开所需设备。

2. 设置参数设置采样率、FFT点数、起始/终止频率等参数。

这些参数将影响到后续数据处理结果。

3. 获取数据使用fread函数从设备中读取数据,并进行必要的转换(如FFT变换)以得到频域信息。

4. 绘图显示利用plot函数将获取到的频域信息进行可视化展示,方便用户观察和分析信号特征。

5. 关闭设备完成操作后,需要关闭已经打开的设备以释放资源并保护硬件安全性能。

以上就是一些基本控制频谱仪时可能会涉及到的matlab语句。

当然,在实际应用中还有许多其他功能需要根据具体需求进行编写代码实现。

matlab频谱分析仪

matlab频谱分析仪

频谱分析仪摘要频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量,是一种多用途的电子测量仪器。

随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向。

虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。

本文介绍了一种使用GUI工具箱用matlab实现的简易虚拟频谱分析仪的设计方法。

关键词 matlab,频谱分析仪,时域分析,频域分析目录1概述 32技术路线 43实现方法 53.1搭建GUI界面 53.2信号输入 63.2.1选择信号输入 63.2.2声卡输入 73.2.3读取wav文件 73.2.4信号发生器输入 73.3时域分析 83.4频域分析 93.5仿真 103.5.1声卡输入 103.5.2读取wav文件 103.5.3信号发生器 114存在的问题 155致谢 15参考文献 151概述MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件。

可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。

MATLAB自带了强大的GUl工具[1]。

在本文中,将利用MATLAB的GUI工具,设计出数字频谱分析仪。

频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量,可用以测量放大器和滤波器等电路系统的某些参数,是一种多用途的电子测量仪器。

基于matlab简易声音信号频谱分析仪设计说明书

基于matlab简易声音信号频谱分析仪设计说明书
(3)对在MATLAB中打开文件对话框的问题。MATLAB顶用于打开文件对话框的函数是uigetfile。该函数能够有多个输入参数和输出结果。本设计中参数设置时,限定了打开的文件类型为.wav类型,返回值是打开的文件名。
(4)MATLAB提供的声音文件读取函数和录音函数的利用问题。MATLAB顶用于声音读取的函数是wavread,该函数输入参数为文件名,输出结果有双声道的声音信号矩阵和音频采样率值。MATLAB中基于PC的录音函数是wavrecord,利用该函数时发觉,必需先设定好录音的时刻。关于该问题,我想过用多种方式来解决,但仍是没有找到十分好的解决方法。
N = size;
guidata(hObject,handles);
t=0:1/fs:(N(1)-1)/fs;
plot,t,;
xlabel,'Time (s)','fontweight','bold');
ylabel,'Amplitude','fontweight','bold');
grid;
上面代码为文件打开按钮的回调函数中的一部份,第一句打开文件对话框,限定选择.wav文件,返回选择的文件名。第二句读取打开的声音文件,并获取音频采样率的值。接着将取得的信号数据存入handles句柄。然后,依照获取到的音频采样率和数据长度还原出时刻轴序列。最后将信号波形输出到axes1坐标轴上。
实际应历时,能够通过利用截断函数(窗函数)来减小栅栏效应。下面仅以汉宁窗函数为例,说明其工作原理。
汉宁窗函数是余弦平方函数,又称为升余弦函数,它的时域形式能够表示为:
(2-9)
它的频率幅度特性函数为:
(2-10)

打造MATLAB软件与安捷伦信号与频谱分析仪完美结合

打造MATLAB软件与安捷伦信号与频谱分析仪完美结合

查询 功 能等 。 界面 中新增 的预 览 窗格 可 显 示 零 件 缩略 图和 详细 的版 本数 据, 便于用户打开文件或查看属性。 用 户 可 直 接 从 S o li dW o r k s 2 0 0 9 中对 S o lidW o r k s E n te r p r is e P D M 2 0 0 9 库 中 的任意两 个文档进行 比较 。 还 有一 个 新集成 的功 能就 是根据 提 示 单击“ 是 ” 迅 速检 出只 读文 件 。 另外 , 在检入 文 件 时 , S o i ldw o r k s 工 程 图现 在 可 以 自 动 并 入 3 D 建模零件 和装配 体 。 ‘rA

往 是很难 或几 乎不可 能实现 的。 双 方 的这 一 协议让 用户可 以一 站 式地获得
高品质仪器和数据分析软件 。
“ M A T L A B 非 常重 要 , 我 们 的客户 普 遍 都在 使用 它 ” , 安捷 伦信 号 分 析 事业
部 副 总裁兼 总经 理 G u y S e n e 说道 , “ 我们达 成 的协 议 可 为用 户提供 方便 的硬 件与
S o lidW o r k s ) 宣 布 在 中 国 地 区 推 出
S o l id W o r k s ~ E n te r p ri s e P D M 2 0 0 9 。 S o lidW o r k s E n te r pr is e P D M 2 0 0 9
深 入 集成 了 S o lidW o r ks 的功 能, 这 项新功能允许用户直接从其 CA D 界 面利用 PD M 一 系列 的高效处 理 能 力, 如 “ 更 改状态 ” 和 “ 使 用位 置 ”
1
百超 中 国董 事 总经 理 王 鹤 龄表 示 : “ 折弯服 务热 线 的开通 , 将使我们 与用

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

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

基MATLAB的简易声音信号频谱分析仪设计摘要声音是各种信号传递与交流最直接的体现,因此对声音信号的研究有十分重要的意义。

频谱分析技术是进行语音信号处理的基础,DFT及FFT变换是进行数字信号频谱分析的重要方法。

DFT是FFT的基础, FFT是DFT的快速算法。

而MATLAB是一个数据分析和处理功能十分强大的工程实用软件,运用它来进行语音信号的采集、分析和处理,具有实现简单、性价比和灵活度高的特点。

本文介绍了在MATLAB环境中如何采集声音信号和采集后的频谱分析方法,并使用MATLAB软件的GUI模块,设计了一个简易的声音信号频谱分析仪1介绍语音信号处理技术是语音处理领域中新近发展起来的一个学科分支。

随着科技的发展,对于语音信号的采集已经有很多种方法,如基于单片机技术、VC,C++等编程、纯硬件电路,本文介绍的方法主要通过一款软件MATLAB。

它是MathWorks 公司推出的一种面向工程和科学运算的交互式计算软件, 其中包含了一套非常实用的工具-- 数据采集工具箱。

使用此工具箱更容易将实验测量、数据分析和可视化的应用集合在一起。

数据采集工具箱提供了一整套的命令和函数, 通过调用这些命令和函数, 可以直接控制数据采集设备的数据采集。

这些数据工具箱使信号的频谱分析,读取MAV文件,处理从声卡中输入的声音信号非常容易。

1.1频谱分析的重要性频谱分析是把信号的幅值、相位或能量变换以频率坐标轴表示,进而分析其频率特性的一种分析方法。

对信号进行频谱分析可以获得更多有用信息,如求得动态信号中的各个频率成分和频率分布范围,求出各个频率成分的幅值分布和能量分布,从而得到主要幅度和能量分布的频率值。

随着信息时代和数字世界的到来,数字信号处理己成为当今一门极其重要的学科和技术领域,数字信号处理在通信、语音、图像、自动控制、医疗和家用电器等众多领域得到了广泛的应用。

任意一个信号都具有时域与频域特性,信号的频谱完全代表了信号,因而研究信号的频谱就等于研究信号本身。

运用Matlab虚拟信号频谱分析

运用Matlab虚拟信号频谱分析

运用Matlab虚拟信号频谱分析摘要:频谱分析被被广泛运用于各大领域,如物理.电子学 .建筑学等等,它是对各种震动进行特性分析的重要手段。

而频谱分析使用Matlab进行的,在Matlab 中运用函数FFT(快速傅立叶变换)和DFT(离散傅立叶变换)进行频谱分析。

所以我们要熟悉运用Matlab软件以及DFT和FFT进行频谱分析的方法,利用这个方法我们可以减少繁琐的测量工作,减少错误。

最后通过实例得到虚拟结果。

关键词:Matlab.FFT.DFT.频谱分析。

0.引言在信号处理过程中,频域分析方法往往逼时域分析方法更加方便和有效,对于确知连续时间信号,其品与分析可以通过连续时间傅立叶变换进行,但是,这样计算出来的结果仍然是连续函数,计算机不能直接加以处理,为了实现数值计算,还仍需对其进行离散化处理,即采用DFT(离散傅立叶)进行分析。

DFT的快速算法的出现,使DFT 在数字通信.图像处理.功率估计.系统分析与仿真.雷达信号处理等各个领域得到广泛应用.1.频谱分析的认识利用傅里叶变换的方法对振动的信号进行分解,并按频率顺序展开,使其成为频率的函数,进而在频率域中对信号进行研究和处理的一种过程,称为频谱分析,一般理论上是利用傅里叶分析的方法,求出与时域描述相对应的频域描述,从中找出信号频谱的变化规律,以达到特征提取的实验目的。

但实际的待分析信号一般没有解析式,直接利用公式进行傅里叶分析非常困难。

DFT是一种时域和频域均离散化的傅里叶变换,适合数值计算且有快速算法,是分析信号的有力工具。

2序列的DFT变换DFT(离散傅里叶变换),是傅里叶变换在时域和频域上都呈离散的形式,将信号的时域采样变换为其DTFT的频域采样。

在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。

即使对有限长的离散信号作DFT,也应当将其看作其周期延拓的变换。

在本次虚拟中用Matlab进行可直接得出结果。

基于MATLAB的声音信号频谱分析仪

基于MATLAB的声音信号频谱分析仪

基于MATLAB的声音信号频谱分析仪齐齐哈尔大学综合实践1题目基于MATLAB的声音信号频谱分析仪学院专业班级学生姓名指导教师成绩1.绪论11概述随着软硬件技术的发展仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统且功能灵活很容易构建所以应用面极为广泛基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器如示波器逻辑分析仪信号发生器频谱分析仪等从发展史看电子测量仪器经历了由模拟仪器智能仪器到虚拟仪器由于计算机性能的飞速发展已把传统仪器远远抛到后面并给虚拟仪器生产厂家不断带来连锅端的技术更新速率目前已经有许多较成熟的频谱分析软件如SpectraLABRSAVudBFA等声卡是多媒体计算机最基本的配置硬件之一价格便宜使用软件他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令本文将给出基于声卡与MATLAB的声音信号频谱分析仪的设计原理与实现方法功能包括1 音频信号信号输入从声卡输入从WAV文件输入从标准信号发生器输入2 信号波形分析包括幅值频率周期相位的估计以及统计量峰值均值均方值和方差的计算3 信号频谱分析频率周期的估计图形显示幅值谱相位谱实频谱虚频谱和功率谱的曲线12 MATLAB软件介绍MATLAB 是美国MathWorks公司出品的商业数学软件用于算法开发数据可视化数据分析以及数值计算的高级技术计算语言和交互式环境主要包括MATLAB和Simulink两大部分MATLAB已成为国际公认的最优秀的科技应用软件之一具有编程简单数据可视化功能强可操作性强等特点而且配有功能强大专业函数丰富的图像处理工具箱是进行图像处理方面工作必备的软件工具MATLAB是矩阵实验室Matrix Laboratory的简称和MathematicaMaple并称为三大数学软件它在数学类科技应用软件中在数值计算方面首屈一指MATLAB可以进行矩阵运算绘制函数和数据实现算法创建用户界面连接其他编程语言的程序等主要应用于工程计算控制设计信号处理与通讯图像处理信号检测金融建模设计与分析等领域目前数字滤波器的设计有许多现成的高级语言设计程序但他们都存在设计效率较低不具有可视图形不便于修改参数等缺点而Matlab为数字滤波的研究和应用提供了一个直观高效便捷的工具它以矩阵运算为基础把计算可视化程序设计融合到了一个交互式的工作环境中尤其是Matlab工具箱使各个领域的研究人员可以直观而方便地进行科学研究与工程应用其中的信号处理工具箱图像处理工具箱小波工具箱等更是为数字滤波研究的蓬勃发展提供了可能利用傅里叶变换的方法对振动的信号进行分解并按频率顺序展开使其成为频率的函数进而在频率域中对信号进行研究和处理的一种过程称为频谱分析将信号在时间域中的波形转变为频率域的频谱进而可以对信号的信息作定量解释对信号进行频谱分析是对其进行傅里叶变换得到其振幅谱与相位谱分析软件主要为Matlab对于信号来说分与数字信号进行频谱分析时对于模拟信号来说首先对其进行抽样使其离散化然后利用DFT或者FFT然后对其幅度ABS和相位ANGLE的进行分析而对于数字信号来说则可直接进行离散傅里叶变换或快速傅里叶变换2.设计原理21频谱分析原理时域分析只能反映信号的幅值随时间的变化情况除单频率分量的简单波形外很难明确提示信号的频率组成和各频率分量大小而频谱分析能很好的解决此问题由于从频域能获得的主要是频率信息所以本节主要介绍频率周期的估计与频谱图的生成com与FFT对于给定的时域信号y可以通过Fourier变换得到频域信息YY可按下式计算式中N为样本容量Δt 1Fs为采样间隔采样信号的频谱是一个连续的频谱不可能计算出所有的点的值故采用离散Fourier变换 DFT 即式中Δf FsN但上式的计算效率很低因为有大量的指数等价于三角函数运算故实际中多采用快速Fourier变换 FFT 其原理即是将重复的三角函数算计的中间结果保存起来以减少重复三角函数计算带来的时间浪费由于三角函数计算的重复量相当大故FFT能极大地提高运算效率com 频率周期的估计对于Y kΔf 如果当kΔf 时Y kΔf 取最大值则为频率的估计值由于采样间隔的误差也存在误差其误差最大为Δf 2周期T 1f从原理上可以看出如果在标准信号中混有噪声用上述方法仍能够精确地估计出原标准信号的频率和周期这个将在下一章做出验证com 频谱图为了直观地表示信号的频率特性工程上常常将Fourier变换的结果用图形的方式表示即频谱图以频率f为横坐标Y f 为纵坐标可以得到幅值谱以频率f为横坐标arg Y f 为纵坐标可以得到相位谱以频率f为横坐标Re Y f 为纵坐标可以得到实频谱以频率f为横坐标Im Y f 为纵坐标可以得到虚频谱根据采样定理只有频率不超过Fs2的信号才能被正确采集即Fourier变换的结果中频率大于Fs2的部分是不正确的部分故不在频谱图中显示即横坐标f ∈[0 Fs2]23 模块划分模块化就是把程序划分成独立命名且可独立访问的模块每个模块完成一个子功能把这些模块集成起来构成一个整体可以完成指定的功能满足用户需求根据人类解决一般问题的经验如果一个问题由两个问题组合而成那么它的复杂程度大于分别考虑每个问题时的复杂程度之和也就是说把复杂的问题分解成许多容易解决的小问题原来的问题也就容易解决了这就是模块化的根据在模块划分时应遵循如下规则改进软件结构提高模块独立性模块规模应该适中深度宽度扇出和扇入都应适当模块的作用域应该在控制域之内力争降低模块接口的复杂程度设计单入口单出口的模块模块功能应该可以预测本着上述的启发式规则对软件进行如图 2所示的模块划分图 2频谱分析仪的模块划分24软件实现com计MATLAB是Mathworks公司推出的数学软件它将数值分析矩阵计算信号处理和图形显示结合在一起为众多学科领域提供了一种简洁高效的编程工具它提供的GUIDE工具为可视化编程工具使得软件的界面设计像VB一样方便故本文采用MATLAB作为编程语言实现声音信号频谱分析仪以下所讲的都是在MATLAB70环境中为了实现预期的功能设计如图 3所示的界面图 3 频谱分析仪的界面设计com块的实现采样频率Fs与采样点数N是声音信号输入时共同需要作用的参数故将其独立出来下面为别介绍三种输入方式的实现1 这里声卡输入是指由麦克风录音得到的声音信号的输入MATLAB提供了wavrecord函数该函数能够实现读取麦克风录音信号以下是开始录音按钮的回调函数内容首先获得设定的Fs值Fs str2double get findobj Tagsamplerate String根据设定的录音时长进行录音将其存入handlesy中handlesy wavrecord str2double get handlesrecordtimeString Fs Fsint16保存handles结构体使得handlesy在别的函数中也能使用guidata hObjecthandles在波形显示区绘出波形plot handlestimehandlesytitle WAVE将所采到的点的数量输出在采样点数中ysize size handlesyset handlessamplenumStringnum2str ysize 12 WAV文件输入MATLAB提供了wavread函数该函数能够方便的打开并读取WAV文件中的声音信息并且同时读取所有声道下面是打开文件按钮回调函数的部分代码其它代码与声卡输入的类似从WAV文件中读取的声音信息并临时存放到temp变量中temp wavread get findobj Tagfilename String获得所选择的声道channel str2double get handleschannelString将指定声道的信息存放到handlesy中handlesy temp channel3 信号发生器 MATLAB有产生标准信号的函数如sawtooth能够产生三角波或钜齿波首先利用get函数获得波形soundtype频率frequency幅值amp和相位phase然后是以下代码switch soundtypecase 1 标准正弦波y ampsin 2pixfrequencyphasecase 2 方波y ampsign sin 2pixfrequencyphasecase 3 三角波y ampsawtooth 2pixfrequencyphase05case 4 钜齿波y ampsawtooth 2pixfrequencyphasecase 5 白噪声y amp 2rand size x -1otherwiseerrordlg Illegal wave typeChoose errerendif get handlesaddValue 00handlesy y 若没有勾选上混迭则将生成的波形赋给handlesyelse 否则将生成的波形与原有波形叠加handlesy handlesyyend25.运行实例与误差分析为了分析软件的性能并比较时域分析与频域分析各自的优势本章给出了两种分析方法的频率估计的比较分析软件的在时域和频域的计算精度问题com弦信号的频率估计用信号发生器生成标准正弦信号然后分别进行时域分析与频域分析得到的结果如图 4所示从图中可以看出时域分析的结果为f 4003702Hz频域分析的结果为f 417959Hz而标准信号的频率为400Hz从而对于标准信号时域分析的精度远高于频域分析的精度图 4 标准正弦信号的频率估计com 带噪声的正弦信号的频率估计先成生幅值100的标准正弦信号再将幅值50的白噪声信号与其混迭对最终得到的信号进行时域分析与频域分析结果如图 5所示可以看出时域分析的结果为f 1589498Hz频域分析的结果为f 200391Hz而标准信号的频率为200Hz 从而对于带噪声的正弦信号频域分析的精度远高于时域分析的精度图 5 带噪声的正弦信号的频率估计com 结果分析与结论在时域频率估计是使用过零检测的方式计算出从而对于带噪声的信号既容易造成误判也容易造成漏判且噪声信号越明显误判与漏判的可能性越大但在没有噪声或噪声很小时时域分析对每个周期长度的检测是没有累积误差的故随着样本容量的增大估计的精度大大提高在频域频率估计是通过找出幅值谱峰值点对应的频率求出故不会有时域分析的问题但频率离散化的误差及栅栏效应却是不可避免地带来误差仅频率离散化的误差就大于Fs2由实验结果及以上的分析可以得出结论在作频率估计时如果信号的噪声很小采用时域分析的方法较好如果信号的噪声较大采用频域分析的方法较好3总结本文给出了基于MATLAB的声音信号频谱分析仪的设计原理与实现方法在原理部分从时域和频域两个方面提供了信号分析所需要的算法流程及计算公式在原理的最后还结合软件工程理论给出了软件的模块划分这样在基于此设计原理的基础上可以用任何平台任何语言进行软件开发在实现方法上结合软件的界面和具体的代码讲述了整个软件编码实现的原理最后结合一个运行实例比较了时域分析与频域分析计算频率的异同之处并分析了误差的原因尽管MATLAB有强大的数学函数库使得编程时间大大缩短但MATLAB有它固有的缺陷如运行速度太慢因为它是解释型语言而且运行依赖了MATLAB软件无法发布为商用软件另外在控制用户输入上也比较难以实现这些缺陷也导致了用MATLAB所开发的软件有这些缺陷通过这次课程设计相信对以后在社会上工作和学习会有很多帮助让我们能更好的进入工作状态最重要的是这次课程设计也增加了我们对问题的研究和探讨在我们以后的学习中会有更多的帮助参考文献[1]黄昱软件频谱仪设计华中科技大学硕士学位论文 20045[2]肖旸胡耀祖基于虚拟技术的频谱分析仪器方案微机发展20036[3]张桂林张烈平基于声卡和Matlab的虚拟信号发生器现代电子技术[4]张海藩软件工程北京人民邮电出版社 20023。

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

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

百度文库基于MATLAB的声音信号频谱分析仪设计1.概述随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向错误!未找到引用源。

虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。

基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器,如示波器、逻辑分析仪、信号发生器、频谱分析仪等错误!未找到引用源。

从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器,由于计算机性能的飞速发展,已把传统仪器远远抛到后面,并给虚拟仪器生产厂家不断带来连锅端的技术更新速率。

目前已经有许多较成熟的频谱分析软件,如SpectraLAB、RSA Vu、dBFA等。

声卡是多媒体计算机最基本的配置硬件之一,价格便宜,使用方便。

MA TLAB是一个数据分析和处理功能十分强大的工程实用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令错误!未找到引用源。

本文将给出基于声卡与MATLAB的声音信号频谱分析仪的设计原理与实现方法,功能包括:(1) 音频信号信号输入,从声卡输入、从W A V文件输入、从标准信号发生器输入;(2) 信号波形分析,包括幅值、频率、周期、相位的估计,以及统计量峰值、均值、均方值和方差的计算;(3) 信号频谱分析,频率、周期的估计,图形显示幅值谱、相位谱、实频谱、虚频谱和功率谱的曲线。

2.设计原理波形分析原理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的声音信号频谱分析仪

基于MATLAB的声音信号频谱分析仪作者:尹学爱马国利冯伟伟来源:《教育教学论坛》2018年第04期摘要:对声音信号进行频谱分析,是认识声音信号和处理声音信号的重要方法,因而基于声音信号频谱检测具有重要的意义。

通过PVDF压电薄膜传感器采集音频信号,利用信号处理模块、声卡和MATLAB工程软件对音频信号进行频谱分析,实现音频数据信息的分析显示。

关键词:PVDF;压电传感器;信号处理;MATLAB;频谱分析中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2018)04-0276-03引言语音信号处理技术是语音处理领域中新近发展起来的一个学科分支,频谱分析技术是语音信号处理的基础。

声音信号的采集与分析处理在工程应用中是经常需要解决的问题。

如何实时采集声音信号并对其分析处理,找出声音信号的特征,在科学研究中是一项非常有意义的工作[1]。

采用自行设计改进的PVDF压电薄膜式声音传感装置对音频信号进行采集,通过放大、滤波、非线性转换和信号转换等信号处理模块对采集的模拟音频信号进行处理,再通过声音频谱软件显示出音频信号的波形和各类频谱数据信息。

压电传感器采用PVDF压电高聚物薄膜,具有良好的压电和热释电效应,可广泛应用于声学设备,提高了音频信号采集的精度。

一、设计流程采用PVDF压电高聚物薄膜自主设计改进音频信号采集模块,即压电式声音信号传感器,产生的电信号通过基本放大电路、主放大电路、滤波模块、非线性转换模块和信号转换模块进行信号处理转换,处理后的信号以数字信号形式传输到显示模块。

用MATLAB Guide制作人机交换界面,即音频信号频谱分析显示虚拟仪器来分析显示采集处理的声音信号的波形和各类数据信息。

二、设计原理1.信号采集。

PVDF压电膜具有较高的化学稳定性、高热稳定性、高抗紫外线辐射能力,以及高耐冲击、耐疲劳能力,其化学稳定性比陶瓷高10倍,匹配状态好,应用灵敏度高;PVDF压电膜在厚度方向的伸缩振动的谐频率很高,可以得到较宽的平坦响应(0 500MHz),频响宽度远优于普通压电陶瓷换能器[2]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

频谱分析仪摘要频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量,是一种多用途的电子测量仪器。

随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向。

虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。

本文介绍了一种使用GUI工具箱用matlab实现的简易虚拟频谱分析仪的设计方法。

关键词matlab,频谱分析仪,时域分析,频域分析目录1概述 (3)2技术路线 (4)3实现方法 (5)3.1搭建GUI界面 (5)3.2信号输入 (6)3.2.1选择信号输入 (6)3.2.2声卡输入 (7)3.2.3读取wav文件 (7)3.2.4信号发生器输入 (7)3.3时域分析 (8)3.4频域分析 (9)3.5仿真 (10)3.5.1声卡输入 (10)3.5.2读取wav文件 (10)3.5.3信号发生器 (11)4存在的问题 (15)5致谢......................................................................................................... 错误!未定义书签。

参考文献 (15)1概述MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件。

可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。

与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。

MATLAB自带了强大的GUl工具[1]。

在本文中,将利用MATLAB的GUI工具,设计出数字频谱分析仪。

频谱分析仪是研究电信号频谱结构的仪器,用于信号失真度、调制度、谱纯度、频率稳定度和交调失真等信号参数的测量,可用以测量放大器和滤波器等电路系统的某些参数,是一种多用途的电子测量仪器。

它又可称为频域示波器、跟踪示波器、分析示波器、谐波分析器、频率特性分析仪或傅里叶分析仪等。

现代频谱分析仪能以模拟方式或数字方式显示分析结果,能分析1赫兹以下的甚低频到亚毫米波段的全部无线电频段的电信号[2]。

目前已经有许多较成熟的频谱分析软件,如SpectraLAB、RSAVu、dBFA等[3]。

本文将给出的则是通过MATLAB软件实现的基于FFT的数字频谱分析仪。

FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步[4]。

通过此次设计,能进一步掌握MATLAB软件开发过程的基本理论、基本知识和基本技能,熟悉基于MATLAB平台的若干信号处理系统开发及调试方法,且成本低,易于实现,容易修改,并可以进行仿真。

该设计的进行可以为我们以后的学习工作奠定一定的基础。

2技术路线本次设计的频谱分析仪模块划分如图1所示:图1 频谱分析仪模块划分3实现方法3.1搭建GUI界面此次设计搭建的GUI见面如图2所示:图2 GUI界面最上方为标题区,用于显示软件标题等信息。

再往下是信号输入区,首先应输入采样频率和采样点。

信号有3种输入方式,包括声卡输入,读取WAV文件和信号发生器输入。

在信号发生器中加入了信号叠加选项,从而可以将产生的信号与原有的信号进行混迭。

只有当某个单选框被选中时才允许使用对应的输入框、按钮等。

输入区右边为分析区,除了对wav文件进行播放外,还可以对信号进行时域分析和频域分析,该软件的核心代码都在这两个按钮的回调函数中。

再下方为分析结果区,用于显示波形基本参数与统计量的计算结果,Axes1为波形显示区,在录音结束、打开WAV文件成功或者信号发生器生成波形时会更新显示。

Axes2为频谱图显示区,用于显示各种频谱的谱线,在点击频域分析后会更新显示。

点击频谱类型可以显示不同的频谱图。

本次设计提供了幅频特性分析和相频特性分析。

3.2信号输入3.2.1选择信号输入开始使用频谱分析仪时,除了需要设定采样频率和采样点数外,还需要选择信号输入方式,本次设计提供三种输入,分别是:声卡录音,读取wav文件和信号发生器。

其代码如下(仅以选择声卡输入为例):function record_Callback(hObject, eventdata, handles)set(handles.record,'value',1);set(handles.wavfile,'value',0);set(handles.wave,'value',0);h=findobj('Tag','recordtime');set(h,'enable','on');h=findobj('Tag','startrecord');set(h,'enable','on');h=findobj('Tag','wavname');set(h,'enable','off');h=findobj('Tag','openfile');set(h,'enable','off');h=findobj('Tag','inwave');set(h,'enable','off');h=findobj('Tag','inamp');set(h,'enable','off');h=findobj('Tag','infre');set(h,'enable','off');h=findobj('Tag','inpha');set(h,'enable','off');h=findobj('Tag','mix');set(h,'enable','off');h=findobj('Tag','wavemake');set(h,'enable','off');当选择了一种输入方式之后,另外两种输入方式将不能使用。

3.2.2声卡输入这里声卡输入是指由麦克风录音得到的声音信号的输入,MATLAB提供了wavrecord函数,该函数能够实现读取麦克风录音信号。

声卡输入的主要代码如下所示[5]:function startrecord_Callback(hObject, eventdata, handles)Fs=str2double(get(handles.samplefre,'String'));N=str2double(get(handles.recordtime,'String'))*Fs;handles.y=wavrecord(N, Fs,'double');handles.inputtype=1;guidata(hObject,handles);plot(handles.axes1,handles.y);ysize=size(handles.y);set(handles.samplenum,'String',num2str(ysize(1)));3.2.3读取wav文件MATLAB提供了wavread函数,该函数能够方便的打开并读取WAV文件中的声音信息。

其代码如下:function openfile_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.axes1,(1:length(handles.y))/Fs,handles.y);ysize=size(handles.y);set(handles.samplenum,'String',num2str(ysize(1)));set(handles.samplefre,'string',Fs);3.2.4信号发生器输入MATLAB可以产生标准信号,如sin能够产生正弦波,首先利用get函数获得波形,频率f,幅值a和相位p,然后判断是否有信号叠加,若无叠加,则直接生成信号波形,如有叠加,则进行信号混叠。

function wavemake_Callback(hObject, eventdata, handles)Fs=str2double(get(handles.samplefre,'String'));N=str2double(get(handles.samplenum,'String'));x=linspace(0,N/Fs,N);t=get(handles.inwave,'Value');f=str2double(get(handles.infre,'String'));a=str2double(get(handles.inamp,'String'));p=str2double(get(handles.inpha,'String'));switch tcase 1y=a*sin(2*pi*x*f+p);case 2y=a*sign(sin(2*pi*x*f+p));case 3y=a*sawtooth(2*pi*x*f+p,0.5);case 4y=a*sawtooth(2*pi*x*f+p);case 5y=a*(2*rand(size(x))-1);endif get(handles.mix,'Value')==0.0handles.y=y;elsehandles.y=handles.y+y;endhandles.inputtype=3;guidata(hObject,handles);plot(handles.axes1,handles.y);xlim([0 200]);3.3时域分析时域分析直接在时间域内对系统动态过程进行研究的方法。

相关文档
最新文档