首先,新建一个 MATLAB 的 GUI 项目,在命令行输入 guide,即会弹出一个窗口,选择 Blank GUI,点击 ok,弹出一个 untitled.fig 窗口,这就是你所要设计的 GUI 界面,如下图所示:
![v2-6e37d1df92307436165cd02179ca38c6_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/0081a7e645a456071549befbac78aad6.jpeg)
![v2-d27252e86888b3d5ecfad87633bd0dc8_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/939750b82a239ee55b5b9e21de5b2ec0.png)
接下来,在刚刚创建的空白 GUI 界面上右击鼠标,选择 Property Inspector 选项,在新弹出的属性框中找到 Tag,这是一个句柄属性,是控件在计算机内部唯一标识符,类似于我们的身份证号,为便于代码的理解,一般情况输入有意义的字符,不要包括汉字,此处为
sine_figure;然后点击保存,命名为 sinetyq。
![v2-a6723df5ecdfd5ba631c9229a1aa1193_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/84443f497774d70d167090ade5ed6711.png)
这样一个已命名的空白 GUI 界面就做好了。接下来,添加控件,选择 4 个 static text,4 个
edit text,排列成四行两列,双击每个控件,进入属性设置界面,此处着重注意三个地方,
FontSize、String、Tag,在 FontSize 处可设置要显示的字体大小,String 是显示的字符内容,
![v2-a98e5117c8d15eb3202e96a4e6d90a3b_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/307ac7bc4c4a765794789e207ef2b564.jpeg)
Tag 是这个控件在.M 文件中的名字,类似于变量名,同样也要秉持程序易于理解的原则来命名,如在频率栏,可将要输入频率的 edit text 的 Tag 设置为 frequency_input,这样便于理解。
![v2-f430137ad2b1e9d55f74126ca9ed3f6c_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/6833a0b103d26747ac0baa34dec66533.png)
![v2-f00889ef587c7e8a4db6378bab759e2a_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/eb254c863612a5232a5ec802d65a8c6a.png)
在我们自己添加控件时,为了界面美观,常需要将各控件对齐,这时手动调节多个控件会很 费时,我们按住 ctrl 键,用鼠标选中要排列的控件,然后点击工具栏的这个按钮,选择对齐方式即可自动对齐。
现在我们右击某一个 edit text,选择 view callbacks,就会调到我们这个 GUI 界面对应的.M 文件,这个.M 文件是自动创建的,要实现的程序代码就是在各个控件对应的程序块处编写实现的。
![v2-eae35bc4168b2cb11d5c7979d2519dab_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/7a4d5c6d087f104a5df03844358147f8.png)
![v2-06e4df53cc7637192347770ffdc2d4b0_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/0559a6b9d7f47c3ce47614a9f55e9cc1.jpeg)
接下来,再添加一个运行按钮,命名为 RUN,同时句柄 Tag 也为 RUN。
![v2-c1cc6f69bd66bee15c58ce96f44a0f5d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/8c18861fd2e1e9129047da2b443f46ef.jpeg)
接下来,为窗口增加两个坐标,用来显示正弦波的时域和频域图。在左侧的工具栏处选择
![v2-63f5935118ae8054d9fe4496b69bb76d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/f9e80519767f7b273b583215082b3c1d.png)
![v2-baeff5bce706c3ff51fefa3db0e124df_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/1fdda755c802a5786e40c337eff556f6.jpeg)
Axes,拖动到空白界面上。同时为其命名为 time、spectrum。
界面布局到此就结束了,我们可以看到界面有点偏小,所以可以在界面的右下角出拉大界面 以便于较好的显示图形。
![v2-ec68c03a7ba63ab31d101c865c7af8b5_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/4687da50f0a5494a62f283d81ee9bc6a.jpeg)
![v2-5694cdce54f5b00468cb54a857372266_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/9baa873c82fedb4c0d6b27943cf4573c.png)
点击工具栏的运行 按钮,运行一下界面。
![v2-14efcf8257f4538071cec18368f5294b_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/4bab1a588475a28d198efe8a3eb590fd.jpeg)
注意右上角的放大图标为灰色的,表明不可放大,如果要实现放大按钮,可在界面设计页面 的空白处双击鼠标,找到 resize 复选框,并选中它,即显示为 on,这样在运行一次就可最大化窗口了。
到此,界面设计完毕,接下来是为相关控件添加代码。代码如下,注意采样率一定要结合抽 样定理。还有 set 函数的 gcbo:returns the handle of the graphics object whose callback is executing.
![v2-a733648e86576eada80e57545f0625db_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/6fd06406571e85bb294d7435cc68bf89.jpeg)
![v2-e4659c625b25fd0cb63bc92900cf3ef3_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/ead74c7fa4f2b6d44a42d9d4d316bd28.jpeg)
![v2-e2c9d0e7cdc4d2f5eb5ba579b9d1931d_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/362defc7d499b32424787858455f66eb.jpeg)
![v2-5de7eb07b5ec1c8cdf66058c983dcf03_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/5b79a952ecc18a3b4636e76d2eae5bf3.png)