列出功能中的工作区变量

Pat*_*pel 0 matlab

在GUI中,我希望允许用户从工作空间中导入值。因此,我想显示工作空间中定义的变量列表,并让用户选择一个。类似的事情做,例如,在cftoolx-和y- (和z- )数据。

但是,如果我who在函数中使用它,它不会列出工作空间中的变量(注意:以下代码mytestvar在您的工作空间中创建或覆盖变量):

function listwsvars()
    assignin('base','mytestvar',1);
    vars = whos('global');

    vars
end
Run Code Online (Sandbox Code Playgroud)

如果省略global参数或使用who代替,结果是相同的whos

知道如何在工作区中获取变量列表吗?反过来,我该如何访问它们呢?

Unb*_*ess 6

默认情况下,whos将在活动工作空间中返回变量(在这种情况下,为function listwsvars)。使用global选项,它将返回全局工作区中的那些。如果尚未定义全局变量,则确实会返回空。


一个可能的解决方案是使用以下whos命令在基本工作区中评估命令evalin

function listwsvars()
    assignin('base','mytestvar',1);
    vars = evalin('base','whos');

    vars
end
Run Code Online (Sandbox Code Playgroud)

vars 是一个结构数组,其中包含有关基本工作空间中所有可用变量的信息。