我想在一个数组中存储多个表。在下面的代码中,我将创建两个表T1
和T2
。我想将这些表存储到一个变量MyArray
中。
LastName = {'Sanchez';'Johnson';'Li';'Diaz';'Brown'};
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T1 = table(LastName,Age,Smoker);
T2 = table(Height,Weight,BloodPressure);
% The code below does not work
MyArray(1) = T1;
MyArray(2) = T2;
我知道我可以使用单元格数组,但是我想知道是否可以在MATLAB中创建table
数据类型数组。
答案 0 :(得分:1)
曾经有一段时间
builtin('subsref',T1,substruct('()',{1}))
(对于任何自定义类T1
* )将跳过对特定于类的重载subsref
的调用,而改用内置方法。这将等效于T1(1)
,但忽略为该语法定义的任何类。对于subsasgn
类似,这是下标的分配操作T1(2)=T2
。这样就可以创建和使用类的数组。
但是,这似乎不再起作用。也许它与classdef
风格的类有关,因为我上次使用上面的技巧是在引入这些技巧之前。
我建议您为此使用单元格数组(即使以上方法仍然有效,我也不推荐这样做)。
*请注意,table
是一个自定义类,您可以edit table
查看源代码。
答案 1 :(得分:1)
由于table
已经实现了()
索引编制,对我来说还不是很清楚您希望如何索引MyArray
。在我看来,您的示例几乎像MyArray = [T1, T2]
。
我不确定它是否满足您的需求,但是您可以将table
个对象与table
变量一起使用,像这样:
T = table(T1, T2);
然后您可以正常使用索引,例如
T.T1.LastName{2}