Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 如何将参数传递到MatlabGUI文件_User Interface_Matlab_Ui Guidelines - Fatal编程技术网

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/msecondFigure.fig/m。在firstFigure的代码中,只需调用secondFigure并将参数作为参数传递:

someNumber = 1;
someText = 'test';
aMatrix = rand(3);

secondFigure(someNumber, someText, aMatrix);
参数将作为变量varargin在回调函数中提供给secondFigure

function varargout = secondFigure(varargin) 

varagin是一种细胞结构;使用cell2matchar将其转换回:

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));