Как создать массив таблиц в MATLAB? - PullRequest
0 голосов
/ 04 июля 2018

Я хотел бы хранить несколько таблиц в одном массиве. В моем коде ниже я создаю две таблицы 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;

Я знаю, что могу использовать массив ячеек, но я хотел бы знать, возможно ли создать массив типов данных table в MATLAB.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Поскольку table уже осуществляет индексирование (), мне не совсем понятно, как вы ожидаете индексировать MyArray. Ваш пример выглядит для меня почти как MyArray = [T1, T2].

Я не уверен, удовлетворяет ли он вашим потребностям, но вы можете иметь table объекты с table переменными, например:

T = table(T1, T2);

Затем вы можете использовать индексирование как обычно, например,

T.T1.LastName{2}
0 голосов
/ 04 июля 2018

Было время, когда

builtin('subsref',T1,substruct('()',{1}))

(для любого пользовательского класса T1*) пропустит вызов перегруженного subsref для конкретного класса и вместо этого будет использовать встроенный метод. Это будет эквивалентно T1(1), но игнорируется любой класс, определенный для этого синтаксиса. Аналогично для subsasgn, который является подписанной операцией присваивания T1(2)=T2. Это позволило создавать и использовать массивы класса.

Однако, похоже, это больше не работает. Возможно, это связано с классами в стиле classdef, так как в последний раз я использовал вышеприведенный прием перед тем, как они были введены.

Я бы посоветовал вам использовать для этого массивы ячеек (даже если вышеупомянутое все еще работает, я бы не рекомендовал это).

* Обратите внимание, что table - это пользовательский класс, вы можете edit table увидеть исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...