0

我有以 CSV 格式存储的数据。数据包含格式化为文本但没有任何撇号的数值。

样本

我尝试使用 xlsread 导出数据,但 Matlab 会自动删除前导零。是否可以强制 Matlab 将其读取为字符串以保持前导零?

4

2 回答 2

0

xlsread 有三个输出,第三个是原始数据。使用第三个输出,您将在那里找到文本。然后,您可以使用 str2num 将文本转换为数字数据。

于 2019-12-09T06:18:32.873 回答
0

如果是 CSV 文件,请不要使用xlsread. 这适用于 Excel ( .xls/ .xlsx) 文件。如果基础数据实际上主要在 Excel 文件中,则不要将其保存为 CSV;直接读取Excel文件。

您将不得不使用较低级别的读取例程,例如textscanfscanf将其读入。问题是 CSV 文件实际上并没有以不同的方式表示字符串和数字:CSV 文件包含文本数据,因此像 Matlab 这样的程序可以工作like numbers 必须提供一些“魔法”来决定什么东西看起来像数字并将这些字符串转换为数字。他们认为你不关心前导零之类的东西,所以他们把它抽象掉了。但在这种情况下你确实在乎,所以你必须绕过他们的魔法。

不用担心; textscan并且fscanf易于使用。

做这样的事情:

fid = fopen('myfile.csv');
col_vals = textscan(fid, '%s');
orig_policy_num = col_vals{1};
fclose(fid);

术语说明:您说“数据包含数值”,但数值代表数字,前导零对数字无关紧要;这只是可以写入相同值的不同样式的问题。但是你关心前导零。这意味着这实际上是文本数据,而不是数字数据。你想这样阅读它。

于 2019-12-09T19:59:23.850 回答