string - 如何将工作区变量名称与字符串列表(元胞数组)进行比较?

标签 string list matlab function variables

我的基础工作区中有很多变量。我有一个包含有效名称的字符串列表。假设基础工作区包含变量名称 var1var2var3var4var5 var6var7var8var9var10 和字符串列表是一个元胞数组,等于:

listParam = {'var4' 'var7' 'var10'};

现在,我想检查 listParam 中的字符串在基础工作区中是否有相应的声明变量。这是我到目前为止所做的:

function [compareCellArrayList] = test(listParam)
S = evalin('base','whos'); % Looks for the variables in the base workspace
listWorkspaceVariable = cell(size(S)); % Pre-allocate
for ii = 1:length(S)
    listWorkspaceVariable{ii,1} = S(ii,1).name; % Gets the variable name of each variable
end
compareCellArrayList = cellfun(@(x) ismember(x, listParam), listWorkspaceVariable, 'UniformOutput', false);

上面的代码工作正常,但只是我觉得它可以简化,同时仍然易于理解。有什么想法吗?

最佳答案

您可以将第 3 行到第 6 行替换为

listWorkspaceVariable = {S.name};

您也可以使用ismember有两个元胞数组,因此最后一行可以重写

compareCellArrayList = ismember(listWorkspaceVariable, listParam);

所以会像

function [listWorkspaceVariable] = test(listParam)
S = evalin('base','whos'); % Looks for the variables in the base workspace
listWorkspaceVariable = {S.name};
compareCellArrayList = ismember(listWorkspaceVariable, listParam);

顺便说一下,你的函数似乎没有返回 compareCellArrayList

关于string - 如何将工作区变量名称与字符串列表(元胞数组)进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18515354/

相关文章:

c++:将其所有参数连接为字符串的函数

matlab - 回响干净的声音

c - 程序不断返回段错误

c++ - 测试 C 字符串是否以后缀结尾的 C++ 函数

python - 在结构化数组中查找 header 名称的一部分的 header 索引

python 2.7 : Dedup list by adding suffix

java - 将 List<String> 转换为 String 返回类型

python - 计算 python 中的二维列表

c++ - 二维数组在 matlab 到 C++ 的转换中设置不正确

matlab - 改进从 m 文件运行 Simulink 模型