5


我是matlab的新手。在通过 Matlab GUI 工作时,我遇到了如下问题。
.我想要2个图形文件,一个图形文件调用另一个。我知道只要从第一个 fig 文件中调用第二个 fig 文件的名称,我们就可以调用第二个图。但是,我也希望将一些参数从一个无花果文件发送到另一个。这里我需要发送参数并获取这些参数以便进行进一步处理。我还没有找到解决这个问题的方法。如果有人帮助我解决这个问题,我会很高兴。
提前谢谢你

4

4 回答 4

7

我发现有三种方法可以做到这一点:

方法1:使用setappdatagetappdata喜欢这样:

setappdata(0,'some_var',value)
some_other_var = getappdata(0,'some_var')

您将在 fig1 的 m 文件中使用 setappdata() 来存储您想要传递的任何数据,然后在另一个 m 文件中调用 getappdata() 来检索它。这两个函数的参数0指定了 MATLAB 根工作区,您的程序可以在任何地方访问它(即它是全局的)。因此,当您关闭数据时,数据仍然可用。您可能想使用rmappdata删除它们。

方法2:使用guidata

假设您使用 GUIDE 创建了 GUI,那么您可以访问一个名为的结构,该结构handles在任何地方都可以传递并且您可以对其进行编辑,因此您可以在 GUI 回调中执行此操作:

handles.some_var = some_value
guidata(hObject,handles)

然后您可以在其他 m 文件中的handles.some_var其他回调中访问其他地方(因为handles会自动为您传递给它):

some_other_var = get(handles.some_var)

方法3:使用UserData

从第一个图中存储您想要的变量:

set(name_of_fig, 'UserData', some_var)

然后从你的另一个那里得到它:

some_other_var = get(name_of_fig, 'UserData')  

(免责声明:我对 MATLAB 的实际了解并不是那么好,但能够找到像thisthis 这样的好资源会有所帮助,甚至是官方文档中的 this。我在这里写的可能是错误的,所以你应该一定要咨询文档以获得更多帮助。)

于 2011-03-18T01:41:26.487 回答
2

我会这样做(假设您使用的是 GUI 构建器GUIDE)。

假设您的图形/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) 

function secondFigure_OpeningFcn(hObject, eventdata, handles, varargin)

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

theNumber = cell2mat(varargin(1));
theText = char(varargin(2));
theTextAgain = cell2mat(varargin(2));
theMatrix = cell2mat(varargin(3));
于 2012-05-08T11:28:51.100 回答
0

这可能会有所帮助: http: //www.mathworks.ch/matlabcentral/newsreader/view_thread/171989

于 2012-01-27T03:02:28.310 回答
0

最简单的方法是将参数包装在一个元胞数组中并将它们直接发送到 GUI 构造函数。带有两个参数的调用可能如下所示:

figure2({param1, param2})

然后您可以使用如下代码解压缩打开函数 (figure2_OpeningFcn) 中的参数:

handles.par1 = varargin{1}{1};
handles.par2 = varargin{1}{2};

这些行必须放在写有 . 的行之前的某个位置guidata(hObject, handles);handles.par1然后您可以handles.par2直接访问所有其他回调。

我假设您正在使用 GUIDE 生成您的 GUI。您可以在 figure2.m 中找到 figure2_OpeningFcn,该文件与 figure2.fig 位于同一目录中。

注意:您也可以从图形中返回值,returnvalue = my_figure({my_input}). 如果您也想对此进行说明,请发表评论,我会扩展我的答案。

于 2012-05-07T22:44:11.650 回答