String 如何将工作区变量名与字符串列表(单元格数组)进行比较?
我在基本工作区中有很多变量。我有一个包含有效名称的字符串列表。假设基本工作区包含变量名var1、var2、var3、var4、var5、var6、var7、var8、var9、var10,字符串列表是一个单元格数组,等于: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
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}