首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于部分字符串匹配的基工作区变量查找(Matlab)

基于部分字符串匹配的基工作区变量查找(Matlab)
EN

Stack Overflow用户
提问于 2015-02-18 19:18:13
回答 1查看 6.4K关注 0票数 2

我想知道如何通过只输入名称的一部分在基本MATLAB工作区中找到一个变量。我有一长串变量&我不知道确切的变量名。是否有比较/匹配变量字符串列表中字符顺序的函数?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-18 19:21:48

可以使用who获取当前工作区中所有变量名称的列表。在这里,您可以使用regexpi进行大小写不敏感的 正则表达式查找,以查找与查询匹配的变量。类似于:

代码语言:javascript
运行
复制
namesWorkspace = who;
outStr = regexpi(namesWorkspace, 'nameOfVariable');
ind = ~cellfun('isempty',outStr);
vars = namesWorkspace(ind);

nameOfVariable是要搜索的变量的名称或部分名称。outStr将为您提供与工作区中变量总数相同大小的单元格数组。如果此输出单元格数组中的元素为空,则不匹配相应的工作区变量。如果它是非空,那么就有一个匹配的。我们只需遍历这个输出单元格数组,确定哪些位置是非空,并使用这些位置对工作区名称数组进行索引,以检索您想要的最终变量(存储在vars中)。cellfun允许您迭代单元格数组中的每个元素,并对其应用一个函数。在本例中,我们希望通过使用isempty检查每个单元格是否为空。因为我们希望相反的,我们需要反转的操作,所以使用~

例如,在最近回答了一个问题之后,这就是我的工作区:

代码语言:javascript
运行
复制
names = 

    'O'
    'ans'
    'cellData'
    'idx'
    'names'
    'out'
    'possible_names'
    'possible_surnames'
    'student_information'

让我们找到那些包含单词possible的变量名

代码语言:javascript
运行
复制
outStr = regexpi(namesWorkspace, 'possible');
ind = ~cellfun('isempty',outStr);
vars = namesWorkspace(ind)

vars = 

    'possible_names'
    'possible_surnames'

更简单

向山姆·罗伯茨要这个小费。您可以简单地应用-regexp标志并指定要查找的模式:

代码语言:javascript
运行
复制
vars = who('-regexp', 'possible')

vars = 

'possible_names'
'possible_surnames'
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28592021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档