преобразование файла .mat с таблицей в файл .mat с массивом ячеек - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужно преобразовать файл .mat, содержащий переменную 't' таблицы типов, в ячейку. Это потому, что есть другой код, который читает массив ячеек и выполняет над ним функции str2num и char. Когда код использует функции str2num и char в таблице, которая нуждается в преобразовании, он выдает ошибку «Ошибка при использовании char: преобразование в char из таблицы невозможно». В любом случае можно ли преобразовать формат файла .mat (с таблицей) в формат другого файла .mat (содержащего массивы ячеек), чтобы код, написанный для файлов .mat с массивами ячеек, работал на .mat файл с таблицей?

1 Ответ

0 голосов
/ 14 ноября 2018

Я постараюсь ответить на этот вопрос. Сначала давайте создадим таблицу с числами в виде строк строк и сохраним эту таблицу в виде файла .mat.

TestNumbersAsString = {'42', '500', '288'}';
t = table(TestNumbersAsString);
save('myTable.mat', 't');

Давайте очистим наше рабочее пространство и загрузим файл. преобразовать таблицу в ячейку и сохранить эту ячейку как файл .mat. Загрузите этот файл снова.

clearvars t
load('myTable.mat');
tAsCell = table2cell(t);
save('myCell.mat', 'tAsCell');
clearvars tAsCell
load('myCell.mat');

Преобразование и печать первого элемента в ячейке.

display(str2num(tAsCell{1}))

Мы могли бы использовать и таблицу.

display(str2num(t{1,1}{1}))

EDIT: Пожалуйста, поделитесь примером и объясните, что вы действительно хотите. Вы никогда не упоминали метки столбцов или значения NaN.

tAsCellWithLabel = [t.Properties.VariableNames; table2cell(t)];

И вы можете удалить значения NaN или проверить значения NaN и никогда не вызывать функцию "str2num", если значением ячейки является NaN. Проверьте функцию «isnan». Есть так много способов ее решить. Но я не знаю, каковы ваши данные и как вы хотите использовать данные.

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