我想知道如何通过只输入名称的一部分在基本MATLAB工作区中找到一个变量。我有一长串变量&我不知道确切的变量名。是否有比较/匹配变量字符串列表中字符顺序的函数?
谢谢,
发布于 2015-02-18 19:21:48
可以使用who
获取当前工作区中所有变量名称的列表。在这里,您可以使用regexpi
进行大小写不敏感的 正则表达式查找,以查找与查询匹配的变量。类似于:
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'
更简单
向山姆·罗伯茨要这个小费。您可以简单地应用-regexp
标志并指定要查找的模式:
vars = who('-regexp', 'possible')
vars =
'possible_names'
'possible_surnames'
https://stackoverflow.com/questions/28592021
复制相似问题