MATLAB之使用GUI处理语音信号(二)基本界面和绘制波形图 |
您所在的位置:网站首页 › 公路车cervelo官网 › MATLAB之使用GUI处理语音信号(二)基本界面和绘制波形图 |
##MATLAB之使用GUI处理语音信号(二)基本界面和绘制波形 在上一篇文章中我们认识了GUI并且学习了一些基础操作,这节我们开始进入使用GUI处理语音信号的主题,直接看最终效果: 本节学习构建基础界面和绘制时域图、幅域图和相频图。 MATLAB之使用GUI处理语音信号(二)基本界面和绘制波形 一.绘制基础界面二.完善代码 一.绘制基础界面一.绘制基础界面 首先我们明确需求,要实现的功能为: 1.选择并导入音频文件; 2.播放音频; 3.绘制时域图、频域图以及相频图; 首先,选择并导入音频文件需要一个按钮来选择文件,再加上一个静态文本来提示用户应该选择格式为.wav的波形文件,步骤如下: (1)输入guide命令 (2)新建一个空白GUI编辑界面 (3)拖动一个按钮和一个可编辑文本放到合适位置 (4)修改名称并选择合适的字号 至此完成,效果如下: 接下来,播放音频,只需要一个按钮 参考上面步骤很容易画出,这里不再过多解释,直接看图: 最后是画图,这里再给大家介绍一种新的界面,坐标轴,用来显示图像 具体步骤如下: (1)直接拖动三个控件到合适位置,并且调整到合适大小即可: (2)这里添加三个静态文本,来标识图形; (3)最后添加三个按钮,通过点击来控制显示图形。 至此界面已经全部构建完,直接点击绿色的运行按钮,生成代码进行修改 二.完善代码 1.首先单击“选择文件按钮”,查看其标签为“pushbutton1”(可能不同,看自己具体情况),在相应函数下输入以下代码: [filename,pathname]=uigetfile({'*.wav','ALLFILES(*.*)'},'选择声音文件'); if isequal([filename pathname],[0,0]) return; end str=[pathname filename];%选择的声音文件路径和文件名 global temp; global Fs; [temp,Fs]=audioread(str);%temp表示声音数据 Fs表示频率 handles.y=temp;handles.Fs=Fs;这里为选择文件,并且创建temp、Fs两个全局变量,并将音频文件的相关数据储存到这两个变量中。 这里使用全局变量的目的是在其他函数中还要调用,要注意的是global为全局变量。 2.接下来查看“播放”按钮的标签为“pushbutton2” 在相应函数下输入以下代码: global temp; global Fs; sound(temp,Fs);%播放音频文件注意在调用temp和Fs之前要声明一下这两个全局变量。 3.接下来我们将三幅图分别在对应坐标轴中显示 (1)在绘制时域图按钮对应的函数中添加如下代码: global temp; global Fs; plot(handles.axes1,temp);%画出时域图,放到坐标轴1中 xlabel(handles.axes1,'时间') ylabel(handles.axes1,'幅值')注意axes1为放置时域图的坐标轴对应的标签,这样就很容易理解它的意思了,将图像放在哪个坐标轴中。 (2)在绘制幅频图按钮对应的函数中添加如下代码: global temp; global Fs; global n; global temp1; global len; n=length(temp);%提取信号长度 temp1=fft(temp,n);%进行快速傅里叶变化 len=round((length(temp1))/2);%选取一半长度 plot(handles.axes2,abs(temp1(1:len)));%画出频域图 xlabel(handles.axes2,'频率'); ylabel(handles.axes2,'幅值');代码具体含义参考使用脚本分析的那篇文章,这里不再过多解释,要注意的是声明全局变量和将图片放到指定的坐标轴中。 (3)在绘制相频图按钮对应的函数中添加如下代码: global n; global temp1; global Fs; f0=(-n/2:n/2-1)*(Fs/n);%进行相位计算 ph_y0=fftshift(temp1); phase=unwrap(angle(ph_y0));% 矫正相角跳变范围在pi以内 plot(handles.axes3,phase);%画出相频图 xlabel(handles.axes2,'频率'); ylabel(handles.axes2,'相位');至此全部完成,我们来直接运行。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |