Создать удобный из набора данных - PullRequest
2 голосов
/ 28 апреля 2011

Я не могу создать таблицу из набора данных, используя uitable в matlab, и мне нужна помощь!Вот проблема:

Я создал простой набор данных:

names = {'John'; 'Henri'}
ages = [26; 18];
d1 = dataset({names, 'Name'}, {ages, 'Age'})

, затем я попытался создать подходящий с этими данными, и я написал эту строку

uitable('data',double(d1))

но я получил это сообщение об ошибке:

??? Error using ==> uitable
Data must be a numeric, logical, or cell array

Error in ==> uitable at 56
        thandle = builtin('uitable', varargin{:});

Поэтому я попытался снова с

uitable('data',cellstr(d1))

, но я получил эту ошибку:

??? Error using ==> dataset.cellstr at 32
Error when converting 'Age' to cell array of strings.

Caused by:
    Error using ==> cellstr at 34
    Input must be a string.

Я не могу понятькак я могу создать удобный набор данных из числовых и строковых записей.

Может быть, кто-то будет так любезен, чтобы помочь мне?

1 Ответ

2 голосов
/ 28 апреля 2011

Ошибки вызваны тем, что вы используете uitable неправильно. Вот минимальный пример, который иллюстрирует, как это сделать.

dataCell={'John',26;'Henri',18};%# store data as a cell
colNames={'Name','Age'};%# names for each column of data

uitable('Data',dataCell,'ColumnName',colNames);

Это должно дать вам аккуратный стол, который выглядит следующим образом

enter image description here

EDIT

Чтобы ответить на ваш комментарий ниже, если вы создаете свой набор данных из ячейки и массива, как в вашем примере, то вы можете напрямую объединить оба в ячейку как

dataCell=[names,num2cell(ages)];

и действуйте, как указано выше. Если у вас уже есть d1 в качестве набора данных, возможно, не созданного вами, тогда вы можете создать uitable из этого как

uitable('Data',[d1.Name,d1.Age])
...