User interface 如何将参数传递到MatlabGUI文件
User interface 如何将参数传递到MatlabGUI文件,user-interface,matlab,ui-guidelines,User Interface,Matlab,Ui Guidelines,我对matlab是新手。在使用MatlabGUI时,我遇到了如下问题。我想要两个图形文件,一个图形文件调用另一个。我知道,只要从第一个fig文件中调用第二个fig文件的名称,我们就可以调用第二个fig文件。但是,我也希望将一些参数从一个fig文件发送到另一个fig文件。在这里,我需要发送参数并获取这些参数,以便进行进一步处理。我还没有找到解决此问题的方法。如果有人能帮我解决这个问题,我会很高兴。提前谢谢你我找到了三种方法: 方法1:使用以下类似方法: 您可以在图1的m文件中使用setappdat
我对matlab是新手。在使用MatlabGUI时,我遇到了如下问题。
我想要两个图形文件,一个图形文件调用另一个。我知道,只要从第一个fig文件中调用第二个fig文件的名称,我们就可以调用第二个fig文件。但是,我也希望将一些参数从一个fig文件发送到另一个fig文件。在这里,我需要发送参数并获取这些参数,以便进行进一步处理。我还没有找到解决此问题的方法。如果有人能帮我解决这个问题,我会很高兴。
提前谢谢你我找到了三种方法: 方法1:使用以下类似方法: 您可以在图1的m文件中使用setappdata()来存储想要传递的任何数据,然后在另一个m文件中调用getappdata()来检索它。这两个函数的参数
0
指定了MATLAB根工作区,您的程序可以在任何地方访问该工作区(即,它是全局的)。因此,当您关闭数据时,数据仍然可用。您可能希望使用删除它们
方法2:使用:
假设您使用GUIDE创建了GUI,那么您可以访问名为handles
的结构,该结构到处传递,您可以对其进行编辑,因此您可以在GUI回调中执行此操作:
handles.some_var = some_value
guidata(hObject,handles)
然后您可以访问另一个m文件中的句柄。在其他回调中的其他位置(因为句柄会自动传递给您):
some_other_var = get(handles.some_var)
方法3:使用:
存储第一个图形中所需的变量:
set(name_of_fig, 'UserData', some_var)
然后从你的另一个获得它:
some_other_var = get(name_of_fig, 'UserData')
(免责声明:我对MATLAB的实际了解并不是很好,但它有助于找到好的资源,如and,甚至。我在这里写的可能是错误的,因此你应该明确地查阅文档以获得更多帮助。)这可能会有帮助:
最简单的方法是将参数包装在单元格数组中,并将其直接发送给GUI构造函数。具有两个参数的调用可能如下所示:
figure2({param1, param2})
然后,您可以使用如下代码解压opening函数(图2\u OpeningFcn)中的参数:
handles.par1 = varargin{1}{1};
handles.par2 = varargin{1}{2};
这些行必须放在表示guidata(hObject,handles)的行之前的某个位置代码>。然后您可以在所有其他回调中直接访问handles.par1
和handles.par2
我假设您正在使用GUIDE生成GUI。您可以在图2.m中找到图2\u OpeningFcn,它将位于与图2.图相同的目录中
注意:您也可以从图形返回值,returnvalue=my\u图形({my\u input})
。如果您也希望得到这方面的说明,请留下评论,我将扩展我的答案。我希望这样做(假设您使用的是GUI builder指南)
假设您的Figure/m文件名为firstFigure.fig/m和secondFigure.fig/m。在firstFigure的代码中,只需调用secondFigure并将参数作为参数传递:
someNumber = 1;
someText = 'test';
aMatrix = rand(3);
secondFigure(someNumber, someText, aMatrix);
参数将作为变量varargin在回调函数中提供给secondFigure
function varargout = secondFigure(varargin)
及
varagin是一种细胞结构;使用cell2mat和char将其转换回:
theNumber = cell2mat(varargin(1));
theText = char(varargin(2));
theTextAgain = cell2mat(varargin(2));
theMatrix = cell2mat(varargin(3));
function secondFigure_OpeningFcn(hObject, eventdata, handles, varargin)
theNumber = cell2mat(varargin(1));
theText = char(varargin(2));
theTextAgain = cell2mat(varargin(2));
theMatrix = cell2mat(varargin(3));