【问题标题】:How to display only specific variables in Matlab workspace如何在 Matlab 工作区中仅显示特定变量
【发布时间】:2018-02-23 18:21:09
【问题描述】:

假设我在 Matlab 工作区中有 100 个变量。例如我在这里取 5 个变量:

Matrix
Sum
Addition
Area
Perimeter
Subtraction

...等等。

如何根据Add 之类的关键字或在工作区中选择变量Addition 的搜索词来选择或过滤变量名称。我使用who 命令作为

who -regexp Add 

但这只显示变量的名称而不是它的值。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    eval 可能是最合适的方法的少数情况之一。 (喘气

    您可以使用who 的函数版本(参见:Syntax)将与regex 匹配的变量的名称存储在元胞数组中。如果您使用 eval 遍历这些名称,它的行为就像是从命令行调用它们一样,如果没有被抑制,它将显示它们的值。

    例如:

    Matrix = rand(3);
    Sum = rand(3);
    Addition = rand(3);
    Area = rand(3);
    Perimeter = rand(3);
    Subtraction = rand(3);
    Additional = rand(3);
    
    vars = who('-regexp', '[Aa]dd');
    for ii = 1:numel(vars)
        eval(vars{ii})
    end
    

    显示:

    Addition =
    
        0.8143    0.3500    0.6160
        0.2435    0.1966    0.4733
        0.9293    0.2511    0.3517
    
    
    Additional =
    
        0.6892    0.0838    0.1524
        0.7482    0.2290    0.8258
        0.4505    0.9133    0.5383
    

    【讨论】:

    • 感谢您的回复。我还有另一个问题。这将在命令窗口中显示变量的值。如何在工作区中也只获取这些变量,以便可以点击查看。
    • 它们已经在工作区中,可以单击和查看它们...您可以使用FilteredVars.(vars{ii})=eval(vars{ii}) 将它们存储在一个结构中,当在工作区中探索时,该结构仅包含您的变量。但是,请注意,您将在内存中复制所有这些变量,并且它们不会链接到工作区中的实际值。
    • 请参阅this answer 以清除与正则表达式匹配的变量之外的变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多