我想知道如何通过仅输入变量名称的一部分来在基本 MATLAB 工作区中查找变量。我有一长串变量并且我不知道确切的变量名称。是否有一个函数可以比较/匹配变量字符串列表中的字符顺序?
谢谢
最佳答案
您可以使用who
获取当前工作区中所有变量名称的列表。从那里,您可以使用 regexpi
执行不区分大小写 regular expression查找以查找与您的查询匹配的变量。像这样的东西:
namesWorkspace = who;
outStr = regexpi(namesWorkspace, 'nameOfVariable');
ind = ~cellfun('isempty',outStr);
vars = namesWorkspace(ind);
nameOfVariable
是您正在搜索的变量的名称或部分名称。 outStr
将为您提供一个元素元胞数组,其大小与工作区中的变量总数相同。如果此输出元胞数组中的元素为空,则相应的工作区变量不匹配。如果它非空,则存在匹配。我们只需遍历此输出元胞数组并确定哪些位置非空,然后使用这些位置索引到工作区名称数组中以检索所需的最终变量(存储在 vars
)。 cellfun
允许您迭代元胞数组中的每个元素并向其应用函数。在本例中,我们要使用 isempty
检查每个单元格以查看其是否为空。 。因为我们想要相反,所以我们需要反转运算,所以使用~
。
例如,这是我最近回答问题后的工作空间:
names =
'O'
'ans'
'cellData'
'idx'
'names'
'out'
'possible_names'
'possible_surnames'
'student_information'
让我们找到那些包含单词“possible”的变量名称:
outStr = regexpi(namesWorkspace, 'possible');
ind = ~cellfun('isempty',outStr);
vars = namesWorkspace(ind)
vars =
'possible_names'
'possible_surnames'
更简单
谨此向 Sam Roberts 致敬。您只需应用 -regexp
标志并指定您想要查找的模式:
vars = who('-regexp', 'possible')
vars =
'possible_names'
'possible_surnames'
关于string - 在基本工作区中查找具有部分字符串匹配的变量(Matlab),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592021/