我需要将包含类型表的变量't'的.mat文件转换为单元格。这是因为还有另一个代码读取单元格数组并对其执行str2num和char函数。当代码在需要转换的表上使用str2num或char函数时,会引发错误"使用char时出错:无法从表转换为char"。是否可以将.mat文件(带表(的格式转换为其他.mat文件的格式(包含单元格数组(,以便为带单元格数组的.mat文件编写的代码适用于带表的.mat?
我将尝试回答这个问题。首先,让我们创建一个以数字为单元字符串的表,并将该表保存为.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"功能。有很多方法可以解决这个问题。但我不知道你的数据是什么,也不知道你想如何使用这些数据。