赞
踩
本文章旨在通过使用MATLAB设计一个音频信号的数字水印嵌入系统使得初学者可快速上手APP designer,利用基础功能设计出自己需要的GUI界面。
系统由基础的按钮与坐标图表组成,使用DWT和LSB两种方法嵌入数字水印,在理论分析和实验后,认为DWT技术更好,便添加了DWT的提取水印功能,完整GUI界面如下:
Appdesigner使用面向对象的方式进行编写;并且在开发工具中,所有控件的生成代码由开发工具自动生成,用户只需要按照自己的实际需要添加全局变量、回调函数,修改控件属性即可。按照官方文档的说法,GUIDE将会被逐渐移除出MATLAB。因此,我们需要尽快学习并掌握Appdesigner的使用。
打开MATLAB,点击设计APP
选择空白APP
整个界面由组件库、UIfigure、组件浏览器构成。组件库是为了设计页面,不同组件库有不同的功能;UIfigure是载体,有设计视图和代码视图两个部分;组件浏览器呈现当前的页面构成
首先,我们需要将按钮控件添加到设计画布上。在左边常用控件里找到“按钮”,将其拖动到画布上,这样,一个按钮控件就添加好了。
如上图所示,当添加好按钮控件后,单击控件,周围会出现一个蓝色框。这个和我们在PPT里常见的文本框性质是相同的,我们可以直接拖拽框体调整控件的大小;按住整个控件,可以改变其位置。右侧的组件浏览器中,上方为组件树,下方为我们所选中的组件的属性。最常用的属性为“Text”,这个属性代表了控件在图窗中显示的名字。比如此处,我将其命名为“载入原始音频”,那么在图窗中,这个按钮控件就会显示为“载入原始音频”
接下来我们编写回调函数,单击鼠标右键出现如下菜单页面,单机添加回调
这样,我们就切换到了代码视图,在白框内就可以编辑代码,按键摁下便会运行这段代码
若想要回到设计视图就点击这里
我们将这几行代码写入白框中
- FILE1='Rihanna - Take A Bow.wav';
- [y,Fs]=audioread(FILE1);%音频信号y,采样率fs,采样精度bits
- sound(y,Fs);%播放原始语音
这样就完成了播放音频的功能
坐标区在App的开发中是至关重要的。很多时候,我们需要使用坐标区绘制数据、显示图像、显示模型等。因此,我们需要掌握坐标区的使用。
同样,在组件库中找到“坐标区”控件,将其拖拽进画布,如下图所示。
在这里,我们使用两个坐标区分别显示原始音频信号的时域和频域图,在按键的回调函数中添加代码
- y = mean(y, 2); % 将多个声道的信号合并为单声道
- y_fft=fft(y,Fs);
- t = (0:length(y)-1)/Fs;
- f = (0:length(y_fft)-1)*Fs/length(y_fft);
- plot(app.UIAxes,t,y);
- plot(app.UIAxes2,f,abs(y_fft))
之后我们点击运行
按下按键后,APP界面如图,两个图表分别显示时域和频域
2024年1月24日
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。