前言:因为开发用到matlab设计小软件,关于图像显示及处理的,遇到很多重复的问题,为了方便查找,因此写下一份技巧供自己及他人参考(持续更新中...)。
1. axes空间内图像的清除:
- 方法一:
axes(handles.axes1);
cla reset;
- 方法二:
image = [];
axes(handles.axes1);
imshow(image); %显示一个空图像
当不能清除坐标轴显示时,再定义下坐标轴为空即可:
set(gca, 'XColor','w');
set(gca, 'YColor','w');
set(gca, 'xtick', []);
set(gca, 'ytick', []);
2. 如何显示曲线图信息:
显示折线图、曲线图时,有时需要显示xlable、ylable、title等信息,还要改字体大小、颜色等等,可以用以下代码,大小颜色作响应的修改即可:
axes(handles.axes1)
plot(x,y);hold off;
set(gca, 'XColor','w');
set(gca, 'YColor','w');
set(gca,'fontsize',12,'FontWeight','bold');
xlabel('x','fontsize',16,'FontWeight','bold','color','w');
ylabel('y','fontsize',16,'FontWeight','bold','color','w');
legend('x','FontWeight','bold','color','w');
title('title','fontsize',20,'FontWeight','bold','color','w');
3. 如何实现一个GUI界面中切换几个功能界面?
方法一:
Matlab gui中没有这样可以直接切换的控件,但是也不需要想得太复杂,只需要复制相同大小的面板作为第二个界面,覆盖在第一个界面上,在设计其他按钮控件时,直接将需要设计的界面置顶即可;另外设计一个控件,专门调用自己想显示的界面,然后set(axes.panipal,'visible','on'),其他界面则set为'off'即可。你可以将这个界面设为菜单栏,这样会更加好看。
方法二:
最近在GitHub中看到别人这么做的,觉得这个方法可以让结构更加简单,设计两个界面,用按钮控件回调,直接使用以下两句进行切换:
close(test1);
run('test2.m');
设计的界面为test1.fig,test1.m,test2.fig,test2.m,test2切换到test1同理。
4. 如何设计GUI进度条?
这个技巧也很简单,直接用两个静态文本框叠加,一个作为背景,一个作为进度,设置不一样的颜色。在显示进度时,修改作为进度的文本框的宽即可。
5. 如何实现结果一条一条显示?
使用列表框listbox
handles.info = sprintf('%s%s\n',handles.info,'Running...'); %%在界面打开函数要先赋值handles.info
set(handles.listbox1,'string',handles.info );
index = size(get(handles.listbox1,'string'), 1); %% 这里实现跳转至最新一条结果
set(handles.listbox1,'Value',index);