2

我有单独的 .mat 文件,在一项研究中进行试验,其中包含相同的变量,但文件之间的值会发生变化。

我想在 MATLAB 应用程序设计器中使用下拉组件来选择文件、加载其变量并显示各种图。

任何想法我怎么能做到这一点?先感谢您。

我一直在加载单个文件作为这样的属性: var = load('Trial1.mat') 此代码有效。

因此,我尝试使用此布局使用下拉菜单加载文件,但它没有用..

 function SelectFileDropDownValueChanged(app, event)
            value = app.SelectFileDropDown.Value;
            if strcmp(value,'Trial 1')
                var = load('Trial1.mat');
            elseif strcmp(value,'Trial 2')
                var = load('Trial2.mat');
            elseif strcmp(value,'Trial 3')
                var = load('Trial3.mat');
            elseif strcmp(value,'Trial 4')
                var = load('Trial4.mat');
            elseif strcmp(value,'Trial5')
                var = load('Trial5.mat');
            end

任何想法我怎么能做到这一点?提前致谢!

4

1 回答 1

1

你可以这样做:

添加一个名为类的新var属性App

您可以在 Designer 的 EDITOR 选项卡中添加私有(或公共)属性:
在此处输入图像描述

将属性名称更改为var(与您的代码示例匹配)。

属性代码块:

properties (Access = private)
    var % Description: store loaded variables
end

现在var是班员。
App 设计器基于面向对象的 MATLAB 编程。只能使用类的代码进行
访问(因为它是私有成员)。 访问属性如下:(是对类对象的引用)。 请注意,这是类方法的第一个参数(如方法中)。 varApp
varapp.varapp
appSelectFileDropDownValueChanged

修改后的SelectFileDropDownValueChanged代码:

% Value changed function: SelectFileDropDown
function SelectFileDropDownValueChanged(app, event)
    value = app.SelectFileDropDown.Value;

    if strcmp(value,'Trial 1')
        app.var = load('Trial1.mat');
    elseif strcmp(value,'Trial 2')
        app.var = load('Trial2.mat');
    elseif strcmp(value,'Trial 3')
        app.var = load('Trial3.mat');
    elseif strcmp(value,'Trial 4')
        app.var = load('Trial4.mat');
    elseif strcmp(value,'Trial5')
        app.var = load('Trial5.mat');
    end           
end
于 2019-09-01T21:23:11.613 回答