我想在我的工作区中选择名称遵循特定模式的所有变量。例如,我想计算工作区中所有变量的均值,从名称my_vars
开始。
我尝试了以下代码:
a = who(' - regexp','my_vars *')
result = mean(eval(a))
但eval
函数对单元格不起作用。有什么工作吗?
答案 0 :(得分:2)
who
返回了char数组(即字符串)的单元格数组,每个元素包含一个变量名。您需要将其转换为包含逗号分隔的名称列表的字符串。这是一种方法:
my_vars1 = 1; my_vars2 = 2; my_vars3 = 3;
names = who('-regexp', 'my_vars*');
namelist = sprintf('%s,', names{:}); % sprintf reuses the format string if
% there are more inputs than format specifiers
namelist(end)=[]; % strip last comma
eval(sprintf('mean([%s])', namelist))
ans =
2