我有以 CSV 格式存储的数据。数据包含格式化为文本但没有任何撇号的数值。
我尝试使用 xlsread 导出数据,但 Matlab 会自动删除前导零。是否可以强制 Matlab 将其读取为字符串以保持前导零?
xlsread 有三个输出,第三个是原始数据。使用第三个输出,您将在那里找到文本。然后,您可以使用 str2num 将文本转换为数字数据。
如果是 CSV 文件,请不要使用xlsread
. 这适用于 Excel ( .xls
/ .xlsx
) 文件。如果基础数据实际上主要在 Excel 文件中,则不要将其保存为 CSV;直接读取Excel文件。
您将不得不使用较低级别的读取例程,例如textscan
或fscanf
将其读入。问题是 CSV 文件实际上并没有以不同的方式表示字符串和数字:CSV 文件仅包含文本数据,因此像 Matlab 这样的程序可以工作like numbers 必须提供一些“魔法”来决定什么东西看起来像数字并将这些字符串转换为数字。他们认为你不关心前导零之类的东西,所以他们把它抽象掉了。但在这种情况下你确实在乎,所以你必须绕过他们的魔法。
不用担心; textscan
并且fscanf
易于使用。
做这样的事情:
fid = fopen('myfile.csv');
col_vals = textscan(fid, '%s');
orig_policy_num = col_vals{1};
fclose(fid);
术语说明:您说“数据包含数值”,但数值代表数字,前导零对数字无关紧要;这只是可以写入相同值的不同样式的问题。但是你关心前导零。这意味着这实际上是文本数据,而不是数字数据。你想这样阅读它。