假设我在工作空间中存储了三个变量,如下面的
a = [1 2 4 8]
b = [4 9 3 8]
c = [8 6 4 2]
我想创建一个单元格数组并使用who命令将其存储在x中,如
x = who
现在新的单元格数组存储为x,其中包含{' a' ' B' ' C' }
但是如何调用存储在a中的变量值 像x {1}一样给我回报价值' a'我想得到
[1 2 4 8]
结果
由于
答案 0 :(得分:2)
评论你应该以不同的方式开始评论。使用带输出参数的load!
data=load(...)
这样,所有数据都存储在一个名为data的结构中,字段名称为b和c。现在继续您的代码:
%replacement for who, returning all field names
x=fieldnames(data)
%access first field using dynamic field names
data.(x{1})
答案 1 :(得分:0)
正如@JohnHascall,@ MatthiasW和@AndrasDeak对your previous question的评论中提到的那样,x = who
会以单元格数组的形式返回变量列表。可以有许多不同的方法来记录这些变量的值。我建议利用x
的元素是字符串的事实,因此我们可以通过在循环中使用eval
来访问变量的值:
x = who;
for ii = 1:numel(x)
y{ii} = eval(x{ii});
end
循环内的语句会创建另一个单元格数组,并记录相应变量的值。所以,你最终会得到这样的东西:
x =
'a'
'b'
'c'
'd'
'e'
y =
[5] 'Hello' [1x100 double] [14x14 double] [512x512x3 uint8]
因此,假设您现在希望访问b(3)
。你会这样做:
y{2}(3)
ans =
l
很奇怪,但无论如何都有效。