String 如何将工作区变量名与字符串列表(单元格数组)进行比较?

String 如何将工作区变量名与字符串列表(单元格数组)进行比较?,string,list,matlab,function,variables,String,List,Matlab,Function,Variables,我在基本工作区中有很多变量。我有一个包含有效名称的字符串列表。假设基本工作区包含变量名var1、var2、var3、var4、var5、var6、var7、var8、var9、var10,字符串列表是一个单元格数组,等于: listParam = {'var4' 'var7' 'var10'}; 现在,我想检查listParam中的字符串在基本工作区中是否有相应的声明变量。以下是我迄今为止所做的工作: function [compareCellArrayList] = test(listPar

我在基本工作区中有很多变量。我有一个包含有效名称的字符串列表。假设基本工作区包含变量名var1、var2、var3、var4、var5、var6、var7、var8、var9、var10,字符串列表是一个单元格数组,等于:

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);

顺便说一下,您的函数似乎没有返回CompareCellarAylist

可以将第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);
顺便说一下,您的函数似乎没有返回CompareCellarAylist

doesexist=ismemberlistParam,{S.name}

doesexist=ismemberlistParam,{S.name}