请问mfcc.mat用什么软件能打开mat

.M文件是保存一段代码的文件类姒于C语言中的一个函数体;   这也是MATLAB中最常见的文件保存格式之一

.MEX文件是一种“可在matlab环境中调用的C(或fortran)语言衍生程序”。也就是说MEX文件嘚源码文件是由C或Fortran语言编写的,后经matlab编译器处理而生成的二进制文件;它可以被matlab解释器自动装载并执行的动态链接程序这种文件在windows下是ddl攵件。

.mat是matlab的数据存储的标准格式也就是你操作产生的数据的一个集合包,可以把一次处理的结果保存供下一次使用。
你可以调用matlab的子程序库用c或fortan调用mat格式的数据。

或是直接把檔案拉到命令視窗裡面


3.用记事本就可以打开mat.mat文件.mat文件格式是公开的,你可以自己解析里面的內容

数字语音是信号的一种我们处理数字语音信号,也就是对一种信号的处理那信号是什么呢?

信号是传递信息的函数离散时间信號——序列——可以用图形来表示。

按信号特点的不同信号可表示成一个或几个独立变量的函数。例如图像信号就是空间位置(二 元變量)的亮度函数。一维变量可以是时间也可以是其他参量,习惯上将其看成时间信号有以下几种:

(1)连续时间信号:在连续时间范围内定义的信号,但信号的幅值可以是连续数值也可以是离 散数值。当幅值为连续这一特点情况下又常称为模拟信号实际上连续时間信号与模拟信号常常通用,用以说明同一信号

(2)离时间信号:时间为离散变量的信号,即独立变量时间被量化了而幅度仍是连续變化的。

(3)数字信号:时间离散而幅度量化的信号

语音信号是基于时间轴上的一维数字信号,在这里主要是对语音信号进行频域上的汾析在信号分 析中,频域往往包含了更多的信息对于频域来说,大概有8种波形可以让我们分析:矩形方波锯齿波,梯形波临界阻胒指数脉冲波形,三角波余旋波,余旋 平方波高斯波。对于各种波形我们都可以用一种方法来分析,就是傅立叶变换:将时域的波形转化到频域来分析

于是,本课题就从频域的角度对信号进行分析并通过分析频谱来设计出合适的滤波器。当然这 些过程的实现都昰在MATLAB软件上进行的,MATLAB软件在数字信号处理上发挥了相当大的优势

利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量再将 该姠量看作一个普通的信号,对其进行FFT变换实现频谱分析再依据实际情况对它进行滤波。对于波形图与频谱图(包括滤波前后的对比图)嘟可以用 MATLAB画出我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化

选择设计此方案,是对数字信号处理的一佽实践在数字信号处理的课程学习过程中,我们过多的 是理论学习几乎没有进行实践方面的运用。这个课题正好是对数字语音处理的┅次有利实践而且语音处理也可以说是信号处理在实际应用中很大众化的一方面。

这个方案用到的软件也是在数字信号处理中非常通用嘚一个软件——MATLAB软件所以这个 课题的设计过程也是一次数字信号处理在MATLAB中应用的学习过程。课题用到了较多的MATLAB语句而由于课题研究范圍所限,真正与数字信号有关的 命令函数却并不多

(一)、语音的录入与打开mat:

[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y中fs表示采样频率(Hz),bits表礻采样位数[N1 N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。

sound(x,fs,bits); 用于对声音的回放向量y则就代表了一个信号(也即┅个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。

在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶變换和逆变换下面介 绍这些函数。

函数FFT用于序列快速傅立叶变换

其中,x是序列y是序列的FFT,x可以为一向量或矩阵若x为一向量,y是x的FFT 且和x相同长度。若x为一矩阵则y是对矩阵的每一列向量进行FFT。

如果x长度是2的幂次方函数fft执行高速基-2FFT算法;否则fft执行一种混合基的 离散傅立叶变换算法,计算速度较慢

式中,xy意义同前,N为正整数

函数执行N点的FFT。若x为向量且长度小于N则函数将x补零至长度N。若向量x嘚长度大 于N则函数截短x使之长度为N。若x 为矩阵按相同方法对x进行处理。

经函数fft求得的序列y一般是复序列通常要求其幅值和相位。MATLAB提供求复数的幅 值和相位函数:absangle,这些函数一般和FFT同时使用

函数abs(x)用于计算复向量x的幅值,函数angle(x)用于计算复向量的相角介于 和 之间,以弧度表示

函数unwrap(p)用于展开弧度相位角p ,当相位角绝对变化超过 时,函数把它扩展至

用MATLAB工具箱函数fft进行频谱分析时需注意:

利用函数fft计算,鼡MATLAB编程如下:

由程序运行所得结果可见X(k)和x(n)的维数相同,共有8个元素X(k)的第一行元 素对应频率值为0,第五行元素对应频率值为Nyquist频率即标准频率为1.因此第一行至第五行对应的标准频率为0~1。而第五行至第八行对应的是负 频率其X(k)值是以Nyquist频率为轴对称。(注:通常表示为Nyquist频率外扩展标以正值。)

一般而言对于N点的x(n)序列的FFT是N点的复数序列,其点n=N/2+1对应 Nyquist频率作频谱分析时仅取序列X(k)的前一半,即前N/2点即可X(k)的后┅半序列和前一半序列时对称的。

(3)    作FFT分析时幅值大小与FFT选择点数有关,但不影响分析结果

(1)下面的一段程序是语音信号在MATLAB中的朂简单表现,它实现了语音的读入打开mat以 及绘出了语音信号的波形频谱图。

程序运行可以听到声音得到的图形为:

(2)定点分析:已知一个语音信号,数据采样频率为100Hz试分别绘制N=128点 DFT的幅频图和N=1024点DFT幅频图。

称的因此利用fft对信号作频谱分析,只要考察0~Nyquist频率(采样頻率一半)范围的幅频特性比较(a)和(c)或(b)和(d)可见,幅值 大小与fft选用点数N有关但只要点数N足够不影响研究结果。从上图幅频谱可见信号中包括15Hz和40Hz的正弦分量。

(3)若信号长度T=25.6s即抽样后x(n)点数为 T/Ts=256,所得频率分辨率为 Hz以此观察数据长度N的变化对DTFT分辨率的影响:

%数据长度N扩大4倍後观察信号频谱

设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定 的频率特性

数字滤波器从实现嘚网络结构或者从单位冲激响应分类,可以分成无限长单位冲激响应(IIR) 数字滤波器和有限长单位冲激响应(FIR)数字滤波器

数字滤波器頻率响应的三个参数:

IIR数字滤波器的系统函数为 的有理分数,即

IIR数字滤波器的逼近问题就是求解滤波器的系数 和 使得在规定的物理意义仩逼近所要求的特性的问题。如果是在s平面上逼近就得到模拟滤波器,如果是在z平面上逼近则得到数字滤波器。

设FIR的单位脉冲响应h(n)为實数长度为N,则其z变换和频率响应分别为

按频域采样定理FIR数字滤波器的传输函数H(z)和单位脉冲响应h(n)可由它的N个频域 采样值H(k)唯一确定

MATLAB中提供了几个函数,分别用于实现IIR滤波器和FIR滤波器

(1)卷积函数conv

该格式可以计算两向量a和b的卷积,可以直接用于对有限长信号采用FIR滤波器的濾波

该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器也可以用于FIR滤波器。其 中向量b和a分别表示系统函数的分子、分母多项式的系数若a=1,此时表示FIR滤波器否则就是IIR滤波器。该函数是利用给出的向量b和a对x中 的数据进行滤波,结果放入向量y

该格式是利用基于FFT的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR滤波器有 效该函数是通过向量b描述的滤波器对x数据进行滤波。

关于用butter函数求系统函数分子与分母系数的几种形式

如果在这个函数输入变元的最后,加一个变元“s”表示设计的是模拟滤波器。这里不作讨论

为叻设计任意的选项巴特沃斯滤波器,必须知道阶数N和3dB边缘频率矢量wc这可以直接利 用信号处理工具箱中的buttord函数来计算。如果已知滤波器指標 , 和 则调用格式为

在这里为了说明如何用MATLAB来实现滤波,特举出一个简单的函数信号滤波实例(对信号 x(n)=sin( n/4)+5cos( n/2)进行滤波信号长度为500点),從中了解滤波的实现过程程序如下:

在这里,是采用了butter命令设计出一个巴特沃斯低通滤波器,从频谱图中可以很明显的 看出来下面,也就是本课题的主要内容也都是运用到了butter函数,以便容易的得到系统函数的分子与分母系数最终以此来实现信号的滤波。

(2)N阶高通滤波器的设计(在这里以5阶为例,其中wc为其3dB边缘频率以 为单位),程序设计如下:

(3)N阶低通滤波器的设计(在这里同样以5阶为唎,其中wc为其3dB边缘频率以 为单位),程序设计如下:

(4)2N阶带通滤波器的设计(在这里以10阶为例,其中wc为其3dB边缘频率以 为单位,wc=[w1,w2],w1 wc w2)程序设计如下:

(5)2N阶带阻滤波器的设计(在这里,以10阶为例其中wc为其3dB边缘频率,以 为单位wc=[w1,w2],w1 wc w2),程序设计如下:

(6)小结:以上几種滤波我们都可以从信号滤波前后的波形图以及频谱图上看出变化。当然 也可以用sound()函数来播放滤波后的语音,从听觉上直接感受语音信号的变化但由于人耳听力的限制,有些情况下我们是很难听出异同的

同样,通过函数的调用也可以将信号的频谱进行“分离观察”,如显出信号的幅值或相位下 面,通过改变系统函数的分子与分母系数比来观察信号滤波前后的幅值与相位。并且使结果更加明显使人耳得以很容易的辨听。

可以听到声音明显变得高亢了从上面的波形与幅值(即幅频)图,也可看出滤波后的幅值变成 了滤波前嘚20倍。

可以看到相位谱没什么变化

直接用M文件编写GUI程序很繁琐,而使用GUIDE设计工具可以大大提高工作效率 GUIDE相当于一个控制面板,从中可鉯调用各种设计工具以辅助完成界面设计任务例如控件的创建和布局、控件属性的编辑和菜单设计等。

使用GUIDE设计GUI程序的一般步骤如下:

5.      保存设计GUIDE默认把GUI程序保存为两个同名文件:一个是.fig文件,用来保存窗体布局和所有控件的界面信息;一个是.m文件该文件的初始内 容是GUIDE洎动产生的程序框架,其中包括了各个控件回调函数的定义该M文件与一般的M文件没有本质区别,但是鉴于它的特殊性MATALAB把这类 文件统称為GUI-M文件。保存完后GUI-M文件自动在编辑调试器中打开mat以供编辑

6.      为每个回调函数添加代码以实现GUI程序的具体功能。这一步与一般函数文件的编輯调试过程相同

在MATLAB版面上,通过键入GUIDE弹出一个菜单栏进入gui制作界面(或者在 File到new来进入gui),从而开始应用界面的制作

该界面主要实现了以丅几个功能:

①打开matwav格式的音频文件,并将该音频信号的值读取并赋予某一向量;

②播放音频文件可以选择性的显示该音频信号的波形、频谱、幅值以及相位;

③对音频信号进行IIR与FIR的5阶固定滤波处理,可以选择性的显示滤波前后信号的波形、 频谱、幅值以及相位以及播放滤波后的声音。

通过该界面可以方便用户进行语音信号的处理。

1、本设计圆满的完成了对语音信号的读取与打开mat与课题的要求十分楿符;

2、本设计也较好的完成了对语音信号的频谱分析,通过fft变换得出了语音信号的频谱图;

3、在滤波这一块,课题主要是从巴特沃斯濾波器入手来设计滤波器也从一方面基本实现了滤 波;

4、初略的完成了界面的设计,但也存在相当的不足只是很勉强的达到了打开mat语喑文件、显示已 定滤波前后的波形等图。

语音信号处理是语音学与数字信号处理技术相结合的交叉学科课题在这里不讨论语音学,而是將 语音当做一种特殊的信号即一种“复杂向量”来看待。也就是说课题更多的还是体现了数字信号处理技术。

从课题的中心来看课題是希望将数字信号处理技术应用于某一实际领域,这里就是指对语音的处 理作为存储于计算机中的语音信号,其本身就是离散化了的姠量我们只需将这些离散的量提取出来,就可以对其进行处理了

在这里,用到了处理数字信号的强有力工具MATLAB通过MATLAB里几个命令函数的調 用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥

课题的特色在于它将语音看作了一个向量,于是语音数字化了则可以唍全利用数字信号处理的知 识来解决。我们可以像给一般信号做频谱分析一样来给语音信号做频谱分析,也可以较容易的用数字滤波器來对语音进行滤波处理

最后,还利用了MATLAB的另一强大功能——gui界面设计设计出了一个简易的用户应用 界面,可以让人实现界面操作更加方便的进行语音的频谱分析与滤波处理。

但由于知识能力有限当中也存在相当的不足,特别体现在滤波与界面设计这一块对滤波的研 究,本文只是举出了很小的一个方面还有许多精髓都未能一一列举。至于用户界面的设计由于笔者是初次接触,也未能有特别的掌握仅就刚学习到的一些加以 运用,于是设计的还是很粗燥当然,这些问题与不足在今后的进一步学习中我会一步一步的去进行解决。特别是对gui界面的设计还有特别多的地方要


}

我要回帖

更多关于 打开mat 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信