如何在 MATLAB 中创建 table 数组?
How to create table array in MATLAB?
我想将多个表存储在一个数组中。在下面的代码中,我创建了两个表 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
数据类型数组。
曾经有一段时间
builtin('subsref',T1,substruct('()',{1}))
(对于任何自定义 class T1
*)将跳过调用 class 特定的重载 subsref
并使用内置方法代替。这相当于 T1(1)
,但忽略为该语法定义的任何 class。同理subsasgn
,也就是下标赋值操作T1(2)=T2
。这允许创建和使用 class.
的数组
但是,这似乎不再有效。也许这与 classdef
风格 classes 有关,因为我最后一次使用上面的技巧是在引入这些技巧之前。
我建议你为此使用元胞数组(即使上面的方法仍然有效,我也不推荐它)。
* 注意table
是自定义的class,可以edit table
看源码
因为 table
已经实现了 ()
索引,所以我不太清楚你希望如何索引 MyArray
。你的例子在我看来几乎像 MyArray = [T1, T2]
.
我不确定它是否满足您的需求,但是您可以使用 table
个带有 table
个变量的对象,如下所示:
T = table(T1, T2);
然后您可以正常使用索引,例如
T.T1.LastName{2}
我想将多个表存储在一个数组中。在下面的代码中,我创建了两个表 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
数据类型数组。
曾经有一段时间
builtin('subsref',T1,substruct('()',{1}))
(对于任何自定义 class T1
*)将跳过调用 class 特定的重载 subsref
并使用内置方法代替。这相当于 T1(1)
,但忽略为该语法定义的任何 class。同理subsasgn
,也就是下标赋值操作T1(2)=T2
。这允许创建和使用 class.
但是,这似乎不再有效。也许这与 classdef
风格 classes 有关,因为我最后一次使用上面的技巧是在引入这些技巧之前。
我建议你为此使用元胞数组(即使上面的方法仍然有效,我也不推荐它)。
* 注意table
是自定义的class,可以edit table
看源码
因为 table
已经实现了 ()
索引,所以我不太清楚你希望如何索引 MyArray
。你的例子在我看来几乎像 MyArray = [T1, T2]
.
我不确定它是否满足您的需求,但是您可以使用 table
个带有 table
个变量的对象,如下所示:
T = table(T1, T2);
然后您可以正常使用索引,例如
T.T1.LastName{2}