我需要将包含类型表的变量't'的.mat文件转换为单元格。这是因为还有另一个代码可以读取单元格数组并对其执行str2num和char函数。当代码在需要转换的表上使用str2num和char函数时,将引发错误“使用char的错误:无法从表转换为char”。无论如何,我可以将.mat文件(带有表)的格式转换为其他.mat文件(包含单元格数组)的格式,以便为带有单元格数组的.mat文件编写的代码适用于.mat文件与表?
答案 0 :(得分:1)
我将尝试回答这个问题。 首先,让我们创建一个以数字作为单元格字符串的表,并将该表另存为.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}))
编辑: 请分享一个例子,并解释您真正想要的。您从未提到列标签或NaN值。
tAsCellWithLabel = [t.Properties.VariableNames; table2cell(t)];
如果单元格值为NaN,则可以删除NaN值或检查NaN值,并且永远不要调用函数“ str2num”。 检查“ isnan”功能。 有很多解决方法。 但是我不知道您的数据是什么以及如何使用这些数据。