找到&如果存在任一名称,则在工作空间中重命名变量

时间:2016-02-23 15:18:29

标签: matlab

如何从可能名称列表中搜索Workspace中的变量名称&然后重命名现有变量并使用其数据。

示例:

A_apple_tree = [2;2;1;4];
AppleTree = [2;2;1;4];
Apple_tree_a5 = [2;2;1;4];

是具有不同名称的相同变量。 我想浏览Workspace变量,直到找到一个变量,然后将其重命名为:

Apple_Tree = [2;2;1;4];

以下代码显示带有部分字符串搜索的变量,但找到的变量名称包含在单元格数组中。使用cell2mat会将包含变量名称的单元格转换为没有值的char。

namesWorkspace = who;
outStr = regexpi(namesWorkspace, 'apple');
ind = ~cellfun('isempty',outStr);
vars = namesWorkspace(ind);
Apple_Tree = cell2mat(vars);

Apple_Tree = 'apple_tree_a5' %%%..... instead of values for apple_tree_a5;

如何将现有变量与其数据一起调用以用于以后的目的?

谢谢,

1 个答案:

答案 0 :(得分:0)

我假设所有给定变量都包含相同数据,因此您可以使用第一次出现的数据。只需在基础工作区中通过evalin进行分配:

Group *lgroup = new Group;
lgroup->getObjects().push_back(new Group("g1"));
lgroup->getObjects().push_back(new Group("g2"));
lgroup->getObjects().push_back(new Group("g3"));
lgroup->getObjects().push_back(new Group("g4"));
lgroup->getObjects().push_back(new Group("g4"));

考虑到这种情况,没有匹配的变量名,我包含try/catch语句并抛出错误。更通用的解决方案是将Apple_Tree = evalin('base',vars{1}) assignin结合使用,这样您就可以定义单个字符串,例如evalin并创建一个名为'apple'的变量,其中包含任何apple-esk变量的数据。

apple