最近在 用matlab做一个GUI的用户界面 大多都是百度出来 摸索的学习 总结一下遇到的一些问题和解决方法

一:

在文本框动态显示文本 (保留之前的文本并显示当前文本内容):

在文本框显示文本 基本的语法是

 set(handles.listbox2,'String',string);

<1>想要保留之前文本内容  用过网上提供的代码 textwrap函数

(但是 当从 str =get(handles.listbox2,'String'); 得到的str放到string{}里面 textwrap会提示错误 ....orz 错误提示忘记截图了)

figure('units','normalized','position',[0.4 0.4 0.4 0.3]);
h = uicontrol('Style','Text','fontsize',);
string = {'静态文本框为什么是静态的?','因为不能像编辑框一样滚动显示其中的内容','如果想在静态文本框中多行显示','按照这种方式就可以实现','调用textwrap函数啊!'};
[outstring,newpos] = textwrap(h,string);
set(h,'String',outstring,'Position',newpos);

<2>后来也想过更新txt 然后将txt内容显示在文本框呢  遇到的问题是 从txt文档一行一行读字符串 显示在文本框的字符是在一整行的 (;′⌒`)

<3> 下面是常用的方法 (百度好久查到的  )

    这个方式逻辑上是没有什么的 也没有语法错误  但是 我遇到了至今未解决的问题 :理想情况 ->程序边运行边在文本框显示文本内容  

       现实情况—> 不能实时显示文本内容 要等到程序运行玩才能全部显示出来 更新速度太慢 不知道这种情况能不能改进  

ss = get(handles.listbox2,'String');
str =sprintf('XXXXXX');
ss{end+}=str;
set(handles.listbox2,'String',ss);

二:matlab 按钮之间的参数传递

<1> 第一种方式的传递参数 更适合多个GUI之间的传递 如果是单个GUI传递 会面临一个 txt文本保留了之前的数据或覆盖之前的数据(比如你可能会多次使用一个数据)

setappdata(,'A',A)
A=getappdata(,'A').

<2>第二种方式  会遇到未知的错误 比如 我使用的时候  它很奇怪的并没有实现参数传递

handles.in1 = varargin{};
handles.in2 = varargin{};
guidata(hObject, handles); %保存

<3> 第三种方式 是我认为最简单的 也是我经常使用的一种方式  但是但是,简单的问题就在于有时你会很头疼!因为在每一个要到该全局变量的地方,你都要添一句gloal x,还有就是如果你在一个地方修改了x的值,那么所有x的值就都变了!有的时候恐怕会出现紊乱。另一个更重要的问题在于,套用C++的一句话,全局变量破坏了程序的封装性!所以,全局变量是能少用尽量少用。 (碰巧我的程序里面 不需要修改他们值 只是简单的使用)

<4>还有其他的一些方式 参见 http://blog.sina.com.cn/s/blog_6163bdeb0100i2j4.html

三:显示程序运行的时间

tic;
/..../ %代码
toc;
sprintf(‘%s’,num2str(toc)); %显示的程序运行的时间

timer类定时器(之后应该还会写一篇它的实时处理数据,目前还没有研究通)

t=timer('TimerFcn',{@timercallback,handles},'ExecutionMode', 'fixedRate', 'Period', 0.01);
start(t);

四:matlab kmeans 函数注意的地方

     当要聚类的数据只有一组向量是.....

[idx1,c1,sumD1,D1] = kmeans(T,);

c1 是个1*1的数 orz   还有就是 默认的距离是 平方欧式距离     (⊙﹏⊙)b 坑了我好久 ><!!


五:GUI对话框设计(复制 方便看)

from: http://heatflow.blog.163.com/blog/static/193360279201172191146666/

dialog 创建对话框 
errordlg 创建错误对话框 
helpdlg 创建帮助对话框 
inputdlg 创建输入对话框 
listdlg 创建选择列表对话框 
msgbox 创建消息对话框 
pagedlg 显示页面的版面对话框 
printdlg 显示打印对话框 
questdlg 问题对话框 
uigetfile 文件检索对话框 
uiputfile 为写入而显示的检索对话框 
uisetcolor 从对话框交互式设置对象的ColorSpec 
uisetfont 交互设置对象字体特征 
warndlg 警告对话框

*对话框设计:在图形用户界面程序设计中,对话框是重要的信息显示和获取输入数据的用户界面对象。

1、公共对话框:

公共对话框是利用windows资源的对话框,包括文件打开、文件保存、颜色设置、字体设置、打印设置等。

1) 文件打开对话框:用于打开文件

uigetfile

uigetfile(‘FilterSpec’)

uigetfile(‘FilterSpec’,’DialogTitle’)

uigetfile(‘FilterSpec’,’DialogTitle’,x,y)

[fname,pname]=uigetfile(…)

2) 文件保存对话框:用于保存文件

uiputfile

uiputfile(‘InitFile’)

uiputfile(‘InitFile’,’DialogTitle’)

uiputfile(‘InitFile’,’DialogTitle’,x,y)

[fname,pname]=uiputfile(…)

3) 颜色设置对话框:用于图形对象颜色的交互设置

c=uisetcolor(‘h_or_c,’DialogTitle’)

4) 字体设置对话框:用于字体属性的交互式设置

uisetfont

uisetfont(h)

uisetfont(S)

uisetfont(h,’DialogTitle’)

uisetfont(S,’DialogTitle’)

S=uisetfont(…)

5)打印设置对话框:用于打印页面的交互式设置

dlg=pagesetupdlg(fig)

pagedlg

pagedlg(fig)

6) 打印预览对话框:用于对打印页面进行预览

printpreview

printpreview(f)

7) 打印对话框

printdlg

printdlg(fig)

printdlg(‘-crossplatform’,fig)

printdlg(-‘setup’,fig)

2、MATLAB专用对话框

1)错误信息对话框:用于提示错误信息

errordlg 打开默认的错误信息对话框

errordlg(‘errorstring’) 打开显示’errorstring’信息的错误信息对话框

errordlg(‘errorstring’,’dlgname’) 打开显示’errorstring’信息的错误信息对话框,对话框的标题由‘dlgname’指定

erordlg(‘errorstring’,’dlgname’,’on’) 打开显示’errorstring’信息的错误信息对话框,对话框的标题由‘dlgname’指定. 如果对话框已存在,’on’参数将对话框显示在最前端。

h=errodlg(…) 返回对话框句柄

例:errordlg('输入错误,请重新输入','错误信息')

2) 帮助对话框:用于帮助提示信息

helpdlg 打开默认的帮助对话框

helpdlg(‘helpstring’) 打开显示’errorstring’信息的帮助对话框,

helpdlg(‘helpstring’,’dlgname’) 打开显示’errorstring’信息的帮助对话框, 对话框的标题由‘dlgname’指定

h=helpdlg(…) 返回对话框句柄

例:helpdlg('矩阵尺寸必须相等','在线帮助')

3) 输入对话框:用于输入信息

answer=inputdlg(prompt) 打开输入对话框,prompt为单元数组,用于定义输入数据窗口的个数和显示提示信息,answer为用于存储输入数据的单元数组。

answer=inputdlg(prompt,title) 与上者相同,title确定对话框的标题。

answer=inputdlg(prompt,title,lineNo) 参数lineNo可以是标量、列矢量或m×2阶矩阵,若为标量,表示每个输入窗口的行数均为lineNo;若为列矢量,则每个输入窗口的行数由列矢量 lineNo的每个元素确定;若为矩阵,每个元素对应一个输入窗口,每行的第一列为输入窗口的行数,第二列为输入窗口的宽度。

answer=inputdlg(prompt,title,lineNo,defAns) 参数defans为一个单元数组,存储每个输入数据的默认值,元素个数必须与prompt 所定义的输入窗口数相同,所有元素必须是字符串。

answer=inputdlg(prompt,title,lineNo,defAns,Sesize) 参数resize决定输入对话框的大小能否被调整,可选值为on或off.

例:prompt={'Input Name','Input Age'};

title='Input Name and Age';

lines=[2 1]';

def={'John Smith','35'};

answer=inputdlg(prompt,title,lines,def);

4) 列表选择对话框:用于在多个选项中选择需要的值

[selection,ok]=listdlg(‘Liststring’,S,…) 输出参数selection为一个矢量,存储所选择的列表项的索引号,

输入参数为可选项’Liststring’(单元数组), ’SelectionMode’(’single’或’multiple’, ’ListSize’([wight,height]), ’Name’ (对话框标题)等

5) 信息提示对话框:用于显示提示信息

msgbox(message) 打开信息提示对话框,显示message信息。

msgbox(message,title) title确定对话框标题。

msgbox(message,title,’icon’) icon用于显示图标,可选图标包括:none(无图标)/error/help/warn/custom(用户定义)

msgbox(message,title,’custom’,icondata,iconcmap) 当使用用户定义图标时,icondata为定义图标的图像数据,iconcmap为图像的色彩图。

msgbox(…,’creatmode’) 选择模式creatmode,选项为:modal, non_modal, 和replace。

h=msgbox(…) 返回对话框句柄

6) 问题提示对话框:用于回答问题的多种选择

button=questdlg(‘qstring’) 打开问题提示对话框,有三个按钮,分别为:yes,no和cancel,’questdlg’确定提示信息。

button=questdlg(‘qstring’,’title’) title确定对话框标题。

button=questdlg(‘qstring’’title’,’default’) 当按回车键时,返回default值default 必须是yes,no或cancel 之一。

button=questdlg(‘qstring’,’title’,’str1’,’str2’,’default’) 打开问题提示对话框,有两个按钮,分别由str1和str2确定,’qstdlg’确定提示信息,default必须是str1或str2之一。

button=questdlg(‘qstring’, ’title’,’str1’,’str2’,’str3’,’default’) 打开问题提示对话框,有三个按钮,分别由str1, str2和str3确定,’qstdlg’确定提示信息,default必须是str1, str2或str3之一。

7) 进程条:以图形方式显示运算或处理的进程

h=waitbar(x,’title’) 显示以title为标题的进程条,x为进程条的比例长度,其值必须在0到1之间,h为返回的进程条对象的句柄。

waitbar(x,’title’,’creatcancelbtn’,’button_callback’) 在进程条上使用creatcancelbtn参数创建一个撤销按钮,在进程中按下撤销按钮将调用button_callback函数。

waitbar(…,property_name,property_value,…) 选择其它由prompt_name定义的参数,参数值由prompt_value指定。

例:

h=waitbar(0,'pleas wait...');

for i=1:10000

waitbar(i/10000,h)

end

close(h)

MATALB的标准图形用户界面


1. 消息对话框

msgbox函数。它不接受用户的任何输入,在用户单击OK按钮后,对话框自动关闭,然后返回程序中继续执行。
>> msgbox('欢迎使用MATLAB') % 建立一个没有标题的消息对话框
>> msgbox('欢迎使用MATLAB','MATALB','warn') %% 建立一个有标题的消息对话框

2. 错误对话框
errordlg函数。 >> errordlg %建立一个默认参数的错误对话框
>> errordlg('这是一个错误对话框','MATLAB error') %建立一个名为MATLAB error的错误对话框

3. 警告对话框
warndlg函数。 >> warndlg %建立一个默认参数的警告对话框
>> warndlg('这是一个警告对话框','MATLAB warning')

4. 帮助对话框
helpdlg函数。
>> helpdlg('你需要帮助吗?','MATLAB Help')

5. 进度条设置对话框
waitbar函数。作用是反映程序运行的完成情况。
h=waitbar(0,'请稍等......')
for i=1:10000
waitbar(i/10000)
end

6.输入对话框
inputdlg函数。
prompt={'输入梯形的上底:','输入梯形的下底','输入梯形的高'};%设置提示字符串
name='Enter trapeaia Data';%设置标题
numlines=1;%指定输入数据的行数
defAns={'20','50','40'};%设定默认值
Resize='on';%设定对话框尺寸可调节
answer=inputdlg(prompt,name,numlines,defAns,'on')%创建输入对话框

7. 列表对话框
listdlg函数。
p=path(path,'C:\MATLAB7\work');%设置路径,若为当前目录,可以省略这一步
d=dir('C:\MATLAB7\work');%获取指针,若为当前目录,则d=dir
str={d.name};%获取目录内的文件名
[sel,ok]=listdlg('Liststring',str,'PromptString','请选择文件','SelectionMode','Multiple')%创建列表对话框。
文件选择成功后,单击“OK‘按钮,系统将选择好的文件序号存入相应向量sel,参数ok的值为1。

8.问题对话框
questdlg函数。提出一个问题,等待用户回答。默认下回答按钮有三个:Yes、No、Cancel。当用户单击任何一个按钮时,系统将该按钮名保存在一个变量(ButtonName)中。如果用户关闭对话框,则系统将ButtonName置为空。
>> ButtonName=questdlg('你准备好了吗?','MATLAB quest','Yes','No','Cancel','Yes')

9.路径选择对话框
uigedir函数。用于用户查找和选择路径。
>> directoryname=uigetdir('C:\MATLAB7\work','浏览文件件')

10.选择文件对话框
uigetfile函数。用于用户选择所需的文件。
① >> [fn,pn,fi]=uigetfile('*.m','select a M-file')%打开一个选择M文件的对话框,并选择一个文件
② [fn,pn,fi]=uigetfile(...
{'*.m;*.fig;*.mat;','All MATLAB File(*.m,*.fig,*.mat,*.mdl)';
'*.m','M-file(*.m)';...
'*.fig','Figure(*.fig)';...
'*.mat','MAT-flie(*.mat)';...
'*.mdl','Models(*.mdl)';...
'*.*','All Flies(*.*)'},...
'Pick a file')
%打开一个选择多种文件的对话框,并选择一个文件

11.文件保存对话框
uiputfile函数。用于保存文件。
① >> [fn,pn,fi]=uiputfile('*.m','Save selected a M-file')
② [fn,pn,fi]=uiputfile(...
{'*.m;*.fig;*.mat;','All MATLAB File(*.m,*.fig,*.mat,*.mdl)';
'*.m','M-file(*.m)';...
'*.fig','Figure(*.fig)';...
'*.mat','MAT-flie(*.mat)';...
'*.mdl','Models(*.mdl)';...
'*.*','All Flies(*.*)'},...
'Save a file')
%建立多种保存文件的对话框,并选择一个文件

12.页面设置对话框
pagesetupdlg函数。用来设置页面的各种属性、参数。调用格式为:
dlg=pagesetupdlg(fig)
该命令创建一个页面设置对话框,在该对话框用户可以设置页面的各种属性和参数。该命令只支持单一图形窗口的页面设置,参数fig也必须是单一的图形句柄,不可以是图形句柄向量或simulink图。
>> fig=figure;
>> dlg=pagesetupdlg(fig)

13.打印设置对话框
printdlg函数。用户可以对各种打印参数进行设置。
x=[-pi:0.02:pi];
y=cos(x);
fig=figure;
plot(x,y);
printdlg(fig);%打开Windows打印对话框
printdlg('-crossplatform',fig);%打开MATLAB打印对话框

14.颜色设置对话框
uisetcolor函数。用于用户设置图形的前景色或背景色。
① >> c=uisetcolor %建立一个颜色选择对话框
② %建立一个颜色对话框,并设置对话框的初始颜色,然后选择一种颜色用于一个图形对象。
x=[0:0.02:2*pi];
y=sin(x);
h=figure;
plot(x,y);
c=uisetcolor(h,'select color')

15.字体设置对话框
uisetfont函数。用于用户设置或修改文本字体、坐标轴或设置控件对象的显示文本的字体属性。
① >> s=uisetfont % 建立一个默认字体设置对话框,并设置一种字体。
② 对控件中的文本进行设置
T1=uicontrol('style','pushbutton','string','确定',...
'position',[200 320 60 20]); %创建一个按钮
T2=uicontrol('style','pushbutton','string','取消',...
'position',[200 220 60 20]); %创建一个按钮
s=uisetfont(T1) %打开字体设置对话框
set(T2,s) %将T1的设置复制到

关于matlab GUI 的一些总结的更多相关文章

  1. matlab GUI界面编程总结

    去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...

  2. 转载:关于Matlab GUI的一些经验总结

    去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...

  3. Matlab GUI设计中的一些常用函数

    Matlab GUI常用函数总结 % — 文件的打开.读取和关闭% — 文件的保存% — 创建一个进度条% — 在名为display的axes显示图像,然后关闭% — 把数字转化为时间格式% — ch ...

  4. Matlab GUI界面

    做SVD的时候,看学姐的demo,用到了matlab的GUI,感兴趣就自己学了一下: 从简单的例子说起吧. 创建Matlab GUI界面通常有两种方式: 1,使用 .m 文件直接动态添加控件     ...

  5. matlab GUI保存axes(坐标轴)上的图像

    1.默认方式 matlab GUI默认菜单的保存图像默认为保持全部GUI,包括使用" 菜单->编辑->复制图形". 2 保存可见区域 2.1 代码 [FileName, ...

  6. [学习一个] Matlab GUI 学习笔记 Ⅰ

    Matlab GUI 学习笔记 Ⅰ 1. Foreword Matlab 是严格意义上的编程语言吗?曾经有人告诉我他是通过 Matlab 学会了面对对象编程,我是不信的,但这依然不妨碍它在特殊领域的强 ...

  7. Matlab——GUI初涉

    Matlab——GUI初涉 MATLAB GUI教学视频0:GUI中的基本操作—在线播放—优酷网,视频高清在线观看http://v.youku.com/v_show/id_XMjM2Mjk0MjM2. ...

  8. Matlab GUI memo

    有一段时间没写博客,一周4篇文章都坚持不下来,不知道写哪个方面的内容,写研究相关就怕论文查重查到,其他方面也没太多时间去学.还是花时间多学点其他方面.废话到此,很早就做过matlab gui相关,现在 ...

  9. Matlab GUI读入图片

    % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, han ...

  10. 如何用MATLAB GUI创建图形用户界面

    MATLAB是众多理工科学生及工程师经常使用的一款数学软件,除了可以实现数据处理,矩阵运算.函数绘制等功能外,MATLAB还可以实现图形用户界面的设计. 下面介绍如何让小白也能用GUI创建最基本的用户 ...

随机推荐

  1. Codefroces 1245 F. Daniel and Spring Cleaning

    传送门 考虑简单的容斥 设 $F(n,m)$ 表示 $a \in [1,n] , b \in [1,m]$ 的满足 $a+b=a \text{ xor } b$ 的数对的数量 那么答案即为 $F(r, ...

  2. C# DataContractJsonSerializer

    DataContractJsonSerializer dataSerializer = new DataContractJsonSerializer(request.getBizContentClas ...

  3. python练习:函数3

    习题: 用lambda和filter完成下面功能:输出一个列表,列表里面包括:1-100内的所有偶数.(提示:可以用filter,lambda) [ x for x in range(1,101) i ...

  4. 4、java基础:JDK8接口新特性以及接口和抽象类区别

    在jdk8之前,interface之中可以定义变量和方法,变量必须是public.static.final的,方法必须是public.abstract的.由于这些修饰符都是默认的,所以在JDK8之前, ...

  5. SublimeText 3 常见快捷键

      ·F12 跳转至预定义 ·F11 全屏模式 ·Ctrl+A 本文全选 ·Ctrl+F 打开底部搜索框,查找关键字. ·Ctrl+D 本文件选中光标选中的单词 ·Ctrl+L 选中光标所在一行 ·C ...

  6. Oracle创建上下文 SYS_CONTEXT

    Oracle创建上下文 SYS_CONTEXT 1. 系统默认的一些参数 set heading offselect SYS_CONTEXT('USERENV', 'TERMINAL') termin ...

  7. NoNodeAvailableException[None of the configured nodes are available:

    elasticSearch的错误 NoNodeAvailableException[None of the configured nodes are available: [{#transport#- ...

  8. idou老师教你学Istio 20 : Istio全景监控与拓扑

    根据Istio官方报告,Observe(可观察性)为其重要特性.Istio提供非侵入式的自动监控,记录应用内所有的服务. 我们知道在Istio的架构中,Mixer是管理和收集遥测信息的组件.每一次当请 ...

  9. 本地开发的jar包放到本地maven仓库

    mvn install:install-file -Dfile=C:\Users\Administrator\Desktop\taobao-sdk-java-1455552377940-2016060 ...

  10. OpenCV VideoCapture.get()参数详解

    转自https://blog.csdn.net/u011436429/article/details/80604590 方便查阅