【问题标题】:converting a .mat file with table to a .mat file with cell array将带有表格的 .mat 文件转换为带有元胞数组的 .mat 文件
【发布时间】:2018-11-15 17:41:17
【问题描述】:

我需要将包含类型表的变量“t”的 .mat 文件转换为单元格。这是因为有另一个代码读取元胞数组并对其执行 str2num 和 char 函数。当代码在需要转换的表上使用 str2num 和 char 函数时,会引发错误“使用 char 时出错:无法从表转换为 char”。无论如何我可以将 .mat 文件(带有表格)的格式转换为不同 .mat 文件(包含单元格数组)的格式,以便为带有单元格数组的 .mat 文件编写的代码适用于 .mat带表格的文件?

【问题讨论】:

  • 您是否尝试过读取文件、将表格转换为单元格并写入新文件?
  • 欢迎来到stackoverflow。这不是一个编码服务网站。在Minimal, Complete, and Verifiable example 中向我们展示您迄今为止所做的事情,您将获得帮助

标签: matlab


【解决方案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”功能。 有很多方法可以解决它。 但我不知道你的数据是什么以及你想如何使用这些数据。

【讨论】:

  • 这可行,但表格的标签(列名)没有从表格复制到单元格中。
  • 另外,display(str2num(tAsCell{1})) 为 0
  • 我的表格在表格元素上有 NaN 和 ' '。
  • 我需要将matlab中的表格转换为cellstr。该表具有 NaN 值。我试图删除 NaN,但我无法。当我做table2cell时,它会转换为一个单元格而不是cellstr。 iscellstr(t) 返回 0。转换后的单元格在列名周围也有 ' '。我需要在接受单元类型的不同程序上使用这些数据。当我使用具有表的 .mat 文件时,它会引发错误,指出无法从表转换为 char。该程序也不允许我在桌子上执行 str2num。以前的 Cellstr 类型在程序中运行良好。
猜你喜欢
  • 2017-12-27
  • 1970-01-01
  • 2018-02-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 2023-03-08
  • 1970-01-01
  • 2019-09-03
相关资源
最近更新 更多