Создать пользовательский интерфейс из набора данных

#matlab #dataset #matlab-uitable

#matlab #набор данных #matlab-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.
  

Я не могу понять, как я могу создать пользовательский интерфейс из dataset, содержащий как числовые, так и строковые записи.

Кто-нибудь будет так добр, чтобы помочь мне?

Ответ №1:

Ошибки связаны с тем, что вы 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);
  

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

введите описание изображения здесь

Редактировать

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

 dataCell=[names,num2cell(ages)];
  

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

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

Комментарии:

1. Спасибо за ответы. Ваш совет идеален, но у меня есть массив dataset из 1255 строк, и я не могу преобразовать его в массив ячеек. Возможно ли сделать то же самое, но сохранить set в виде dataset? спасибо