MATLAB指定变量名称

时间:2013-07-18 14:57:12

标签: matlab

我有一个名为'int'的变量,里面有很多数据。我想找到一种方法来使用用户输入以编程方式重命名此变量。所以我可以查询有关数据的用户识别信息,比如响应是'AA1',我要么将变量'int'重命名为'AA1',要么'AA1'是一个与int相同的变量。

出现使用输入命令的问题,因为它允许用户为已创建的变量分配值,而不是实际创建变量名。使用eval函数或其变体可以帮助我实现这一目标吗?或者有更简单的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

仅供记录,int是一个相当差的变量名称选择。

除此之外,你可以按照以下方式做你想做的事情

foo是包含用户输入的字符串的变量。您可以执行以下操作:

% eliminate leading/trailing whitespace
foo = strtrim(foo);
a = regexp('[a-zA-Z][a-zA-Z0-9_]*',foo));
if numel(a) == 0 
    fprintf('Sorry, %s is not a valid variable name in matlab\n', foo);
elseif a ~= 1
    fprintf('Sorry, %s is not a valid variable name in matlab\n', foo);
elseif 2 == exist(foo,'var')
    fprintf('Sorry, %s already in use as a variable name.');
else
    eval([foo,' = int']);
end

假设int(现在foo)是一个名为bar的字段的结构,您可以按如下方式阅读条形码:

barVal = eval([foo,'.bar']);

这有点笨拙。

另一种方法是使用关联数组,让用户在数组中存储各种int值。关联数组的Matlab方法是Maps。这是我解决这个问题的首选方法。以下是使用与上述相同的变量的示例。

nameValueMap = containers.Map;
nameValueMap(foo) = int;

以上创建了foo中存储的名称与变量int中的数据之间的关联。

要获取数据,您只需执行以下操作:

intValue = nameValueMap(foo);