【问题标题】:Calling MATLAB variables with varying names调用具有不同名称的 MATLAB 变量
【发布时间】:2013-06-14 13:01:59
【问题描述】:

我在 MATLAB 中有一组变量,名称为 A1A2、...、A100。我还有一个函数可以生成 1 到 100 之间的随机整数。

如果随机整数是n,我怎样才能调用关联变量An而不需要创建100个if语句或switch-cases?

【问题讨论】:

  • 是的,对于我提出的简单示例,只需创建A = [A1; A2; ... A100]。但我的问题是如何调用具有不同名称的 MATLAB 变量。作为一个更复杂的例子,随机数可以是一个随机字符串'str',它应该反过来调用Astr
  • 完全改变你的方法,如果维度允许,将数据存储在矩阵(或数组)中,或者如果你想将数据与一些元信息配对,则将数据存储在单元格数组中,或者最后存储在结构中,例如带有字段名。
  • 感谢大家的cmets。这不是最佳方法的问题(毫无疑问,数组是最好的),而只是是否存在其他方法的问题。抱歉不清楚。

标签: matlab variable-assignment


【解决方案1】:

首先,使用这样的名称是不好的做法。 A(1), A(2) 好多了。

我不知道你的变量是如何存储的,但如果可以将它们存储为数组,你绝对应该这样做。

如果没有,你可以使用eval

eval(['A', num2str(idx)])

【讨论】:

  • 我很确定这应该可以工作:A_mat = arrayfun(@(x) eval(['A', num2str(x)]),1:100) 如果您想将其转换为一个数组。
  • +1 并且我强烈同意应该使用 A1A2 这样的名称。
  • 如果有人能告诉我为什么答案是-1,我将不胜感激。如果您认为答案不好,请告诉我并解释原因。如果您还可以提供更好的解决方案,那就太好了!这样我/我们可能会学到一些东西......谢谢!
  • 非常感谢 Robert,eval(['A', num2str(idx)]) 正是我想要的。
  • @Doubt,总是乐于提供帮助 =)
猜你喜欢
  • 2011-04-14
  • 2013-01-27
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
相关资源
最近更新 更多