×

matlabgui

matlabgui(MATLAB GUI)

admin admin 发表于2022-09-02 00:42:34 浏览140 评论0

抢沙发发表评论

本文目录

MATLAB GUI


这是非常基本的问题,请看matlab提供的gui帮助文件吧。
下面是matlab帮助里面的一个用纯代码生成GUI的例子,有你需要的类似功能。
本来其数据共享是采用嵌套函数的,但在6.5版本下好像不行,我改成用guidata函数进行存取数据的方式了,供你运行参考。
看起来代码很长,其实并不难的,但愿对你有帮助,O(∩_∩)O~。
function simple_gui2
% SIMPLE_GUI2 Select a data set from the pop-up menu, then
% click one of the plot-type push buttons. Clicking the button
% plots the selected data in the axes.
% Create and then hide the GUI as it is being constructed.
clc
f = figure(’Visible’,’off’,’Position’,[360,500,450,285]);
% Construct the components.
hsurf = uicontrol(’Style’,’pushbutton’,’String’,’Surf’,...
’Position’,[315,220,70,25],...
’Callback’,{@surfbutton_Callback});
hmesh = uicontrol(’Style’,’pushbutton’,’String’,’Mesh’,...
’Position’,[315,180,70,25],...
’Callback’,{@meshbutton_Callback});
hcontour = uicontrol(’Style’,’pushbutton’,...
’String’,’Countour’,...
’Position’,[315,135,70,25],...
’Callback’,{@contourbutton_Callback});
htext = uicontrol(’Style’,’text’,’String’,’Select Data’,...
’Position’,[325,90,60,15]);
hpopup = uicontrol(’Style’,’popupmenu’,...
’String’,{’Peaks’,’Membrane’,’Sinc’},...
’Position’,[300,50,100,25],...
’Callback’,{@popup_menu_Callback});
ha = axes(’Units’,’Pixels’,’Position’,[50,60,200,185]);
align([hsurf,hmesh,hcontour,htext,hpopup],’Center’,’None’);
% Create the data to plot.
data.peaks_data = peaks(35);
data.membrane_data = membrane;
[x,y] = meshgrid(-8:.5:8);
r = sqrt(x.^2+y.^2) + eps;
data.sinc_data = sin(r)./r;
% Initialize the GUI.
% Change units to normalized so components resize
% automatically.
set([f,ha,hsurf,hmesh,hcontour,htext,hpopup],...
’Units’,’normalized’);
%Create a plot in the axes.
data.current_data = data.peaks_data;
surf(data.current_data);
guidata(f,data);
% Assign the GUI a name to appear in the window title.
set(f,’Name’,’Simple GUI’)
% Move the GUI to the center of the screen.
movegui(f,’center’)
% Make the GUI visible.
set(f,’Visible’,’on’);
% Callbacks for simple_gui2. These callbacks automatically
% have access to component handles and initialized data
% because they are nested at a lower level.
% Pop-up menu callback. Read the pop-up menu Value property
% to determine which item is currently displayed and make it
% the current data.
function popup_menu_Callback(source,eventdata)
% Determine the selected data set.
str = get(source, ’String’);
val = get(source,’Value’);
% Set current data to the selected data set.
data=guidata(source);
switch str{val};
case ’Peaks’ % User selects Peaks.
data.current_data = data.peaks_data;
case ’Membrane’ % User selects Membrane.
data.current_data = data.membrane_data;
case ’Sinc’ % User selects Sinc.
data.current_data = data.sinc_data;
end
guidata(source,data)% save the change of data.current_data
end
% Push button callbacks. Each callback plots current_data in
% the specified plot type.
function surfbutton_Callback(source,eventdata)
% Display surf plot of the currently selected data.
data=guidata(source);
surf(data.current_data);
end
function meshbutton_Callback(source,eventdata)
% Display mesh plot of the currently selected data.
data=guidata(source);
mesh(data.current_data);
end
function contourbutton_Callback(source,eventdata)
% Display contour plot of the currently selected data.
data=guidata(source);
contour(data.current_data);
end
end

关于matlab的GUI知识


先看在一个GUI界面内部的传递的数据
每一个控件的回调函数头:
function myc_Callback(hObject, eventdata, handles)

第一个参数是hObject,是跟这个callback所关联的控件的handles,在它自己的callback下,可以用代号-》 hObject 来调用它。。不用管那么麻烦的概念,只用知道,控件自己的回调函数调用自己的属性,只用hObject.属性名 就可以了(中间一点)。
第二个参数是MATLAB的保留参数
第三个handles,是这个GUI界面的代号。可以通过它获取这个界面的所有信息。所以在控件A自己的回调函数中,要获取或者设置别的控件的属性,就用 handles.别的控件Tag.属性
------------------------------
handles hObject 都是结构体。正常的编程概念。
handles格式是一个存放数据的缸。控件的handles是小缸,它的名字叫做hObject;GUI界面的handle是一个大缸,并且这个缸名字也叫做handles;大缸里存放了所有的小缸和所有用户数据,你只需 handles.控件A的tag 就可以存取控件A的信息。
GUIDE创建了一个大缸:结构体handles,handles包括了figure中所有控件的句柄,也包括figure的句柄
比如一个GUI包括一个edit text, 一个panel,一个pop-up menu和一个push button,GUIDE用每个控件的tag来命名handle,handles结构体内容如下:
figure1: 160.0011
edit1: 9.0020
uipanel1: 8.0017
popupmenu1: 7.0018
pushbutton1: 161.0011
output: 160.0011
那我怎么把自己计算出或者别的什么数据放到这个缸里呢?
^_^ 在任何地方
handles.自己的变量名 = 某些值 (其实也就是给结构体添加成员变量)
这样你就定义了自己的变量。
在任何地方
b=handles.自己的变量名 (结构名加点号来引用成员变量)
就可以得到这个变量值,同样也可以修改它。
别忘了使用
guidata(hObject, handles);(不用改,直接黏贴) 在函数末尾来保存你对handles和hObject的操作。(不然你自定义的变量就没了)
%guidata( 视窗句柄 , 全部句柄 ),如果视窗句柄位置不是视窗句柄,而是一个控件的句柄,那么这个控件的父视窗(parent figure)会被调用。所以guidata中的视窗句柄 可以是figure的句柄,也可以是figure内所包含的控件的句柄,不管是哪种情况,最终handles会和figure相关联。全部句柄即GUI句柄handles
2. 怎么在控件callback函数体之外获取控件和用户自己的数据
GUI界面的handles保存着所有控件的信息以及用户自己的数据,所以只要获取GUI的handles就可以获取所有。
比如在自己定义的函数里获取handles,只需将handles作为参数传进去就可以
function my_function(handles)
% handles是GUI的handles
%调用GUI内任意一控件的信息
%get(handles.你控件的tag,’要获取的属性名’);
temp=get(handles.my_popup,’Value’);
计时timer中:
% 在figure创建完成后创建 timer 对象,将handles传入Callback函数
t = timer(’TimerFcn’, {@timerCallback, handles}, ’ExecutionMode’, ’fixedDelay’, ’Period’, 1.0);
% 设置窗口关闭的回调函数
set(handles.figure1, ’DeleteFcn’, {@DeleteFcn, t});
% 启动定时器
start(t);
%传入handles
function timerCallback(obj, event, handles)
temp=get(handles.my_popup,’Value’);
end
% 窗口关闭的响应函数-停止计时器
function DeleteFcn(hObject, eventdata, t)
stop(t);
end
3 在其他子函数或者非figure内控件的callback内保存用户数据到guidata
GUIDE中, GUIDE生成了一个包括所有GUI句柄的结构体:handles,我们可以保存用户数据到其中(GUIDE generates a handles structure that contains the GUI’s handles. You can add your own data to it)
guidata( 视窗句柄 , 全部句柄 )
如果视窗句柄位置不是视窗句柄,而是一个控件的句柄,那么这个控件的父视窗(parent figure)会被调用。所以guidata中的视窗句柄 可以是figure的句柄,也可以是figure内所包含的控件的句柄,不管是哪种情况,最终handles会和figure相关联。全部句柄即GUI句柄handles
guidata(hObject, handles);
在figure控件callback之内调用guidata(hObject, handles);,hObject是控件的句柄。如果在其他子函数或者非figure控件的callback知中使用guidata保存数据,hObject就不再是控件句柄,会出错。所以我们要用figure的句柄代替hObject,即handles.figure1
guidata( handles.figure1 , handles);
例如在上述计时器的callback函数中保存data: guidata( handles.figure1 , handles);
4、在不同GUI之间传递数据
传入
那就来看打开一个GUI界面时,传给他的参数有哪些。

function mygui_OpeningFcn(hObject, eventdata, handles, varargin)
所有的启动参数都是通过varargin传到它的OpeningFcn里面的。那启动参数可以是哪些呢?

1、figure,也就是窗口参数。
比如说position之类
例如:打开这个GUI时,使用这个命令 mygui(’Position’,[434 234 234 34])则表示打开窗口在这个位置;还有哪些可控属性可以查help。
2、自定义参数 。
如果传入的参数不是figure的属性(matlab查找不到你输入的属性名),则你输入的参数作为一个向量存放在varargin里面。
比如mygui(’路人甲’,’80‘),那varargin{1}存放了’路人甲’,varargin{2}=’80‘

那mygui中对这读取两个数据进行反应,就达到了传入参数的目的。
传出
那怎么把数据传出来呢?
将你要输出的数据存在handles.output里面
在GUI任意地方
handles.output=数据1;
handles.secend_output=数据2;
然后在GUI的outputFcn里面加上
varaginout{1}=handles.output;
varaginout{2}=handles.secend_output;
这样就把数据传出来了。
看每一个GUI的最外层的那句
function varargout = mygui(varargin) 看输入输出,就是这样了。把GUI本身就是一个函数,
b=mygui(一些传入的参数) 就执行GUI并返回结果
则b就得到了传出来的结果。

matlab的GUI编程


初学的话,用向导比较上手快。
在命令行输入guide,打开matlab的界面向导。
拖入你需要的控件。
在对应的控件callback下写入你的代码。
%----------
1.我不知道如何用call
back来让run这个按键调用那个源程序
如果你的源程序是m文件,直接在callback下写上这个m文件名。(m文件放在同一目录下)
如果是exe文件,同样写下文件名,并在exe文件名前加个叹号(注意是英文格式)
2.如何把经过源程序处理过的图像分别显示到以上3个axes中
假设pic1,pic2是你组后处理完成的图像
axes(handles.axes1)
imshow(pic1)
%
axes(handles.axes2)
imshow(pic2)
3.如何把经过源程序计算过的那个数字结果显示到那个txt
number是你组后的结果数值。
set(handles.text1,’string’,num2str(number));
text1是你的那个txt的tag名称。
-matlabgui

matlab gui 怎样通过菜单项切换界面


1、打开matlab,然后在命令窗口中输入guide打开GUI界面编程窗口,如下图所示。

2、此时将弹出如下图所示的对话框,选择Blank GUI(Default),然后点击【确定】按钮,创建一个空白GUI。

3、此时将进入GUI界面编辑器,如下图所示,点击菜单栏中【工具】,然后点击工具下拉菜单中的【菜单编辑器(M)】,如下图所示。

4、此时将进入【菜单编辑器】界面,如下图所示,点击左上角的【新建菜单】按钮新建菜单项。

5、点击左上角的【新建菜单】按钮创建5个菜单项,分别从Untitled 1到Untitled 5,如下图所示。

6、依次点击上面的菜单项,将右侧的菜单属性中标签和标记改成想要的名称,如下图所示,注意标记即为tag值,重命名后点击下方回调右侧的【查看】按钮查看此菜单项的回调函数,如下图所示。

7、此时将弹出【另存为】对话框,输入英文文件名后,点击【保存】按钮,此时将保存一个m文件和一个fig文件。

8、保存后将进入此界面的刚才菜单项的m文件回调函数处,如下图所示,function menu_5_Callback(hObject, eventdata, handles)下面什么也没有。

9、在function menu_5_Callback(hObject, eventdata, handles)回调函数下面添加代码:

h=gcf; menu_5; close(h);

其他菜单项的回调函数类似添加,按照上面的步骤有多少个菜单项就创建多少个m文件和fig文件,注意fig名字需与菜单项的标记tag值对应。创建完成后点击【运行】按钮,运行GUI界面。

10、如果文件夹不在matlab的工作路径时可能弹出如下图所示的对话框,点击【添加到路径】按钮即可。

11、再次运行GUI界面,如下图所示,此时就可以点击菜单项切换到相应的GUI界面,且不出现切换时的整个菜单项变化。

参考资料:

百度百科-GUI


matlab gui是什么


’多用于通信系统模拟’这个会误导人的吧。
另外matlab,并不能说是编程软件,个人认为一部分是‘数据处理软件’,数据处理的范畴很广,科学计算、图像处理、音频、视频、通行仿真、任何工程问题,实质上都是数据处理。毕竟,任何计算机的操作都是基于数据处理的。另外一大部分,就是建模,模型仿真。
gui,也有自己的意思,Graphical
User
Interface
,人机交互图形化用户界面设计。百度很多东西。
合在一起,matlab
gui,恐怕就是特指matlab里面的gui界面编程呗。
-matlabgui

matlab gui 是干什么的


matlab gui 用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中。

为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。-matlabgui

扩展资料

优势特点:

1、高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;

2、具有完备的图形处理功能,实现计算结果和编程的可视化;

3、友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

4、功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。


什么是matlab gui


function simple_gui2
% SIMPLE_GUI2 Select a data set from the pop-up menu, then
% click one of the plot-type push buttons. Clicking the button
% plots the selected data in the axes.
% Create and then hide the GUI as it is being constructed.
clc
f = figure(’Visible’,’off’,’Position’,[360,500,450,285]);
% Construct the components.
hsurf = uicontrol(’Style’,’pushbutton’,’String’,’Surf’,...
’Position’,[315,220,70,25],...
’Callback’,{@surfbutton_Callback});
hmesh = uicontrol(’Style’,’pushbutton’,’String’,’Mesh’,...
’Position’,[315,180,70,25],...
’Callback’,{@meshbutton_Callback});
hcontour = uicontrol(’Style’,’pushbutton’,...
’String’,’Countour’,...
’Position’,[315,135,70,25],...
’Callback’,{@contourbutton_Callback});
htext = uicontrol(’Style’,’text’,’String’,’Select Data’,...
’Position’,[325,90,60,15]);
hpopup = uicontrol(’Style’,’popupmenu’,...
’String’,{’Peaks’,’Membrane’,’Sinc’},...
’Position’,[300,50,100,25],...
’Callback’,{@popup_menu_Callback});
ha = axes(’Units’,’Pixels’,’Position’,[50,60,200,185]);
align([hsurf,hmesh,hcontour,htext,hpopup],’Center’,’None’);
% Create the data to plot.
data.peaks_data = peaks(35);
data.membrane_data = membrane;
[x,y] = meshgrid(-8:.5:8);
r = sqrt(x.^2+y.^2) + eps;
data.sinc_data = sin(r)./r;
% Initialize the GUI.
% Change units to normalized so components resize
% automatically.
set([f,ha,hsurf,hmesh,hcontour,htext,hpopup],...
’Units’,’normalized’);
%Create a plot in the axes.
data.current_data = data.peaks_data;
surf(data.current_data);
guidata(f,data);
% Assign the GUI a name to appear in the window title.
set(f,’Name’,’Simple GUI’)
% Move the GUI to the center of the screen.
movegui(f,’center’)
% Make the GUI visible.
set(f,’Visible’,’on’);
% Callbacks for simple_gui2. These callbacks automatically
% have access to component handles and initialized data
% because they are nested at a lower level.
% Pop-up menu callback. Read the pop-up menu Value property
% to determine which item is currently displayed and make it
% the current data.
function popup_menu_Callback(source,eventdata)
% Determine the selected data set.
str = get(source, ’String’);
val = get(source,’Value’);
% Set current data to the selected data set.
data=guidata(source);
switch str{val};
case ’Peaks’ % User selects Peaks.
data.current_data = data.peaks_data;
case ’Membrane’ % User selects Membrane.
data.current_data = data.membrane_data;
case ’Sinc’ % User selects Sinc.
data.current_data = data.sinc_data;
end
guidata(source,data)% save the change of data.current_data
end
% Push button callbacks. Each callback plots current_data in
% the specified plot type.
function surfbutton_Callback(source,eventdata)
% Display surf plot of the currently selected data.
data=guidata(source);
surf(data.current_data);
end
function meshbutton_Callback(source,eventdata)
% Display mesh plot of the currently selected data.
data=guidata(source);
mesh(data.current_data);
end
function contourbutton_Callback(source,eventdata)
% Display contour plot of the currently selected data.
data=guidata(source);
contour(data.current_data);
end
end
-matlabgui

matlab中GUI的使用,调用m文件


方法和详细的操作步骤如下:

1、第一步,在计算机上安装matlab软件,见下图,转到下面的步骤。

2、第二步,完成上述步骤后,双击matlab图标以打开其主页,见下图,转到下面的步骤。

3、第三步,完成上述步骤后,将鼠标移到“New”选项上,然后单击一次,选择并单击弹出菜单中的“Function”选项,见下图,转到下面的步骤。

4、第四步,完成上述步骤后,这是m文件编辑页面,见下图,转到下面的步骤。

5、第五步,完成上述步骤后,编写输入变量和输出变量的函数计算关系,见下图,转到下面的步骤。

6、第六步,完成上述步骤后,单击左上角的“Save”选项进行保存,见下图,转到下面的步骤。

7、第七步,完成上述步骤后,如果要调用m文件,只需依次将要调用的文件保存到“Command Window”窗口的主界面文件夹中,然后在“Command Window”中换行,输入文件名,输入所有输入变量的详细信息。-matlabgui

同时,填写值并按键盘上的Enter键以指示调用和运行m文件,见下图。这样,就解决了这个问题了。


如何在Matlab中打开GUI工具


两种方法
1、输入guide回车。
2、在工具栏里点击带笔形的gui。
为Matlab的GUI添加启动画面:
添加启动画面,启动画面中可以添加想要添加的图像……Visual C++可以实现这个功能,Matlab也可以实现,具体如下:
首先,新建立一个GUI,这个新建的GUI用于显示启动时想要添加的图像。GUI中添加一个axes控件,然后在GUi的m文件中的OpeningFcn函数中就可以添加图像,程序如下:
a=imread(’你图像’); % 加载图
axes(handles.axes1); % 添加的axes的tag为axes1
imshow(a); % 显示
同时在GUI的属性中将Gui名称改为“程序正在启动,请稍候…………”提示的话语。
然后,另外新建一个GUI,同时,在GUI中的m文件中的OpeningFcn函数中添加如下程序:
mainHandle=gui2(); % 第一个GUI的名称为gui2
pause(3); % 显示3秒
close(mainHandle); %显示3秒后,关闭
这样,3秒后你的程序主界面就出来了。
-matlabgui