目录
一、课题的任务
二、内容、步骤和要求
(1)语音信号的采集
(2)语音信号的分析
(3)语音信号的滤波
(4)App的设计
1)相关组件的使用
2)App内添加自己的全局变量
3)报错及提示功能
报错及提示功能代码示例
4)退出功能
退出功能实例
一、课题的任务
二、内容、步骤和要求
(1)语音信号的采集
(2)语音信号的分析
(3)语音信号的滤波
(4)App的设计
1)相关组件的使用
直接从组件库中拖出你想要的组件到设计视图中即可。
右边组件浏览区双击可修改组件命名。
①标签:可以用于添加标题等。
双击即可编辑文本内容,右下角检查器可以修改相关属性(字体大小、颜色,对齐方式等)。
②按钮:可以添加回调函数,单击实现想要的功能。
右击添加回调函数,进入代码视图,进行代码设计。
③单选组按钮:可以实现多功能选择,例如:低通、高通、带通、带阻的选择。
整体右击添加 Filter_natureSelectionChanged 回调函数(Filter_nature为自命名),代码视图自动生成 function Filter_natureSelectionChanged(app, event) 和 selectedButton = app.Filter_nature.SelectedObject; 利用 switch 语句可以实现相应选项对应功能。在其他的回调函数内也可以使用 app.Filter_nature.SelectedObject 进行相关的操作(不用添加 Filter_natureSelectionChanged 回调函数也能够运用)。
④编辑字段(数值):实现输入框的功能,例如在框内输入设计指标,完成滤波器的设计。
双击提示语区域即可添加提示语,数值的使用格式如:FS = app.sample_frequency.Value;(app.sample_frequency为自命名),app.sample_frequency.Value同上,也是一个全局变量。
⑤微调器:实现如音乐播放器声音大小的调整功能。
添加回调函数方法与按钮相同。
⑥编辑字段(文本):既可以作为输入,也可以作为输出。输入、输出类似“编辑字段(数值)”。
输出:在某回调函数中加入如 app.sample_frequency.Value = “汉宁窗”;
⑦坐标区:绘制时域,频域波形,甚至可以展示图片。
双击相应区域,可以改变标题、横纵坐标。在某回调函数中加入如 plot(app.original_time,t,x); 就可以绘制波形。app.original_time为坐标区的命名。
2)App内添加自己的全局变量
在左侧代码浏览器中,选择属性,点击➕傍边的下三角添加私有属性(此App内的全局变量)。
代码视图会相应生成代码,除了内部内容是个示例,可以直接删除。
定义变量名如上图所示即可。其他函数内使用全局变量,写成形如 app.path 即可实现全局变量的赋值和应用。
3)报错及提示功能
报错:
f = errordlg(msg, title);
msg: 你想要的输出内容。
title: 对话框的标题。
提示:
msgbox(message)
%msgbox('显示内容')
msgbox(message,title)
%msgbox('显示内容','标题')
msgbox(message,title,icon)
%msgbox('显示内容','标题','系统图标')
%系统图标主要有none,error,help,warn
报错及提示功能代码示例
[filename,pathname]=uigetfile({'*.wav;*.mp3','*.wav;*.mp3'},'选择声音文件');
if isequal([filename pathname],[0,0])
errordlg("没有选中文件","错误")
else
app.path = strcat(pathname, filename);%选择的声音文件路径
msgbox("读取成功","提示")
end
此部分代码示例中还含有文件路径的获得。
4)退出功能
添加按钮,右击添加回调函数。
questdlg 的使用:
answer = questdlg(quest);
answer = questdlg(quest,dlgtitle);
answer = questdlg(quest,dlgtitle,defbtn);
answer = questdlg(quest,dlgtitle,btn1,btn2,defbtn);
answer = questdlg(quest) ; 创建一个模态对话框,其中提出问题并返回用户的回答 - 'Yes'、'No'、'Cancel' 或 ''。
默认情况下,该对话框有三个标准按钮,其标签分别为是、否和取消。
如果用户点击其中一个按钮,则 answer 值与按下的按钮的标签相同。
如果用户点击对话框标题栏上的关闭按钮 (X) 或按下 Esc 键,则 answer 值为空字符向量 (' ')。
如果用户按下 Return 键,则 answer 值与默认所选按钮的标签相同。
answer = questdlg(quest,dlgtitle) ; 指定对话框标题。
answer = questdlg(quest,dlgtitle,defbtn) ; 指定当用户按下键盘上的 Return 键时将哪个按钮作为默认按钮。defbtn 值必须与按钮标签之一匹配。
answer = questdlg(quest,dlgtitle,btn1,btn2,defbtn) ; 通过用 btn1 和 btn2 的值作为按钮标签来自定义两个标准按钮。第三个标准按钮则被删除。defbtn 值必须与 btn1 或 btn2 的值匹配。
如果用户按下键盘上的 Return 键,并且 defbtn 值与任一按钮标签都不匹配,则对话框保持打开状态。
退出功能实例
choice = questdlg("是否退出《语音信号的处理》?","退出","是","否","否");
switch choice
case "是"
delete(app.UIFigure)
return
case "否"
return
end